負載均衡熱備模式下服務器網卡的主備切換問題

今天討論拓撲中負載均衡部署在冗餘網絡結構下,服務器雙網卡的切換問題。

122727326.png

圖一

圖一拓撲中四臺服務器與負載均衡直接相連,每臺服務器雙網卡各連接一臺負載均衡,負載均衡熱備模式部署,服務器雙網卡也綁定爲主備模式。當負載均衡發生主備切換時,服務器的主備網卡也跟隨切換。其實這樣的應用需求非常的普遍,但實際網絡拓撲更常見是的如圖二所示結構。服務器不直接與負載均衡連接,服務器數量也不必受到負載均衡物理接口數量的限制,這樣的網絡架構,一對負載均衡設備可以爲幾百臺服務器提供應用交付。

122836349.png

圖二

先看看圖二中主備切換時,服務器網卡是如何切換的。服務器雙網卡綁定爲主備模式,主備網卡的切換條件通常配置爲鏈路檢測,發現鏈路中斷時,主備網卡自動切換。從服務器的角度看,冗餘鏈路的主備切換分兩種,第一種,服務器到交換機連接鏈路down掉的主備切換,交換機死機和鏈路故障都屬於這類切換,此時服務器網卡也會進行主備切換;第二種,連接鏈路是up時的主備切換,此時服務器主備網卡不發生切換,但交換機之間啓用VRRPHRSP協議,兩臺交換機之間的連接線除了傳輸交換機的狀態信息外,也可以傳輸業務數據。服務器數據報文傳輸鏈路如圖三所示,網絡發生主備切換時,服務器依然能正常接入網絡。

123006784.png

圖三

但第二種主備切換髮生在圖一拓撲中時就會遇到問題,原因是負載均衡HA心跳線只傳輸ha相關數據,不傳輸業務數據,因此當負載均衡主備切換,而服務器網卡不能主備切換時,服務器是無法接入網絡的。

這裏提供兩種解決方案:

方案一、改變服務器雙網卡主備模式的檢測方法:以linux服務器爲例,服務器雙網卡綁定在網絡上常見的配置參數如下,millmon=100是對鏈路狀態檢測的配置項,這也是上述無法主備切換的原因。

/etc/modprobe.d/bonding.conf 

alias bond0 bonding

options bond0 mode=1 miimon=200

mode=1表示主備模式

millmon=100,表示每100ms監測一次鏈路連接狀態

 

可以將鏈路狀態檢測改爲arp請求檢測,當負載均衡發生主備切換時,主網卡向原來的主負載均衡發送arp請求,由於floating-ip已經漂移到新的主設備上,原來的主設備不會迴應服務器的arp請求,服務器arp請求超時後,主備網卡發生切換。服務器雙網卡綁定檢測方式更改如下:

/etc/modprobe.d/bonding.conf 

alias bond0 bonding

options bond0 mode=1 arp_interval=60 arp_ip_target=2.2.2.1 arp_validate=all

mode=1表示主備模式

arp_interval =100表示100毫秒發一次arp請求

arp_ip_target=2.2.2.1表示主網卡發出的arp請求,IP一般是服務器網關地址,這網關地址在圖一拓撲中是負載均衡的floating-ip

arp_validate=all arp保持驗證,一定要配置不然無法實現預期的網卡切換。

方案二、負載均衡實現服務器vlan的數據透傳:當服務器受操作系統或其他原因限制,無法通過更改服務器配置實現雙網卡主備切換時,可以採用此解決方案。兩臺負載均衡設備之間除了HA心跳線,還需要一條打通主備負載均衡上服務器段vlan的鏈路,最簡單方法是在兩臺設備之間再增加一條連接鏈路,其作用是實現如圖三所示的數據傳輸。

負載均衡新增配置較爲簡單,主備設備只需將新增鏈路接口劃入服務器所在vlan,接口類型爲tagged即可。

vlan 10

untagged ethernet 1 to 4

tagged ethernet 7

router-interface ve 10

name " servers"

從整體上來說,方案一實現服務器雙網卡的主備切換更爲合理,方案二是非常規環境下,負載均衡設備完全通過自身配置調整的解決之道,是沒有辦法的辦法。

(ZWM)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章