目錄
- 一、DR模式作業原理
- 1.1 LVS-DR資料包流向分析
- 1.1.1 Client向目標VIP發出請求,Director(負載均衡器)接收
- 1.1.2 Director根據負載均衡演算法選擇RealServer_1,不修改也不封裝IP報文,而是將資料幀的MAC地址改為RealServer_1的MAC地址,然后再局域網上發送,
- 1.1.3 RealServer_1收到這個幀,解封裝后發現目標IP與本機匹配(RealServer事先系結了VIP),于是處理這個報文,隨后重新封裝報文,發送到局域網,
- 1.1.4 Client將收到回復報文,Client人為得到正常的服務,而不會知道是哪一臺服務器處理的,
- 1.2 LVS-DR中的ARP問題
- 二、實體部署
- 2.1 案例環境(調度演算法為輪詢rr)
- 2.2 配置調度服務器
- 2.3 配置NFS服務器
- 2.4 配置節點服務器
- 2.5 驗證效果
LVS群集架構詳解和 LVS+NAT部署在這篇文章 LVS+NAT
一、DR模式作業原理
1.1 LVS-DR資料包流向分析
DR模式中,客戶機向虛擬服務器發出請求,調度器接待客戶機請求,并轉發給節點服務器,而相應方是節點服務器直接回應客戶機,與NAT不同,NAT是通過調度器回應給客戶機,

為了方便進行原理分析,將Client與群集機器放在網路中,資料包流經的路線為1-2-3-4:
LVS-DR模型的特點:
①RS和DS必須在同一個物理網路中
②RS可以使用私有地址,也可以使用公網地址,如果使用公網地址,可以通過互聯網對RIP進行直接訪問
③所有的請求報文經由Director Server(調度器),但回應報文必須不能經過Director Server
④RS的資料包絕不允許指向DIP
⑤RS上的lo介面配置VIP的IP地址

1.1.1 Client向目標VIP發出請求,Director(負載均衡器)接收
IP包頭及資料幀頭資訊

1.1.2 Director根據負載均衡演算法選擇RealServer_1,不修改也不封裝IP報文,而是將資料幀的MAC地址改為RealServer_1的MAC地址,然后再局域網上發送,

1.1.3 RealServer_1收到這個幀,解封裝后發現目標IP與本機匹配(RealServer事先系結了VIP),于是處理這個報文,隨后重新封裝報文,發送到局域網,

1.1.4 Client將收到回復報文,Client人為得到正常的服務,而不會知道是哪一臺服務器處理的,
(如果跨網段,則報文通過路由器經由Internet回傳給用戶,)
1.2 LVS-DR中的ARP問題
- 在LVS-DR負載均衡集群中,負載均衡與節點服務器都要配置相同的VIP地址
- 在局域網中具有相同的IP地址,勢必會造成各服務器ARP通信的紊亂
① 當ARP廣播發送到LVS-DR集群時,因為負載均衡和節點服務器都是連接到相同的網路上,它們都會接收到ARP廣播
② 只有前端的負載均衡器進行回應廣播,節點服務器不應該回應ARP廣播 - 對節點服務要求進行處理,使其不回應針對VIP的ARP請求
① 使用虛介面lo:0承載VIP地址
② 設定內核引數arp_ignore=1:系統只回應目的IP為本地IP的ARP請求 - RealServer回傳報文(源IP是VIP)經路由器轉發,重新封裝報文時,需要先獲取路由器的MAC地址
- 發送ARP請求時,Linux默認使用IP包的源IP地址(即VIP)作為ARP請求包中的源IP地址,而不使用發送介面的IP地址
- 路由器收到ARP請求后,將更新ARP表項
- 原有的VIP對應Director的MAC地址會被更新為VIP對應RealServer的MAC地址

- 問題:
路由表根據ARP表項,會將新來的請求報文轉發給RealServer,導致Director的VIP失效

- 解決方法:
對節點服務器進行處理,設定內核引數arp_announce=2:系統不使用IP包的源地址來設定ARP請求的源地址,而選擇發送介面的IP地址
二、實體部署
2.1 案例環境(調度演算法為輪詢rr)
共需要五臺主機,所有主機都處于同一網段,用虛擬機的VMnet1模式,虛擬IP:192.168.10.200
主機1:作為調度器(負載均衡器),IP:192.168.10.130
主機2、3:作為節點服務器,提供web服務,IP:192.168.10.140 和 192.168.10.150
主機4:部署nfs共享存盤服務,給節點服務器提供網頁等資源,IP:192.168.10.160
主機5:客戶機,用于訪問虛擬服務器(192.168.10.200),測驗輪詢的訪問效果,IP:192.168.10.170
2.2 配置調度服務器
加載LVS內核
[root@lvs ~]# modprobe ip_vs
[root@lvs ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
安裝管理軟體ipvsadm,不需要啟動
[root@lvs ~]# rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm
警告:/mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID f4a80eb5: NOKEY
準備中... ################################# [100%]
正在升級/安裝...
1:ipvsadm-1.27-7.el7 ################################# [100%]
編輯調度服務器的腳本進行配置
#!/bin/bash
ifconfig ens33:0 192.168.10.200 broadcast 192.168.10.200 netmask 255.255.255.255 up
ipvsadm -C #清除內核虛擬服務器表中的所有記錄
ipvsadm -A -t 192.168.10.200:80 -s rr #創建虛擬服務器
ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.140:80 -g #添加服務器節點
ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.150:80 -g #添加服務器節點
ipvsadm -Ln #查看節點狀態,加n以數字形式顯示地址、埠資訊
//選項注釋
-A :表示添加虛擬服務器
-a :表示添加真實服務器
-t :用來指定VIP地址及TCP埠
-r :用來指定RIP地址及TCP埠
-s :用來指定負載調度演算法————(rr:輪詢,wrr:加權輪詢,lc:最少連接,wlc:加權最少連接)
-m :表示使用NAT群集模式(“-g”是DR模式,“-i”是TUN模式)
執行腳本,可查看到權重
[root@lvs ~]# sh nat.sh
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.10.200:80 rr
-> 192.168.10.140:80 Route 1 0 0
-> 192.168.10.150:80 Route 1 0 0
2.3 配置NFS服務器
[root@nfs ~]# yum -y install nfs-utils rpcbind
[root@nfs ~]# systemctl start nfs-utils
[root@nfs ~]# systemctl start rpcbind
[root@nfs ~]# mkdir /opt/web1 /opt/web2 #建立測驗網頁
[root@nfs ~]# cd /opt/web1
[root@nfs web1]# echo "server1" > index.html #給web1服務器使用
[root@nfs web1]# cd /opt/web2
[root@nfs web2]# echo "server2" > index.html #給web2服務器使用
[root@nfs web2]# vi /etc/exports
/opt/web1 192.168.10.140 (ro,sync)
/opt/web2 192.168.10.150 (ro,sync)
[root@nfs web2]# systemctl restart nfs
[root@nfs web2]# systemctl restart rpcbind
#關閉防火墻核心防護
[root@nfs web2]# systemctl stop firewalld
[root@nfs web2]# setenforce 0
2.4 配置節點服務器
以web1為例
安裝httpd網頁服務
[root@web1 ~]# yum -y install httpd
查看nfs服務器的發布
#關閉防火墻核心防護
[root@web1 ~]# systemctl stop firewalld
[root@web1 ~]# setenforce 0
[root@web1 ~]# showmount -e 192.168.10.160
Export list for 192.168.10.160:
/opt/web2 (everyone)
/opt/web1 (everyone)
掛載使用nfs服務器的網頁
[root@web1 ~]# mount 192.168.10.160:/opt/web1 /var/www/html
[root@web1 ~]# systemctl start httpd #開啟網路服務
節點2用/opt/web2
DR模式配置:編輯腳本執行,兩節點服務器一樣,都需要配置
#!/bin/bash
#添加虛擬IP,必須用lo網卡
ifconfig lo:0 192.168.10.200 broadcast 192.168.10.200 netmask 255.255.255.255 up
route add -host 192.168.10.200 dev lo:0
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
systctl -p &> /dev/null
2.5 驗證效果
用客戶機訪問,192.168.10.200
首先由節點一提供服務

再開一個網頁請求,由節點二提供服務
再下一次就是節點一提供服務,兩個服務器輪流提供網頁服務

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/206003.html
標籤:其他
