(1).集群技術(shù)的分類
集群技術(shù)主要分為三大類:負載均衡(Load Balance)集群,簡稱LB集群;高可用(High Availability)集群,簡稱 HA 集群;高性能計算(High Perfermance Computing)集群,簡稱 HPC 集群。
(2).常見的LB集群實現(xiàn)手段
而常見的LB集群實現(xiàn)手段為:硬件實現(xiàn)的F5負載均衡器;軟件實現(xiàn)的LVS(4層,傳輸層)和Nginx(7層,應(yīng)用層)。其中,LVS是基于iptables實現(xiàn)(所以使用與iptables類似),由國內(nèi)開發(fā)的開源軟件,其性能優(yōu)于Nginx,但只能實現(xiàn)4層。
(3).LVS的模式和工作原理
LVS提供了三種包轉(zhuǎn)發(fā)方式:NAT(網(wǎng)絡(luò)地址映射)、IP Tunneling(IP隧道)、Direct Rounting(直接路由),分別對應(yīng)NAT模式、TUN模式、DR模式。不同的轉(zhuǎn)發(fā)方式?jīng)Q定了不同的集群網(wǎng)絡(luò)結(jié)構(gòu)。
1)NAT模式介紹
NAT:網(wǎng)絡(luò)地址轉(zhuǎn)換;DNAT:目標(biāo)地址轉(zhuǎn)換,改變的是目標(biāo)地址;SNAT:源地址轉(zhuǎn)換,改變的是源地址;LVS-NAT:使用SNAT和DNAT完成報文的轉(zhuǎn)發(fā)。
NAT方式可支持任何的操作系統(tǒng),以及私有網(wǎng)絡(luò),并且只需一個Internet IP地址,但是整個系統(tǒng)的性能受到限制。因為執(zhí)行NAT每次需要重寫包,有一定的延遲;另外,大部分應(yīng)用有80%的數(shù)據(jù)是從服務(wù)器流向客戶機,也就是用戶的請求非常短,而服務(wù)器的回應(yīng)非常大,對負載均衡器形成很大壓力,成為了新的瓶頸。
2)TUN模式介紹
director(分發(fā)器)分配請求到不同的real server,然后real server處理請求后直接回應(yīng)給用戶,這樣director負載均衡器僅需處理客戶機與服務(wù)器的一半連接。IP Tunneling技術(shù)極大地提高了director的調(diào)度處理能力,同時也極大地提高了系統(tǒng)能容納的最大節(jié)點數(shù),可以超過100個節(jié)點。real server可以在任何LAN或WAN上運行,這意味著允許地理上的分布,這在災(zāi)難恢復(fù)中有重要意義。服務(wù)器必須擁有正式的IP地址用于與客戶機直接通信,并且所有服務(wù)器必須支持IP隧道協(xié)議。
3)DR模式介紹(最常用的模式)
與TUN模式類似,負載均衡器僅處理一半的連接,避免了新的性能瓶頸,同樣增加了系統(tǒng)的可伸縮性。Direct Routing與IP Tunneling相比,沒有IP封裝的開銷,但由于采用物理層(修改MAC地址)技術(shù),所有服務(wù)器都必須在一個物理網(wǎng)段。
4)NAT工作原理
客戶端訪問調(diào)度器時,調(diào)度器通過網(wǎng)絡(luò)地址轉(zhuǎn)換,調(diào)度器重寫請求報文的目標(biāo)地址,根據(jù)預(yù)設(shè)的調(diào)度算法,將請求分派給后端的真實服務(wù)器;真實服務(wù)器的響應(yīng)報文通過調(diào)度器時,報文的源地址被重寫,再返回給客戶,完成整個負載調(diào)度過程。
簡單來說可以分為四步:第一步、客戶端請求訪問,源地址:CIP,目標(biāo)地址:VIP;第二步、請求報文到達負載均衡器,源地址:CIP,目標(biāo)地址:RIP;第三步、Real Server接收到報文,處理并響應(yīng)(回頭了),源地址:RIP,目標(biāo)地址:CIP;第四步、負載均衡器收到報文,根據(jù)之前的轉(zhuǎn)發(fā)修改記錄還原報文,源地址VIP,目標(biāo)地址CIP。
CIP:客戶端的IP;VIP:虛擬IP,對外公網(wǎng)IP,負載均衡器(Director)的外網(wǎng)IP;DIP:負載均衡器(Director)的內(nèi)網(wǎng)IP,與服務(wù)器交互的IP;RIP:真實服務(wù)器的IP。
(4).實驗
以下128網(wǎng)段是外網(wǎng)IP,5網(wǎng)段是內(nèi)網(wǎng)IP
youxi1 192.168.5.101,192.168.128.213 負載均衡器(Director)
youxi2 192.168.5.102(網(wǎng)關(guān)為youxi1的內(nèi)網(wǎng)IP) 真實服務(wù)器1
youxi3 192.168.5.103(網(wǎng)關(guān)為youxi1的內(nèi)網(wǎng)IP) 真實服務(wù)器2
1)首先在youxi2和youxi3兩臺真實服務(wù)器上安裝httpd用于測試
[root@youxi2 ~]# yum -y install httpd[root@youxi2 ~]# systemctl start httpd.service[root@youxi2 ~]# echo youxi2 > /var/www/html/index.html[root@youxi3 ~]# yum -y install httpd[root@youxi3 ~]# systemctl start httpd.service[root@youxi3 ~]# echo youxi3 > /var/www/html/index.html
如果是和我一樣使用yum安裝,那么安裝完成后需要將網(wǎng)關(guān)改為192.168.5.101。
2)開啟youxi1的路由轉(zhuǎn)發(fā)功能
[root@youxi1 ~]# vim /etc/sysctl.confnet.ipv4.ip_forward = 1 //添加或修改[root@youxi1 ~]# sysctl -p //重新加載sysctlnet.ipv4.ip_forward = 1
3)安裝ipvsadmin
[root@youxi1 ~]# yum -y install ipvsadm[root@youxi1 ~]# systemctl start ipvsadm.service
4)使用ipvsadm命令設(shè)置規(guī)則
注意:ipvsadm保存的時候會使用短域名,所以需要注意/etc/hosts文件里的短域名和IP配對。
[root@youxi1 ~]# ipvsadm -A -t 192.168.128.213:80 -s rr //-A添加虛擬服務(wù)器,-t服務(wù)器的IP地址和端口,-s指定調(diào)度算法[root@youxi1 ~]# ipvsadm -a -t 192.168.128.213:80 -r 192.168.5.102 -m //-a添加真實服務(wù)器,-r真實服務(wù)器的IP地址和端口,-m使用NAT模式[root@youxi1 ~]# ipvsadm -a -t 192.168.128.213:80 -r 192.168.5.103 -m[root@youxi1 ~]# ipvsadm -Ln //-L列出IPVS表,-n顯示IP和端口IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.128.213:80 rr -> 192.168.5.102:80 Masq 1 0 0 -> 192.168.5.103:80 Masq 1 0 0[root@youxi1 ~]# ipvsadm --save > /etc/sysconfig/ipvsadm //保存,也可以使用ipvsadm -S[root@youxi1 ~]# cat /etc/sysconfig/ipvsadm-A -t youxi1:http -s rr-a -t youxi1:http -r youxi2.cn:http -m -w 1-a -t youxi1:http -r 192.168.5.103:http -m -w 1
-s選項能夠調(diào)用的算法有rr(表示round-robin,輪詢)、wrr、lc、wlc(加權(quán)最小連接)、lblc、lblcr、dh、sh、sed、nq,默認(rèn)調(diào)度的是wlc。
調(diào)用算法詳細請看:https://blog.csdn.net/weixin_40470303/article/details/80541639
5)注意,如果防火墻是打開的記得添加端口號
[root@youxi1 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcpsuccess[root@youxi1 ~]# firewall-cmd --reloadsuccess[root@youxi2 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcpsuccess[root@youxi2 ~]# firewall-cmd --reloadsuccess[root@youxi3 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcpsuccess[root@youxi3 ~]# firewall-cmd --reloadsuccess
6)測試
刷新
如果再刷新又會變?yōu)閥ouxi2。
(5).ipvsadm的常用命令
ipvsadm -Ln查看規(guī)則,顯示內(nèi)核虛擬服務(wù)器表
[root@youxi1 ~]# ipvsadm -LnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.128.213:80 rr -> 192.168.5.102:80 Masq 1 0 3 -> 192.168.5.103:80 Masq 1 0 1
ipvsadm -Lnc查看客戶端連接分發(fā)器和真實服務(wù)器的情況
[root@youxi1 ~]# ipvsadm -LncIPVS connection entriespro expire state source virtual destinationTCP 00:50 SYN_RECV 192.168.128.137:49464 192.168.128.213:80 192.168.5.103:80TCP 00:50 SYN_RECV 192.168.128.137:49467 192.168.128.213:80 192.168.5.103:80TCP 00:26 SYN_RECV 192.168.128.137:49433 192.168.128.213:80 192.168.5.103:80TCP 00:50 SYN_RECV 192.168.128.137:49465 192.168.128.213:80 192.168.5.102:80TCP 00:26 SYN_RECV 192.168.128.137:49432 192.168.128.213:80 192.168.5.102:80
還有ipvsadm -Ln --stats查看分發(fā)情況和ipvsadm -Ln --rate查看速率
[root@youxi1 ~]# ipvsadm -Ln --statsIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes -> RemoteAddress:PortTCP 192.168.128.213:80 23 8807 782 627655 38778 -> 192.168.5.102:80 11 5357 524 404849 26620 -> 192.168.5.103:80 12 3450 258 222806 12158[root@youxi1 ~]# ipvsadm -Ln --rateIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS -> RemoteAddress:PortTCP 192.168.128.213:80 0 0 0 0 0 -> 192.168.5.102:80 0 0 0 0 0 -> 192.168.5.103:80 0 0 0 0 0
ipvsadm -Z清空當(dāng)前虛擬服務(wù)器計數(shù)器(連接數(shù)等信息);ipvsadm -C清空所有規(guī)則。
來源:https://www.icode9.com/content-4-333001.html