集群
集群:將多臺主機作為一個整體,然后對外提供相同的服務
集群使用場景:高并發的場景
集群的分類
? ? 1.負載均衡器集群
?? ??? ?減少響應延遲,提高并發處理的能力
?? ?2,高可用集群
?? ??? ?增強系統的穩定性可靠性,減少服務器的中斷時間,減少損失
?? ?3,高性能集群
?? ??? ?高性能的運算能力,做分布式提高CPU的運算速度,做并發處理
負載均衡集群架構
? ?第一層:負載調度器
?? ??? ?通過調度算法以及RIP發送
?? ?第二層:服務池
?? ??? ?所有服務器使用的資源
?? ?第二層:共享存儲
?? ??? ?提供網站,存儲資源
負載均衡器的群集工作模式
NAT模式(地址轉換)
?? ??? ?調度器作為網關,是訪問請求的入口,同樣是響應請求的出口,可以提高安全性但是在高并發場景下負載壓力很高
?TUN模式(IP隧道)
?? ??? ?訪問請求的入口,響應不經過調度器,但是需要大量的公網IP。還需要建立專用的IP隧道,成本太高,數據的轉發受IP隧道的額外影響?DR模式(直接路由)
?? ??? ?僅是訪問請求的入口,響應數據不經過調度器,但是節點服務器和調度器在一個物理網絡中,數據進行轉發不受額外的影響
LVS虛擬服務器
?? ?確認是否支持LVS------modprobe ?ip_vs ?
LVS負載均衡集群架構
LVS的基本概念
LVS(Linux Virtual Server)集群架構是一種基于Linux操作系統的負載均衡解決方案。它通過將負載均衡功能實現在操作系統內核層面,將客戶端請求分發到后端服務器集群,以提高系統的性能、可靠性和可擴展性。
LVS集群架構具有高性能、高可靠性和可擴展性的特點,可以通過增加后端服務器來擴展系統的處理能力。此外,LVS還支持會話保持、健康檢查、故障切換等功能,以提供更好的用戶體驗和系統可用性。
LVS集群架構的組件
-
負載均衡器(Load Balancer):負載均衡器是LVS集群的核心組件,它接收來自客戶端的請求,并根據預定義的負載均衡算法將請求轉發給后端服務器。負載均衡器可以是一臺物理服務器或者一組虛擬服務器。
-
調度器(Scheduler):調度器是負載均衡器的一部分,負責根據負載均衡算法選擇合適的后端服務器來處理客戶端請求。常見的調度算法包括輪詢、加權輪詢、最小連接數等。
-
后端服務器(Real Server):后端服務器是實際處理客戶端請求的服務器。它們可以是一組物理服務器或者虛擬服務器,通過負載均衡器接收請求并返回響應。
-
網絡設備:LVS集群架構通常還涉及網絡設備,如交換機、路由器等,用于連接負載均衡器和后端服務器,以及處理網絡流量。
LVS集群架構的工作流程
-
客戶端發送請求到負載均衡器。
-
負載均衡器接收到請求后,通過調度器選擇一個后端服務器。
-
負載均衡器將請求轉發給選定的后端服務器。
-
后端服務器處理請求并生成響應。
-
后端服務器將響應發送回負載均衡器。
-
負載均衡器將響應返回給客戶端。
LVS的作用
-
主要用于多服務器的負載均衡
-
工作在網絡層,可實現高性能,高可用的服務集群技術
-
廉價, 可以把許多低性能服務器組合在一起形成一個超級服務器
-
易用,配置簡單,有多種負載均衡的方式
-
穩定可靠,即使在集群的服務器中某臺服務器無法正常工作也不會影響整體效果
-
可擴展性好
?LVS負載均衡器的調度算法
? 輪詢
?? ??? ?平等的對待每一臺服務器
??加權輪詢
?? ??? ?根據調度器設置的權重值來分發請求,權重值越高,被分發的請求越多,主要是為了保證性能比較強的服務器接受的請求最多
?最少連接
?? ??? ?根據服務器的已建立的連接數確定分發,收到的請求分發給連接數少的節點
?加權最少連接
?? ??? ?在服務器節點性能有差異時,性能較高的節點承擔更多比例的請求
LVS基于內核態的netfilter框架實現的IPVS功能,工作在內核態用戶配置vip等相關信息并且傳遞
IPVS,就需要用到IPVSadm工具
ipvsadm: IPVSadm是lvs用戶態的配套的工具,可以實現VIP和RS 增刪改查
ipvsadm工具
工具選項
-A:添加虛擬服務器
-D:刪除整個虛擬fuwq
-s:指定負載調度算法(輪詢,加權輪詢,最少連接,加權最少連接,wlc)
-a:表示添加真實服務器(節點服務器)
-d:刪除某一個節點
-t:指定VIP地址及TCP端口
-r:指定RIP地址及TCP端口
-m:表示使用NAT群集模式
-g:表示使用DR模式
-i:表示使用TUN模式
-w:設置權重(權重為0時表示暫停節點)
-p60:表示保持長連接60秒
-l:列表查看LVS虛擬服務器(默認為查看所有)
-n:以數字形式顯示地址,端口等信息,常與“-l”選項組合使用
LVS-NAT部署實戰
?? ?創建虛擬服務器
?? ?添加刪除服務器節點
?? ?查看集群節點情況
?? ?保存負載分配策略
LVS負載調度器:ens33:20.0.0.50?ens37:10.0.0.1(vmnet3)(添加一個新的網卡進行配置)
Web1 節點服務器1:20.0.0.60
Web2 節點服務器2:20.0.0.70
NFS服務器:20.0.0.80
客戶端(win10):10.0.0.12 (Vmnet3)
注意:① win10虛擬機(客戶端)網關設置為10.0.0.1
? ? ? ? ? ?② web服務器 網關設置為 20.0.0.50
部署共享存儲(NFS服務器:20.0.0.80)
#關閉安全機制
systemctl stop firewalld.service?
systemctl disable firewalld.service?
setenforce 0#安裝服務
yum install -y nfs-utils rpcbindsystemctl start nfs.service?
systemctl start rpcbind.service
systemctl enable nfs.service?
systemctl enable rpcbind.service#創建共享目錄
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benetvim /etc/exports
/usr/share *(ro,sync)
# 這一行指定了 /usr/share 目錄的共享設置。* 表示允許任何客戶端訪問,(ro,sync) 表示只讀權限,并且同步寫入/opt/kgc 20.0.0.0/24(rw,sync)
/opt/benet 20.0.0.0/24(rw,sync)
# 指定了 /opt/benet 目錄的共享設置,只允許 20.0.0.0/24 網段的客戶端訪問,具有讀寫和同步寫入。#發布共享
exportfs -rv
showmount -e
配置節點服務器(后端服務器)
20.0.0.60 20.0.0.70
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0#修改網卡網關為LVS服務器
需要將兩個節點服務器60和70的網關設置為調度器的地址20.0.0.50
20.0.0.60
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=20.0.0.60
NETMASK=255.255.255.0
GATEWAY=20.0.0.50
#DNS1=114.114.114.114
systemctl restart network20.0.0.70
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=20.0.0.70
NETMASK=255.255.255.0
GATEWAY=20.0.0.50
#DNS1=114.114.114.114
systemctl restart networkyum install -y httpd
systemctl start httpd.service
systemctl enable httpd.serviceyum install -y nfs-utils rpcbindsystemctl start rpcbind.service
systemctl enable rpcbind.serviceshowmount -e 20.0.0.80#web1:20.0.0.60
mount.nfs 20.0.0.80:/opt/kgc /var/www/html/
#用于將遠程的NFS共享目錄掛載到本地目錄echo 'this is kgc' > /var/www/html/index.html#永久配置方法
vim /etc/fstab
20.0.0.80:/opt/kgc /var/www/html nfs defaults,_netdev 0 0
mount -a#web2:20.0.0.70
mount.nfs 20.0.0.80:/opt/benet /var/www/html/echo 'this is benet' > /var/www/html/index.html#永久掛載
vim /etc/fstab
20.0.0.80:/opt/benet /var/www/html nfs defaults,_netdev 0 0mount -a
?配置負載調度器LVS
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0------(1)、配置SNAT轉發規則-------
vim /etc/sysctl.conf
net.ipv4.ip_forward=1sysctl -p
或者:echo '1' > /proc/sys/net/ipv4/ip_forwardiptables -t nat -F
iptables -F
iptables -t nat -nLiptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens37 -j SNAT --to-source 10.0.0.1
#將源IP地址為20.0.0.0/24的數據包的源地址轉換為10.0.0.1 指定接口為ens37轉發-------(2)、加載LVS內核模塊-------------
modprobe ip_vs #手動加載ip_vs模塊
cat /proc/net/ip_vs #查看ip_vs版本信息-------(3)、安裝ipvsadm管理工具-------------
yum install -y ipvsadm#注意:啟動服務前必須保存負載分配策略,否則將會報錯
ipvsadm-save > /etc/sysconfig/ipvsadmsystemctl start ipvsadm.service------(4)、配置負載分配策略(NAT模式只要在服務器上配置,節點服務器不需要特殊配置)-------------
ipvsadm -C #清除原有策略
ipvsadm -A -t 10.0.0.1:80 -s rr
ipvsadm -a -t 10.0.0.1:80 -r 20.0.0.60:80 -m -w 1
ipvsadm -a -t 10.0.0.1:80 -r 20.0.0.70:80 -m -w 1
#添加一個虛擬服務器的轉發規則
#將來自10.0.0.1:80的請求轉發到20.0.0.60:80的實際服務器上,并使用NAT模式進行轉發。同時,使用權重1來進行負載均衡ipvsadm #啟動策略ipvsadm -ln #查看節點狀態,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm #保存策略