LVS-DR數(shù)據(jù)包的流向分析
1.客戶端發(fā)送請求到負(fù)載均衡器,請求的數(shù)據(jù)報文到達內(nèi)核空間;
2.負(fù)載均衡服務(wù)器和正式服務(wù)器在同一個網(wǎng)絡(luò)中,數(shù)據(jù)通過二層數(shù)據(jù)鏈路層來傳輸;
3.內(nèi)核空間判斷數(shù)據(jù)包的目標(biāo)IP是本機VIP,此時IP虛擬服務(wù)器比對數(shù)據(jù)包請求的服務(wù)是否是集群服務(wù),是、則重新封裝數(shù)據(jù)包;修改源MAC地址為負(fù)載均衡服務(wù)器的MAC地址,目標(biāo)MAC地址為真實服務(wù)器的MAC地址,源IP地址和目標(biāo)IP地址不變,然后將數(shù)據(jù)包發(fā)送給真實服務(wù)器
4.如果到達真實服務(wù)器的請求報文的MAC地址是自身的MAC地址,就接收此報文;數(shù)據(jù)包重新封裝報文(源 IP 地址為 VIP,目標(biāo) IP 為 CIP),將響應(yīng)報文通過 lo 接口傳送給物理網(wǎng)卡然后向外發(fā)出
5.真實服務(wù)器直接將響應(yīng)報文傳送到客戶端
????Clint向目標(biāo)VIP發(fā)出請求,Director(負(fù)載均衡器)接收
?? ?IP包頭及數(shù)據(jù)幀頭部信息
LVS-DR中的ARP故障
1.ARP通信紊亂
防止網(wǎng)關(guān)路由器發(fā)送ARP廣播時調(diào)度器和節(jié)點都進行響應(yīng),導(dǎo)致ARP通信紊亂;
可以不對非本地物理網(wǎng)卡的arp請求進行響應(yīng),使用虛擬接口lo:0承載VIP地址
????????在LVS-DR負(fù)載均衡群集中,負(fù)載均衡器與節(jié)點服務(wù)器都要配置相同的VIP地址,在局域網(wǎng)中具有相同的IP地址,會造成各服務(wù)器ARP通信的紊亂;
????????當(dāng)ARP廣播發(fā)送到LVS-DR集群時,因為負(fù)載均衡器和節(jié)點服務(wù)器都是連接到相同的網(wǎng)絡(luò)上,它們都會接收到ARP廣播;現(xiàn)實應(yīng)該只有前端的負(fù)載均衡器進行響應(yīng),其他節(jié)點服務(wù)器不應(yīng)該響應(yīng)ARP廣播。
對節(jié)點服務(wù)器進行處理,使其不響應(yīng)針對VIP的ARP請求:
????????使用虛擬接口lo:0承載VIP地址
? ? ? ? 設(shè)置內(nèi)核參數(shù)arp_ignore=1:代表系統(tǒng)只響應(yīng)目的IP為本地IP的ARP請求
2.ARP_announce-2
系統(tǒng)不使用響應(yīng)數(shù)據(jù)的源IP地址(VIP)來作為本機進行的arp請求報文的源IP地址,
而是使用發(fā)送報文的物理網(wǎng)卡的IP地址作為ARP請求報文的源IP地址,
這樣可以防止網(wǎng)關(guān)路由器接收到源IP地址為VIP的ARP請求,報文后的又去更新ARP緩存表,導(dǎo)致外網(wǎng)再去發(fā)送請求時,數(shù)據(jù)包無法到達調(diào)度器
RS返回報文(源IP是VIP)經(jīng)路由器轉(zhuǎn)發(fā),重新封裝報文時,需要想獲取路由器的MAC地址,發(fā)送ARP請求時,Linux默認(rèn)使用IP包的源IP地址(即VIP)作為ARP請求包中的源IP地址,此時路由器的路由表進行更新,VIP的MAC地址由原先的均衡器變?yōu)楣?jié)點服務(wù)器,路由器根據(jù)ARP表項,會將新來的請求報文轉(zhuǎn)發(fā)給節(jié)點服務(wù)器,導(dǎo)致均衡器的VIP失效,又會造成VIP的紊亂
解決辦法:
????????對節(jié)點服務(wù)器進行處理,設(shè)置內(nèi)核參數(shù)arp_announce=2:代表不使用IP包的源地址來設(shè)置ARP請求的源地址,而選擇發(fā)送ens33接口的IP地址
修改/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
LVS-DR的特性
1.負(fù)載均衡服務(wù)器(DS)和真實服務(wù)器(RS)必須在同一個物理網(wǎng)絡(luò)中
2.RS可以使用私有地址,也可以使用公網(wǎng)地址,如果使用公網(wǎng)地址,可以通過互聯(lián)網(wǎng)對RIP直接進行訪問
3.DS作為群記得訪問入口,但不作為網(wǎng)關(guān)使用
4.所有請求報文經(jīng)由DS,但回復(fù)響應(yīng)報文不能經(jīng)過DS
5.RS的網(wǎng)關(guān)不允許指向DS IP,即RS發(fā)送的數(shù)據(jù)包不允許經(jīng)過DS
6.RS上的lo接口配置VIP的IP地址
LVS的優(yōu)點:負(fù)載均衡器只負(fù)責(zé)將請求包分發(fā)給物理服務(wù)器,而物理服務(wù)器將響應(yīng)包直接發(fā)送給用戶,所以負(fù)載均衡器能處理很巨大的請求流量;這種方式,一臺負(fù)載均衡能為超過100M的物理服務(wù)器服務(wù),負(fù)載均衡器不再是系統(tǒng)瓶頸;使用LVS-DR方式,如果你的負(fù)載均衡器擁有100M全雙工網(wǎng)卡的話,使用LVS就能達到1G甚至更高的吞吐量
5萬以內(nèi)用Nginx,5-10萬使用
LVS的缺點:所有的調(diào)度器和節(jié)點服務(wù)器在同一個廣播域,必須在同一個物理網(wǎng)絡(luò)中,不支持異地容災(zāi)
.
LVS-DR負(fù)載均衡群集部署
流程圖:(待修改ing)
設(shè)備準(zhǔn)備:
DR 服務(wù)器:192.168.220.130
Web 服務(wù)器1:192.168.220.111
Web 服務(wù)器2:192.168.220.112
vip:192.168.220.135
NFS共享存儲:192.168.220.131
1.配置負(fù)載調(diào)度器(192.168.220.130)
#關(guān)閉防火墻和安全機制
systemctl stop firewalld.service
setenforce 0
#安裝加載ip_vs
modprobe ip_vs
cat /proc/net/ip_vs
#安裝ipvsadm服務(wù)
yum -y install ipvsadm
(1)配置虛擬 IP 地址(VIP:192.168.220.135)?
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.220.135
NETMASK=255.255.255.255
#啟動虛擬網(wǎng)卡ens33:0
ifup ens33:0
#查看虛擬網(wǎng)卡ens33:0當(dāng)前狀態(tài)
ifconfig ens33:0
#ifup 與 ifdown 會直接到 /etc/ sysconfig/network-scripts 目錄下搜索對應(yīng)的配置文件,進行啟動與關(guān)閉
(2)調(diào)整 proc 響應(yīng)參數(shù)
#由于 LVS 負(fù)載調(diào)度器和各節(jié)點需要共用 VIP 地址,需要關(guān)閉 icmp 的重定向,不充當(dāng)路由器。
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)配置負(fù)載分配策略
#保存重定向,開啟ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl restart ipvsadm
ipvsadm -C #清空所有規(guī)則
ipvsadm -A -t 192.168.220.135:80 -s rr #配置虛擬IP;rr為普通輪詢
ipvsadm -a -t 192.168.220.135:80 -r 192.168.220.111:80 -g #-g表示DR模式;若隧道模式,-g替換為-i
ipvsadm -a -t 192.168.220.135:80 -r 192.168.220.112:80 -g
#啟動ipvsadm
ipvsadm
#查看節(jié)點狀態(tài),Route代表 DR模式
ipvsadm -ln
2.部署共享存儲(NFS服務(wù)器:192.168.220.131)
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
/usr/share *(ro,sync)
/opt/kgc 192.168.220.0/24(rw,sync)
/opt/benet 192.168.220.0/24(rw,sync)
systemctl start nfs.service
systemctl start rpcbind.service
3.配置節(jié)點服務(wù)器(192.168.220.111、192.168.220.112)
#此地址僅用作發(fā)送 Web響應(yīng)數(shù)據(jù)包的源地址,并不需要監(jiān)聽客戶機的訪問請求(改由調(diào)度器監(jiān)聽并分發(fā))。因此使用虛接口 lo∶0 來承載 VIP 地址,并為本機添加一條路由記錄,將訪問 VIP 的數(shù)據(jù)限制在本地,以避免通信紊亂。文章來源:http://www.zghlxwxcb.cn/news/detail-657978.html
systemctl stop firewalld.service
setenforce 0
(1)配置虛擬 IP 地址(VIP:192.168.220.135)
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.220.135
NETMASK=255.255.255.255 #注意:子網(wǎng)掩碼必須全為 1
#開啟虛擬網(wǎng)卡lo:0,查看虛擬網(wǎng)卡lo:0的狀態(tài)
ifup lo:0
ifconfig lo:0
#添加規(guī)則
route add -host 192.168.220.135 dev lo:0
vim /etc/rc.local
/sbin/route add -host 192.168.220.135 dev lo:0
#給文件執(zhí)行權(quán)限
chmod +x /etc/rc.d/rc.local
(2)調(diào)整內(nèi)核的 ARP 響應(yīng)參數(shù)以阻止更新 VIP 的 MAC 地址,避免發(fā)生沖突
vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1 #系統(tǒng)只響應(yīng) 目的IP為本地IP的ARP請求
net.ipv4.conf.lo.arp_announce = 2 #系統(tǒng)不使用IP包的源地址來設(shè)置ARP請求的源地址,而選擇發(fā)送接口的IP地址
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
#刷新
sysctl -p
yum -y install nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl start httpd
--192.168.220.111---
#掛載
mount.nfs 192.168.220.111:/opt/kgc /var/www/html
echo 'this is kgc web!' > /var/www/html/index.html
--192.168.220.112---
#掛載
mount.nfs 192.168.220.112:/opt/benet /var/www/html
echo 'this is benet web!' > /var/www/html/index.html
4.測試 LVS 群集
在客戶端使用瀏覽器訪問 http://192.168.220.135文章來源地址http://www.zghlxwxcb.cn/news/detail-657978.html
到了這里,關(guān)于【LVS】2、部署LVS-DR群集的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!