文章目錄
- 一、LVS—DR 資料包流向分析
- 二、LVS—DR中的ARP問題
- 三、DR模式、LVS負載均衡群集
- (一)、資料包流向分析
- (二)、DR模式的特點
- 四、DR模式 LVS負載均衡群集部署
- 1、配置負載調度器(192.168.182.11)
- 2、部署共享存盤(NFS服務器:192.168.182.44)
- 3、配置節點服務器(192.168.182.22 & 192.168.182.33)
- 4、測驗 LVS 群集
一、LVS—DR 資料包流向分析
為方便進行原理分析,將Client與群集機器放在同一網路中,資料包流經的路線為1-2-3-4

1、Client 向目標 VIP 發出請求,Director(負載均衡器)接收,此時源MAC 地址為Client MAC地址,目標MAC地址為 調度器Director 的MAC地址,
2、Director 根據負載均衡演算法選擇RealServer_1,不修改也不封裝IP保溫,而是將資料幀的MAC地址改為RealServer_1的MAC地址,然后在局域網上發送,此時源MAC地址為Director的MAC地址,目的MAC地址為RealServer_1的MAC地址
3、RealServer_1收到這個幀,解封裝后發現目標IP與本機匹配(RealServer事先系結了VIP),于是處理這個報文,隨后重新封裝報文,將回應報文通過 lo 介面傳送給物理網卡然后向外發出,此時源MAC地址為RealServer_1的MAC地址,目的MAC地址為Client的MAC地址,
4、Client將收到回復的報文,Client 認為得到正常的服務,而不會知道是哪一臺服務器處理的,
注意:如果跨網段,則報文通過路由器經由Internet回傳給用戶,
二、LVS—DR中的ARP問題
1、在LVS-DR負載均衡集群中,負載均衡器與節點服務器都要配置相同的VIP地址
2、在局域網中具有相同的IP地址,勢必會造成各服務器ARP通信的紊亂,
-
當ARP廣播發送到LVS-DR集群時,因為負載均衡器和節點服務器都是連接到相同網路上,它們都會接收到ARP廣播,
-
只有前端的負載均衡器進行回應,其他節點服務器不應該回應ARP廣播,
3、對節點服務器進行處理,使其不回應針對VIP的ARP請求
- 使用虛介面
lo:0承載VIP地址 - 設定內核引數arp_ignore=1:系統只回應目的IP為本地IP的ARP請求
4、RealServer回傳報文(源IP是VIP)經過路由器轉發,重新封裝報文時,需要先獲取路由器的MAC地址
5、發送ARP請求時,Linux默認使用IP包的源IP地址(即VIP)作為ARP請求包中的源IP地址,而不使用發送介面的IP地址
- 如:ens33介面

6、路由器收到ARP請求后,將更新ARP表項
7、原有的VIP對應Director的MAC地址會被更新為VIP對應RealServer的MAC地址

8、路由器根據ARP表項,會將新來的請求報文轉發給RealServer,導致Director的VIP失效
解決方法:
對節點服務器進行處理,設定內核引數arp_announce=2:系統不使用IP包的源地址來設定ARP請求的源地址,而選擇發送介面的IP地址,
9、解決ARP的兩個問題的設定方法
修改 /etc/sysctl.conf 檔案
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
三、DR模式、LVS負載均衡群集
(一)、資料包流向分析
(1)、客戶端發送請求到Director Server (負載均衡器),請求的資料報文(源IP是CIP, 目標IP是VIP)到達內核空間,
(2)、Director Server和Real Server在同一個網路中,資料通過二層資料鏈路層來傳輸,
(3)、內核空間判斷資料包的目標IP是本機VIP,此時IPVS (IP虛擬服務器) 比對資料包請求的服務是否是集群服務,是集群服務就重新封裝資料包,修改源MAC地址為Director Server 的MAC地址,修改目標MAC地址為Real Server 的MAC地址,源IP地址與目標IP地址沒有改變,然后將資料包發送給Real Server,
(4)、到達Real Server 的請求報文的MAC 地址是自身的MAC地址,就接收此報文,資料包重新封裝報文 (源IP地址為VIP,目標IP為CIP),將回應報文通過 lo 介面傳送給物理網卡然后向外發出,
(5) 、Real Server 直接將回應報文傳送到客戶端,
(二)、DR模式的特點
(1)、 Director Server 和Real Server 必須在同一-個物理網路中,
(2)、Real Server可以使用私有地址,也可以使用公網地址,如果使用公網地址,可以通過互聯網對RIP進行直接訪問,
(3)、Director Server作為群集的訪問入口,但不作為網關使用,
(4)、所有的請求報文經由Director Server, 但回復回應報文不能經過Director Server,
(5)、Real Server 的網關不允許指向Director Server IP,即 Real Server 發送的資料包不允許經過Director Server,
(6)、Real Server 上的 lo 介面配置 VIP的IP地址,
四、DR模式 LVS負載均衡群集部署
搭建環境:
DR 服務器(負載調度器)(centos7-5):192.168.200.50
Web 服務器1(centos7-6):192.168.200.60
Web 服務器2(centos7-7):192.168.200.70
NFS服務器(centos7-8):192.168.200.80
VIP:192.168.200.188
Windows10客戶端:192.168.200.200
1、配置負載調度器(192.168.182.11)
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
modprobe ip_vs #加載ip_vs模塊
cat /proc/net/ip_vs #查看ip_vs版本資訊
yum install -y ipvsadm
(1)、配置虛擬 IP 地址(VIP:192.168.200.188)
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0 ## 若隧道模式,復制為ifcfg-tun10
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.200.188
NETMASK=255.255.255.255
ifup ens33:0 #啟動單個網卡
ifconfig 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
或者
ipvsadm --save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
ipvsadm -C #清除原有策略
ipvsadm -A -t 192.168.200.188:80 -s rr
ipvsadm -a -t 192.168.200.188:80 -r 192.168.200.60:80 -g #若為隧道模式,-g替換為-i
ipvsadm -a -t 192.168.200.188:80 -r 192.168.200.70:80 -g
ipvsadm -ln #查看節點狀態,Route代表 DR模式
2、部署共享存盤(NFS服務器:192.168.182.44)
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum install -y nfs-utils rpcbind
systemctl start nfs.service
systemctl start rpcbind.service
systemctl enable nfs.service
systemctl enable rpcbind.service
mkdir /opt/gcc /opt/benet
chmod 777 /opt/gcc/ /opt/benet/
vim /etc/exports
/usr/share *(ro,sync)
/opt/panrj 192.168.182.0/24(rw,sync) #/24與()之間不能有空格
/opt/benet 192.168.182.0/24(rw,sync)
exportfs -rv
showmount -e
3、配置節點服務器(192.168.182.22 & 192.168.182.33)
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#將兩個節點服務器的網關和DNS注釋掉后重啟網卡,如果有網關服務器則指向網關服務器
(1)、配置虛擬 IP 地址(VIP:192.168.182.188)
#此地址僅用做發送 Web 回應資料包的源地址,并不需要監聽客戶機的訪問請求(改由調度器監聽并分發),因此使用虛介面 lo:0 來承載 VIP 地址,并為本機添加一條路有記錄,將訪問 VIP 的資料限制在本地,以避免通信紊亂,
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.182.188
NETMASK=255.255.255.255 #注意子網掩碼必須全為1
#NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
#BROADCAST=127.255.255.255
ONBOOT=yes
#NAME=loopback
ifup lo:0
ifconfig lo:0
route add -host 192.168.182.188 dev lo:0 #禁錮路由
route -n #查看路由
vim /etc/rc.local ##開啟自動添加路由條目的配置
/sbin/route add -host 192.168.182.188 dev lo:0
chmod +x /etc/rc.d/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
yum install -y nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl start httpd
----------192.168.182.22-----------------
mount.nfs 192.168.182.44:/opt/panrj /var/www/html/
echo 'this is panrj web!' > /var/www/html/index.html
#設為自動掛載
vim /etc/fstab
192.168.182.44:/opt/panrj /var/www/html nfs defaults,_netdev 0 0
mount -a
----------192.168.200.33-----------------
mount.nfs 192.168.182.44:/opt/benet /var/www/html/
echo 'this is benet web!' > /var/www/html/index.html
#設為自動掛載
vim /etc/fstab
192.168.182.44:/opt/benet /var/www/html nfs defaults,_netdev 0 0
mount -a
4、測驗 LVS 群集
在客戶端使用瀏覽器訪問: http://192.168.182.188/,默認網關指向 192.168.182.188

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