LVS之DR模式部署

1、LVS-DR數據包流向分析

爲方便進行原理分析,將Client與羣集機器放在同一網絡中,數據包流經的路線爲1-2-3-4
在這裏插入圖片描述
一、Client 向目標 VIP 發出請求,Director(負載均衡器)接收。此時源MAC 地址爲Client MAC地址,目標MAC地址爲 調度器Director 的MAC地址。
二、Director 根據負載均衡算法選擇 RealServer_1,不修改也不封裝IP報文,而是將數據幀的MAC地址改成RealServer_1的MAC地址,而後在局域網上發送。此時源MAC地址爲Director的MAC地址,目的MAC地址爲RealServer_1的MAC地址。
三、RealServer_1收到這個幀,解封裝後發現目標IP與本機匹配(RealServer事先綁定了VIP),因而處理這個報文。隨後從新封裝報文,將響應報文經過 lo 接口傳送給物理網卡而後向外發出。此時源MAC地址爲RealServer_1的MAC地址,目的MAC地址爲Client的MAC地址。
四、Client將收到回覆的報文。Client 認爲獲得正常的服務,而不會知道是哪一臺服務器處理的。
注意:若是跨網段,則報文經過路由器經由Internet返回給用戶html

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地址,如:ens33
六、路由器收到ARP請求後,將更新ARP表項
七、原有的VIP對應Director的MAC地址會被更新爲VIP對應RealServer的MAC地址
八、路由器根據ARP表項,會將新來的請求報文轉發給RealServer,致使Director的VIP失效
解決方法:
對節點服務器進行處理,設置內核參數arp_announce=2:系統不使用IP包的源地址來設置ARP請求的源地址,而選擇發送接口的IP地址。
解決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

3、LVS負載均衡羣集之DR模式

一、數據包流向分析
(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地址。web

4、簡單小實驗LVS-DR模式

########DR模式LVS負載均衡羣集部署#########
DR 服務器:192.168.241.3
Web 服務器1:192.168.241.4
Web 服務器2:192.168.241.5
vip :192.168.241.200
客戶端:192.168.241.6
一、配置負載調度器(192.168.241.3)
systemctl stop firewalld.service
setenforce 0
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm

(1)配置虛擬IP地址(VIP:192.168.241.200)
cd /etc/sysconfig/network-scripts
#若隧道模式,複製爲ifcfg-tunl0
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.241.200
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
systemctl start ipvsadm
ipvsadm -C
ipvsadm -A -t 192.168.241.200:80 -s rr
ipvsadm -a -t 192.168.241.200:80 -r 192.168.241.4:80 -g		#若隧道模式,-g替換爲-i
ipvsadm -a -t 192.168.241.200:80 -r 192.168.241.5:80 -g
ipvsadm
ipvsadm -ln				#查看節點狀態,Router表明DR模式
二、部署共享存儲(NFS服務器:192.168.241.6)
systemctl stop firewalld.service
setenforce 0

yum -y install nfs-utils rpcbind
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benet

vim /etc/exports
/opt/kgc 192.168.241.0/24(rw,sync,no_root_squash)
/opt/benet 192.168.241.0/24(rw,sync,no_root_squash)
echo 'this is benet web' > /opt/benet/index.html
echo 'this is kgc web' > /opt/kgc/index.html

systemctl start nfs
systemctl start rpcbind
三、配置節點服務器(192.168.241.四、192.168.241.5)
systemctl stop firewalld.service
setenforce 0
(1)配置虛擬IP地址(VIP:192.168.241.200)
#此地址僅用做發送Web響應數據包的源地址,並不須要監聽客戶機的訪問請求(改由調度器監聽並分發)。所以使用需接口lo:0來承載VIP地址,併爲本機添加一條路由記錄,將訪問VIP的數據限制在本地,以免通訊紊亂
cd /etc/sysconfig/network-scripts		##須要將ens33的網關和DNS註釋
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.241.200
NETMASK=255.255.255.255
ifup lo:0
ifconfig lo:0

route add -host 192.168.241.200 dev lo:0
或者vim /etc/rc.local
/sbin/route add -host 192.168.241.200 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 -y install nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl start httpd

####192.168.241.4
mount 192.168.241.6:/opt/kgc /var/www/html


####192.168.241.5
mount 192.168.241.6:/opt/benet /var/www/html

四、測試LVS羣集
在客戶端使用瀏覽器訪問http://192.168.241.200,默認網關指向192.168.241.200
在這裏插入圖片描述算法

相關文章
相關標籤/搜索