99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋果6袋
6
麥子學(xué)院

LVS-DR工作原理是怎樣的

發(fā)布時間:2016-08-02 21:54  回復(fù):0  查看:2665   最后回復(fù):2016-08-02 21:54  

學(xué)習(xí)LVS 或者已經(jīng)學(xué)習(xí)過LVS的同學(xué)都知道DRLVS比較重要的部分,今天我們就來聊聊DR

 

 

為了闡述方便,我根據(jù)官方原理圖另外制作了一幅圖,如下圖所示:VS/DR的體系結(jié)構(gòu):

LVS-DR工作原理是怎樣的

我將結(jié)合這幅原理圖及具體的實(shí)例來講解一下LVS-DR的原理,包括數(shù)據(jù)包、數(shù)據(jù)幀的走向和轉(zhuǎn)換過程。

官方的原理說明:Director接收用戶的請求,然后根據(jù)負(fù)載均衡算法選取一臺realserver,將包轉(zhuǎn)發(fā)過去,最后由realserver直接回復(fù)給用戶。

實(shí)例場景設(shè)備清單:


LVS-DR工作原理是怎樣的

說明:我這里為了方便,client是與vip同一網(wǎng)段的機(jī)器。如果是外部的用戶訪問,將client替換成gateway即可,因?yàn)?/span>IP包頭是不變的,變的只是源mac地址。

① client向目標(biāo)vip發(fā)出請求,Director接收。此時IP包頭及數(shù)據(jù)幀頭信息如下:


LVS-DR工作原理是怎樣的

② VS根據(jù)負(fù)載均衡算法選擇一臺activerealserver(假設(shè)是192.168.57.122),將此RIP所在網(wǎng)卡的mac地址作為目標(biāo)mac地址,發(fā)送到局域網(wǎng)里。此時IP包頭及數(shù)據(jù)幀頭信息如下:


LVS-DR工作原理是怎樣的

③ realserver(192.168.57.122)在局域網(wǎng)中收到這個幀,拆開后發(fā)現(xiàn)目標(biāo)IP(VIP)與本地匹配,于是處理這個報文。隨后重新封裝報文,發(fā)送到局域網(wǎng)。此時IP包頭及數(shù)據(jù)幀頭信息如下:


LVS-DR工作原理是怎樣的

④ 如果clientVS同一網(wǎng)段,那么client(192.168.57.135)將收到這個回復(fù)報文。如果跨了網(wǎng)段,那么報文通過gateway/路由器經(jīng)由Internet返回給用戶。

 

LVS/DR模式工作原理的常見問題

1. LVS/DR如何處理請求報文的,會修改IP包內(nèi)容嗎?

1.1 vs/dr本身不會關(guān)心IP層以上的信息,即使是端口號也是tcp/ip協(xié)議棧去判斷是否正確,vs/dr本身主要做這么幾個事:

1)接收client的請求,根據(jù)你設(shè)定的負(fù)載均衡算法選取一臺realserverip;

2)以選取的這個ip對應(yīng)的mac地址作為目標(biāo)mac,然后重新將IP包封裝成幀轉(zhuǎn)發(fā)給這臺RS

3)在hash table中記錄連接信息。

vs/dr做的事情很少,也很簡單,所以它的效率很高,不比硬件負(fù)載均衡設(shè)備差多少。

數(shù)據(jù)包、數(shù)據(jù)幀的大致流向是這樣的:client --> VS --> RS --> client

1.2 前面已作了回答,vs/dr不會修改IP包的內(nèi)容.

2. RealServer為什么要在lo接口上配置VIP?在出口網(wǎng)卡上配置VIP可以嗎?

2.1 既然要讓RS能夠處理目標(biāo)地址為vipIP包,首先必須要讓RS能接收到這個包。

lo上配置vip能夠完成接收包并將結(jié)果返回client。

2.2 答案是不可以將VIP設(shè)置在出口網(wǎng)卡上,否則會響應(yīng)客戶端的arp request,造成client/gateway arp table紊亂,以至于整個load balance都不能正常工作。

3. RealServer為什么要抑制arp幀?

這個問題在上一問題中已經(jīng)作了說明,這里結(jié)合實(shí)施命令進(jìn)一步闡述。我們在具體實(shí)施部署的時候都會作如下調(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

我相信很多人都不會弄懂它們的作用是什么,只知道一定得有。我這里也不打算拿出來詳細(xì)討論,只是作幾點(diǎn)說明,就當(dāng)是補(bǔ)充吧。

3.1

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

這兩條是可以不用的,因?yàn)?span>arp對邏輯接口沒有意義。

3.2 如果你的RS的外部網(wǎng)絡(luò)接口是eth0,那么

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

其實(shí)真正要執(zhí)行的是:

echo "1" >/proc/sys/net/ipv4/conf/eth0/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/eth0/arp_announce

所以我個人建議把上面兩條也加到你的腳本里去,因?yàn)槿f一系統(tǒng)里上面兩條默認(rèn)的值不是0,那有可能是會出問題滴。

arp_ignore:

定義對目標(biāo)地址為本地IPARP詢問不同的應(yīng)答模式0

0 - (默認(rèn)值): 回應(yīng)任何網(wǎng)絡(luò)接口上對任何本地IP地址的arp查詢請求

1 - 只回答目標(biāo)IP地址是來訪網(wǎng)絡(luò)接口本地地址的ARP查詢請求

2 -只回答目標(biāo)IP地址是來訪網(wǎng)絡(luò)接口本地地址的ARP查詢請求,且來訪IP必須在該網(wǎng)絡(luò)接口的子網(wǎng)段內(nèi)

3 - 不回應(yīng)該網(wǎng)絡(luò)界面的arp請求,而只對設(shè)置的唯一和連接地址做出回應(yīng)

4-7 - 保留未使用

8 -不回應(yīng)所有(本地地址)的arp查詢 

確定了向外發(fā)送ARP請求的發(fā)出地址 也即使VIP 地址

arp_announce - INTEGER

對網(wǎng)絡(luò)接口上,本地IP地址的發(fā)出的,ARP回應(yīng),作出相應(yīng)級別的限制:  

確定不同程度的限制,宣布對來自本地源IP地址發(fā)出Arp請求的接口

0 - (默認(rèn)在任意網(wǎng)絡(luò)接口(eth0,eth1,lo)上的任何本地地址

1 -盡量避免不在該網(wǎng)絡(luò)接口子網(wǎng)段的本地地址做出arp回應(yīng)當(dāng)發(fā)起ARP請求的源IP地址是被設(shè)置應(yīng)該經(jīng)由路由達(dá)到此網(wǎng)絡(luò)接口的時候很有用.此時會檢查來訪IP是否為所有接口上的子網(wǎng)段內(nèi)ip之一.如果改來訪IP 不屬于各個網(wǎng)絡(luò)接口上的子網(wǎng)段內(nèi),那么將采用級別2的方式來進(jìn)行處理.

2 - 對查詢目標(biāo)使用最適當(dāng)?shù)谋镜氐刂?/span>.在此模式下將忽略這個IP數(shù)據(jù)包的源地址并嘗試選擇與能與該地址通信的本地地址.首要是選擇所有的網(wǎng)絡(luò)接口的子網(wǎng)中外出 訪問子網(wǎng)中包含該目標(biāo)IP地址的本地地址如果沒有合適的地址被發(fā)現(xiàn),將選擇當(dāng)前的發(fā)送網(wǎng)絡(luò)接口或其他的有可能接受到該ARP回應(yīng)的網(wǎng)絡(luò)接口來進(jìn)行發(fā)送

限制了使用本地的vip地址作為優(yōu)先的網(wǎng)絡(luò)接口

 

4. LVS/DR load balancerdirector)與RS為什么要在同一網(wǎng)段中?

從第一個問題中大家應(yīng)該明白vs/dr是如何將請求轉(zhuǎn)發(fā)給RS的了吧?它是在數(shù)據(jù)鏈路層來實(shí)現(xiàn)的,所以director必須和RS在同一網(wǎng)段里面。

5. 為什么directoreth0接口除了VIP另外還要配一個ip(即DIP)?

5.1 如果是用了keepalived等工具做HA或者Load Balance,則在健康檢查時需要用到DIP。

5.2 沒有健康檢查機(jī)制的HA或者Load Balance則沒有存在的實(shí)際意義。

6. LVS/DR ip_forward需要開啟嗎?

不需要。因?yàn)?span>directorrealserver是同一個網(wǎng)段,無需開啟轉(zhuǎn)發(fā)。

7. directorvipnetmask一定要是255.255.255.255嗎?

lvs/dr里,directorvipnetmask 沒必要設(shè)置為255.255.255.255,也不需要再去

route add -host $VIP dev eth0:0

directorvip本來就是要像正常的ip地址一樣對外通告的,不要搞得這么特殊.

 

 

 

原文來自:博客園/Eric.S

您還未登錄,請先登錄

熱門帖子

最新帖子

?