一、LVS-DR集群介紹
LVS-DR(Linux Virtual Server Director Server)作業模式,是生產環境中最常用的一 種作業模式,
1.1LVS-DR 作業原理
LVS-DR 模式,Director Server 作為群集的訪問入口,不作為網關使用,節點 Director Server 與 Real Server 需要在同一個網路中,回傳給客戶端的資料不需要經過 Director Server,為了回應對整個群集的訪問,Director Server 與 Real Server 都需要配置 VIP 地址,
1.2資料包流向分析
為方便進行原理分析,將Client與群集機器放在同一網路中,資料包流經的路線為 1-2-3-4 四步
- 第一步:客戶端發送請求到 Director Server (負載均衡器),請求的資料報文到達內核空間,
此時請求的資料報文
源 IP —— 客戶端的 IP(CIP)
目標 IP —— VIP
源 MAC —— 客戶端的 MAC
目的 MAC —— Director Server 的 MAC
- 第二步:內核空間判斷資料包的目標 IP 是本機 VIP,此時 IPVS(IP 虛擬服務器)比對資料包請求的服務是否是集群服務,是集群服務就重新封裝資料包,然后將資料包發送給根據 負載均衡演算法選擇的 Real Server,(Director Server 和 Real Server 在同一個網路中,資料通過二層資料鏈路層來傳輸,)
此時請求的資料報文
源 IP —— 客戶端的 IP
目標 IP —— VIP
源 MAC —— Director Server 的 MAC
目的 MAC —— Real Server 的 MAC
- 第三步:到達 Real Server 的請求報文的 MAC 地址是自身的 MAC 地址,就接收此報文,資料包重新封裝報文,將回應報文通過 lo 介面傳送給物理網卡然后向外發出,
此時請求的資料報文
源 IP —— VIP
目標 IP —— 客戶端的 IP(CIP)
源 MAC —— Real Server 的 MAC
目的 MAC —— 客戶端的 MAC
第四步:通過交換機和路由器將回應報文傳送到客戶端,客戶端收到回復報文,得到想要的服務,但是不會知道是哪臺服務器處理的,
1.3LVS-DR 模式的特點
- Director Server 和 Real Server 必須在同一個物理網路中,
- Real Server 可以使用私有地址,也可以使用公網地址,如果使用公網地址,可以通過互聯網對RIP進行直接訪問,
- 所有的請求報文經由 Director Server,但回復回應報文不能經過 Director Server,
- Real Server 的網關不允許指向 Director Server IP,即不允許資料包經過 Director S erver,
- Real Server 上的 lo 介面配置 VIP 的 IP 地址,
1.4LVS-DR中的ARP問題
(1)問題一
在LVS-DR負載均衡集群中,負載均衡器與節點服務器都要配置相同的VIP地址,在局域網中具有相同的IP地址,勢必會造成各服務器ARP通信的紊亂
當ARP廣播發送到LVS-DR集群時,因為負載均衡器和節點服務器都是連接到相同的網路上,它們都會接收到ARP廣播
只有前端的負載均衡器進行回應,其他節點服務器不應該回應ARP廣播
解決方法:
對節點服務器進行處理,使其不回應針對VIP的ARP請求
使用虛介面lo:0承載VIP地址
設定內核引數arp_ ignore=1: 系統只回應目的IP為本地IP的ARP請求
(2)問題二
問題說明: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地址
二、構建LVS-DR集群的步驟
實驗環境準備:
DR 服務器:192.168.10.10
Web 服務器1:192.168.10.20
Web 服務器2:192.168.10.30
NFS共享服務器:192.168.10.40
lvs_vip:192.168.10.50
2.1配置負載調度器(192.168.10.10)
systemctl stop firewalld.service
setenforce 0
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm
(1)配置虛擬 IP 地址(VIP:192.168.10.50)
cd /etc/sysconfig/network-scripts/ cp ifcfg-ens33 ifcfg-ens33:0 #若隧道模式,復制為ifcfg-tunl0 vim ifcfg-ens33:0 DEVICE=ens33:0 ONBOOT=yes IPADDR=192.168.10.50 NETMASK=255.255.255.255 ifup ens33:0 ifconfig ens33:0 route add -host 192.168.10.50 dev ens33:0 ###添加靜態路由
(2)調整 proc 回應引數
由于 LVS 負載調度器和各節點需要共用 VIP 地址,應該關閉Linux 內核的重定向引數回應, vim /etc/sysctl.conf net.ipv4.ip_forward = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens33.send_redirects = 0 sysctl -p
(3)配置負載分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm systemctl start ipvsadm ipvsadm -C ipvsadm -A -t 192.168.10.50:80 -s rr ipvsadm -a -t 192.168.10.50:80 -r 192.168.10.20:80 -g #若隧道模式,-g替換為-i ipvsadm -a -t 192.168.10.50:80 -r 192.168.10.30:80 -g ipvsadm ipvsadm -ln
2.2部署共享存盤(NFS服務器:192.168.10.40)
systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0 yum install nfs-utils rpcbind -y systemctl start nfs.service systemctl start rpcbind.service systemctl enable nfs.service systemctl enable rpcbind.service mkdir /opt/ly /opt/weq chmod 777 /opt/ly /opt/weq echo 'this is fzr web!' > /opt/fzr/index.html echo 'this is zzj web!' > /opt/zzj/index.html vim /etc/exports /opt/fzr 192.168.10.0/24(rw,sync) /opt/zzj 192.168.10.0/24(rw,sync) --發布共享---[root@nfs ~]#exportfs -rv
2.3配置節點服務器(192.168.2.20、192.168.10.30)
systemctl stop firewalld.service setenforce 0
(1)配置虛擬 IP 地址(VIP:192.168.10.50)
此地址僅用作發送Web回應資料包的源地址,并不需要監聽客戶機的訪問請求(改由調度器監聽并分發),因此使用虛介面lo:0來承載VIP地址,并為本機添加一條路由記錄,將訪問VIP的資料限制在本地,以避免通信紊亂,
yum install nfs-utils rpcbind httpd -y
cd /etc/sysconfig/network-scripts/ cp ifcfg-ens33 ifcfg-lo:0 vim ifcfg-lo:0 DEVICE=lo:0 ONBOOT=yes IPADDR=192.168.10.50 #和VIP保持一致 NETMASK=255.255.255.255 #注意:子網掩碼必須全為 1 ifup lo:0 ifconfig lo:0 route add -host 192.168.10.50 dev lo:0 #添加VIP本地訪問路由,將訪問VIP的資料限制在本地,以避免通信紊亂 vim /etc/rc.local /sbin/route add -host 192.168.10.50 dev lo:0 chmod +x /etc/rc.local
(2)調整內核的ARP回應引數以阻止更新VIP的MAC地址,避免發生沖突
vim /etc/sysctl.conf ...... net.ipv4.conf.lo.arp_ignore = 1 #系統只回應目的IP為本地IP的ARP請求 net.ipv4.conf.lo.arp_announce = 2 #系統不使用IP包的源地址來設定ARP請求的源地址,而選擇發送介面的IP地址 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 sysctl -p 或者臨時添加 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce sysctl -p yum -y install nfs-utils rpcbind httpd systemctl start rpcbind systemctl start httpd
(3)共享掛載目錄
yum -y install nfs-utils rpcbind httpd systemctl start rpcbind systemctl start httpd --192.168.10.20--- mount.nfs 192.168.10.40:/opt/fzr /var/www/html --192.168.10.30--- mount.nfs 192.168.10.40:/opt/zzj /var/www/html
2.4測驗 LVS 群集
在客戶端使用瀏覽器訪問 http://192.168.10.50
三、實體操作:構建LVS-DR集群
3.1配置負載調度器(192.168.10.10)

(1)配置虛擬 IP 地址(VIP:192.168.10.50)


(2)調整 proc 回應引數


(3)配置負載分配策略
![]()

3.2部署共享存盤(NFS服務器:192.168.10.40)




3.3配置節點服務器(192.168.10.20、192.168.10.30)
(1)配置虛擬 IP 地址(VIP:192.168.10.50)
web1節點(192.168.10.20):
![]()

![]()


web2節點(192.168.10.30):
![]()



(2)調整內核的ARP回應引數以阻止更新VIP的MAC地址,避免發生沖突
web1節點:


web2節點:


(3)共享掛載目錄
web1節點:



web2節點:




3.4測驗 LVS 群集
http://192.168.10.50(vip地址)


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/538379.html
標籤:其他
下一篇:輕量級模型設計與部署總結
