目錄
集群
什么是集群 (含義)
集群的分類
LVS
負載均衡器的集群架構
負載均衡器的群集工作模式
LVS負載均衡器的調度算法
LVS組成作用
組成
作用
LVS群集創建與管理
創建步驟
ipvsadm工具
LVS-NAT部署實戰
1、部署共享存儲
2、配置節點服務器(后端服務器)
3、配置負載調度器LVS
配置SNAT轉發規則
加載LVS內核模塊
安裝ipvsadm管理工具
配置負載分配策略
測試
集群
什么是集群 (含義)
Cluster、集群、群集,由多臺主機構成,但對外只表現為一個整體,只提供一個訪問入口(域名與IP地址),相當于一臺大型計算機。將多臺主機作為一個整體,對外提供相同的服務就是集群
集群使用的場景
高并發時使用
集群的分類
負載均衡群集
減少響應延遲,提供并發處理能力。
提高應用系統的響應能力、盡可能處理更多的訪問請求減少延遲為目標,獲得高并發、高負載(LB)的整體性能LB的負載分配依賴于主節點的分流算法
高可用群集
保證系統穩定性,減少服務器中斷的時間,減少損失
提高應用系統的可靠性、盡可能地減少中斷時間為目標,確保服務的連續性,達到高可用(HA)的容錯效果HA的工作方式包括雙工和主從兩種模式
高性能運算群集?
分布式,高性能運算能力,并發
提高應用系統的CPU運算速度、擴展硬件資源和分析能力為目標,獲得相當于大型、超級計算機的高性能運算(HPC)能力高性能依賴于“分布式運算”、“并行計算”,通過專用硬件和軟件將多個服務器的CPU、內存等資源整合在一起,實現只有大型、超級計算機才具備的計算能力
LVS
負載均衡器的集群架構
第一層,負載調度器?
通過調度算法以及RIP發送
訪問整個群集系統的唯一入口,對外使用所有服務器共有的VIP地址,也稱為群集IP地址。通常會配置主、備兩臺調度器實現熱備份,當主調度器失效以后能夠平滑替換至備用調度器,確保高可用性。
第二層,節點服務池
所有服務器用的資源通過
群集所提供的應用服務、由服務器池承擔,其中每個節點具有獨立的RIP地址(真實IP),只處理調度器分發過來的客戶機請求。當某個節點暫時失效時,負載調度器的容錯機制會將其隔離,等待錯誤排除以后再重新納入服務器池。
第三層,共享存儲
提供網站,存儲資源
為服務器池中的所有節點提供穩定、一致的文件存取服務,確保整個群集的統一性。共享存儲可以使用NAS設備,或者提供NFS共享服務的專用服務器。
?
負載均衡器的群集工作模式
地址轉換
簡稱NAT模式Network Address Translation,類似于防火墻的私有網絡結構,負載調度器作為所有服務器節點的網關,即作為客戶機的訪問入口,也是各節點回應客戶機的訪問出口服務器節點使用私有IP地址,與負載調度器位于同一個物理網絡,安全性要優于其他兩種方式
調度作為網關,是訪問請求的入口,也是響應訪問的出口,在高并發場景中負載壓力很高,NAT轉換可以提高安全性,一般不會使用這種方式
IP隧道
IP Tunnel,簡稱TUN模式采用開放式的網絡結構,負載調度器僅作為客戶機的訪問入口,各節點通過各自的Internet連接直接回應客戶機,而不再經過負載調度器
服務器節點分散在互聯網中的不同位置具有獨立的公網IP地址,通過專用IP隧道與負載調度器相互通信
僅是訪問請求的入口,響應數據不經過調度器但是需要大量的公網IP和專用的IP隧道成本太高,數據轉發受IP隧道的額外影響,不會使用這種方式
直接路由
Direct Routing,簡稱DR模式采用半開放式的網絡結構,與TUN模式的結構類似,但各節點并不是分散在各地,而是與調度器位于同一個物理網絡負載調度器與各節點服務器通過本地雙絡連接,不需要建立專用的IP隧道
關于LVS虛擬服務器
僅是訪問請求入口,響應數據不經過調度器,節點服務器和調度器在一個物理網絡中,數據進行轉發不受額外影響
LVS負載均衡器的調度算法
輪詢
加權輪詢
最少連接
加權最少連接
LVS組成作用
組成
1.LVS基于內核態的netfilter框架來實現的IPVS功能,工作在內核態,用戶配置VIP等相關信息并且傳遞到IPVS,需要用到IPVSadm工具
2.IPVSadm是IVS用戶態的配套工具,它可以實現VIP和RS的增刪改查。IPVSadm就是類似于iptables根據的地位
作用
1.主要用于多服務器的負載均衡
2.工作在網絡層,可實現高性能、高可用的服務集群技術
3.廉價,可以把許多低性能的服務器組合在一起形成一個超級服務器
4.易用,配置簡單,有多重負載均衡的方式
5.穩定可靠,即使在集群的服務器中,某臺服務器無法正常工作,也不影響整體效果
6.可擴展性好
LVS群集創建與管理
創建步驟
1.創建虛擬服務器
2.添加、刪除服務器節點
3.查看群集及節點情況
4.保存負載分配策略
ipvsadm工具
選項說明
-A?? ?添加虛擬服務器
-D?? ?刪除整個虛擬服務器
-s?? ?指定負載調度算法 (輪詢:rr、加權輪詢: wrr、最少連接: lc、加權最少連接: wlc )
-a?? ?表示添加真實服務器 (節點服務器)
-d?? ?刪除某一個節點
-t?? ?指定 VIP地址及 TCP端口
-r?? ?指定 RIP地址及 TCP端口
-m?? ?表示使用 NAT群集模式.
-g?? ?表示使用 DR模式
-i?? ?表示使用 TUN模式
-w?? ?設置權重 (權重為 0 時表示暫停節點)
-p 60?? ?表示保持長連接60秒
-l?? ?列表查看 LVS 虛擬服務器 (默認為查看所有)
-n?? ?以數字形式顯示地址、端口等信息,常與 “-l” 選項組合使用。ipvsadm -ln
LVS-NAT部署實戰
LVS負載調度器:ens33:192.168.233.110 ens36:10.0.0.1(vmnet3)
Web1 節點服務器1:192.168.233.60
Web2 節點服務器2:192.168.233.70
NFS服務器:192.168.233.100
客戶端(win10):10.0.0.12 (Vmnet3)
PS:?
① win10虛擬機(客戶端)網關設置為10.0.0.1
② web服務器 網關設置為 192.168.233.110
1、部署共享存儲
(NFS服務器:192.168.233.100)
systemctl stop firewalld.service?
systemctl disable firewalld.service?
setenforce 0yum install -y nfs-utils rpcbindsystemctl start nfs.service?
systemctl start rpcbind.service
systemctl enable nfs.service?
systemctl enable rpcbind.servicemkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benetvim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 192.168.233.0/24(rw,sync)
/opt/benet 192.168.233.0/24(rw,sync)#發布共享
exportfs -rv
showmount -e
2、配置節點服務器(后端服務器)
192.168.233.60、192.168.233.70systemctl stop firewalld.service?
systemctl disable firewalld.service?
setenforce 0#修改網卡網關為LVS服務器yum install -y httpd
systemctl start httpd.service?
systemctl enable httpd.serviceyum install -y nfs-utils rpcbindsystemctl start rpcbind.service
systemctl enable rpcbind.serviceshowmount -e 192.168.233.100#web1:192.168.233.60
mount.nfs 192.168.233.100:/opt/kgc /var/www/html/echo 'this is kgc' > /var/www/html/index.htmlvim /etc/fstab?
192.168.233.100:/opt/kgc /var/www/html nfs defaults,_netdev 0 0
mount -a#web2:192.168.233.70
mount.nfs 192.168.233.100:/opt/benet /var/www/html/echo 'this is benet' > /var/www/html/index.htmlvim /etc/fstab?
192.168.233.100:/opt/benet /var/www/html nfs defaults,_netdev 0 0mount -a
3、配置負載調度器LVS
ens33:192.168.233.110?ens36:10.0.0.1
systemctl stop firewalld.service?
systemctl disable firewalld.service?
setenforce 0
配置SNAT轉發規則
vim /etc/sysctl.conf
net.ipv4.ip_forward=1sysctl -piptables -t nat -F
iptables -Fiptables -t nat -A POSTROUTING -s 192.168.233.0/24 -o ens36 -j SNAT --to-source 10.0.0.1
加載LVS內核模塊
modprobe ip_vs ? #手動加載ip_vs模塊
cat /proc/net/ip_vs ? ?#查看ip_vs版本信息
安裝ipvsadm管理工具
yum install -y ipvsadm#注意:啟動服務前必須保存負載分配策略,否則將會報錯
ipvsadm-save > /etc/sysconfig/ipvsadm
或者
ipvsadm --save > /etc/sysconfig/ipvsadm
或者
touch /etc/sysconfig/ipvsadmsystemctl start ipvsadm.service
配置負載分配策略
NAT模式只要在服務器上配置,節點服務器不需要特殊配置
ipvsadm -C ? ? #清除原有策略
ipvsadm -A -t 10.0.0.1:80 -s rr
ipvsadm -a -t 10.0.0.1:80 -r 192.168.233.60:80 -m -w 1
ipvsadm -a -t 10.0.0.1:80 -r 192.168.233.70:80 -m -w 1ipvsadm ? ? #啟動策略ipvsadm -ln ? ?#查看節點狀態,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm ? ?#保存策略
測試
在win10上使用瀏覽器訪問10.0.0.1,刷新瀏覽器測試負載均衡
PS:刷新間隔時間需要稍長一點