之前一篇LVS-DR模式原理圖文詳解介紹了該模式的工作原理,以下的FAQs解答了有關(guān)LVS/DR模式工作原理的常見(jiàn)問(wèn)題。
1. LVS/DR如何處理請(qǐng)求報(bào)文的,會(huì)修改IP包內(nèi)容嗎?
1.1 vs/dr本身不會(huì)關(guān)心IP層以上的信息,即使是端口號(hào)也是tcp/ip協(xié)議棧去判斷是否正確,vs/dr本身主要做這么幾個(gè)事:
1)接收client的請(qǐng)求,根據(jù)你設(shè)定的負(fù)載均衡算法選取一臺(tái)realserver的ip;
2)以選取的這個(gè)ip對(duì)應(yīng)的mac地址作為目標(biāo)mac,然后重新將IP包封裝成幀轉(zhuǎn)發(fā)給這臺(tái)RS;
3)在hash table中記錄連接信息。
vs/dr做的事情很少,也很簡(jiǎn)單,所以它的效率很高,不比硬件負(fù)載均衡設(shè)備差多少。
數(shù)據(jù)包、數(shù)據(jù)幀的大致流向是這樣的:client --> VS --> RS --> client
1.2 前面已作了回答,vs/dr不會(huì)修改IP包的內(nèi)容.
2. RealServer為什么要在lo接口上配置VIP?在出口網(wǎng)卡上配置VIP可以嗎?
2.1 既然要讓RS能夠處理目標(biāo)地址為vip的IP包,首先必須要讓RS能接收到這個(gè)包。
在lo上配置vip能夠完成接收包并將結(jié)果返回client。
2.2 答案是不可以將VIP設(shè)置在出口網(wǎng)卡上,否則會(huì)響應(yīng)客戶(hù)端的arp request,造成client/gateway arp table紊亂,以至于整個(gè)load balance都不能正常工作。
3. RealServer為什么要抑制arp幀?
這個(gè)問(wèn)題在上一問(wèn)題中已經(jīng)作了說(shuō)明,這里結(jié)合實(shí)施命令進(jìn)一步闡述。我們?cè)诰唧w實(shí)施部署的時(shí)候都會(huì)作如下調(diào)整:
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
我相信很多人都不會(huì)弄懂它們的作用是什么,只知道一定得有。我這里也不打算拿出來(lái)詳細(xì)討論,只是作幾點(diǎn)說(shuō)明,就當(dāng)是補(bǔ)充吧。
3.1
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
這兩條是可以不用的,因?yàn)閍rp對(duì)邏輯接口沒(méi)有意義。
3.2 如果你的RS的外部網(wǎng)絡(luò)接口是eth0,那么
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announce
其實(shí)真正要執(zhí)行的是:
echo "1" >/proc/sys/net/ipv4/conf/eth0/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/eth0/arp_announce
所以我個(gè)人建議把上面兩條也加到你的腳本里去,因?yàn)槿f(wàn)一系統(tǒng)里上面兩條默認(rèn)的值不是0,那有可能是會(huì)出問(wèn)題滴。
4. LVS/DR load balancer(director)與RS為什么要在同一網(wǎng)段中?
從第一個(gè)問(wèn)題中大家應(yīng)該明白vs/dr是如何將請(qǐng)求轉(zhuǎn)發(fā)給RS的了吧?它是在數(shù)據(jù)鏈路層來(lái)實(shí)現(xiàn)的,所以director必須和RS在同一網(wǎng)段里面。
5. 為什么director上eth0接口除了VIP另外還要配一個(gè)ip(即DIP)?
5.1 如果是用了keepalived等工具做HA或者Load Balance,則在健康檢查時(shí)需要用到DIP。
5.2 沒(méi)有健康檢查機(jī)制的HA或者Load Balance則沒(méi)有存在的實(shí)際意義。
6. LVS/DR ip_forward需要開(kāi)啟嗎?
不需要。因?yàn)閐irector跟realserver是同一個(gè)網(wǎng)段,無(wú)需開(kāi)啟轉(zhuǎn)發(fā)。
7. director的vip的netmask一定要是255.255.255.255嗎?
lvs/dr里,director的vip的netmask 沒(méi)必要設(shè)置為255.255.255.255,也不需要再去
route add -host $VIP dev eth0:0
director的vip本來(lái)就是要像正常的ip地址一樣對(duì)外通告的,不要搞得這么特殊.
8. LVS/DR如何進(jìn)行tcp的三次握手?
應(yīng)該不用再多說(shuō)的,有興趣單獨(dú)交流吧。
聯(lián)系客服