(推薦在V200R003之前版本使用增加二層交換機方案和單設備物理鏈路環回方案)
網絡負載均衡NLB(Network Load Balance)是微軟在Windows Server上開發的多服務器羣集負載均衡特性。對於使用Windows Server的企業來說,實現設備與NLB服務器羣集的對接非常重要。本文描述了S系列交換機與NLB服務器羣集直連做網關的場景分析和配置過程。
背景知識
在NLB服務器羣集中,每臺服務器都有自己的IP地址和MAC地址。同時,NLB服務器羣集還有一個單播的虛擬IP地址和一個虛擬MAC地址,分別稱爲羣集IP地址和羣集MAC地址。NLB羣集通過該IP、MAC和做網關的S交換機直連互通,交換機通過三層轉發將網絡側的流量同時同時轉發一份給NLB集羣中每一臺服務器,然後NLB集羣服務器內部通過特定算法實現負載分擔,決定由哪一臺服務器向網絡側迴應報文。
目前,NLB服務器支持單播模式、組播模式和IGMP多播模式三種工作模式。
對接分析
三種工作模式下,S交換機與其對接做網關時存在的問題如下:
l 單播模式:單播羣集MAC地址以02bf開頭(單播MAC)。S交換機與單播模式的NLB服務器羣集對接時,對應羣集IP地址的ARP表項只能學習到一個出接口。因此,只有一臺NLB服務器會收到發往羣集IP地址的報文。
l 組播模式:組播羣集MAC地址以03bf開頭(組播MAC)。S交換機與組播模式的NLB服務器羣集對接時,由於缺省情況下,S交換機無法學習到MAC地址是組播MAC的ARP表項。通過使能動態學習組播MAC的功能或靜態ARP表項綁定的方式,也只能學習到一個出接口。因此,只有一臺NLB服務器會收到發往羣集IP地址的報文。
l IGMP多播模式:IGMP多播羣集MAC地址以0100-5e開頭。目前,S交換機不支持與工作在IGMP多播模式的NLB服務器對接。
如上分析,必須解決只能發送一臺服務器的問題,S交換機和NLB服務器才能實現對接。
對接方案
多端口ARP方案:多端口ARP可以實現將發往服務器羣集的報文同時發送給羣集中所有的服務器。多端口ARP主要通過靜態ARP表項將NLB羣集IP地址與NLB服務器羣集使用的共同MAC地址進行綁定,並且通過多端口MAC表項將NLB服務器羣集使用的共同MAC地址與設備上與服務器相連的出接口進行綁定。這樣發往服務器羣集IP地址的數據報文會從設備上所有與服務器相連的出接口發送出去。 這種方案適用於S交換機V200R003C00及以後版本。
對於V200R003之前的版本,可以通過如下兩種方式實現對接:
l 在交換機與NLB服務器之間增加二層交換機(當NLB服務器工作在組播模式時,需要在交換機上使能ARP動態學習組播MAC的功能或者配置靜態ARP表項)。這種方法需要多增加一臺二層交換機,適用於設備資源充足的情況。
l 物理鏈路環回方法。這種方法與增加二層交換機的方法相比,配置較複雜。
對接案例1——多端口ARP方案(V200R003及以後版本)
上一期我們已經介紹了這個方案的實現過程,具體請參見:http://hanjh8.blog.51cto.com/742232/1582041
Note:部分盒式款型不支持,帖子裏都有介紹。
對接案例2——增加二層交換機
對於不支持多端口ARP的設備形態,在設備條件滿足的情況下,通過增加二層交換機的方法,可以實現設備與NLB服務器羣集的對接。如下圖所示,在三層交換機Switch下增加二層交換機LSW,接口GE0/0/1所屬VLAN的VLANIF接口作爲NLB服務器羣集的網關。由Switch發往羣集IP地址的報文到達LSW後,會在VLAN10內廣播,從而實現所有NLB服務器都會收到發往羣集IP地址的報文。
爲什麼報文到了二層交換機以後會在VLAN 10內廣播?爲什麼不是查找MAC地址進行單播轉發?
當NLB服務器工作在單播模式的時候,NLB羣集中每一臺服務器的網卡的MAC地址會被替換成一個相同的羣集MAC地址,他們通過此羣集MAC地址來接受外部的連接請求。這個時候不同的服務器給交換機發送數據包的時候源MAC地址是相同的,而交換機上不允許不同的接口學習到相同的MAC地址,這會產生MAC地址漂移,導致轉發報文異常。
爲了解決上述問題,NLB服務器又引入了一個MaskSourceMac功能,它會根據每一臺服務器的主機ID來更改外送數據包的源MAC地址。將羣集MAC地址中最高第二組字符改爲主機ID,然後將此修改過的MAC地址作爲源MAC地址發送數據包。例如,羣集MAC地址爲02bf-0a80-f6fc,服務器id爲01,那麼該臺服務器外發數據報文的時候源MAC地址爲0201-0a80-f6fc。
啓用MaskSourceMac功能以後,服務器給交換機發送數據包的時候使用的源MAC地址是在羣集MAC地址基礎上根據主機ID修改後的MAC地址,而不同的主機ID是不一樣的,這樣就使得交換機連接服務器的各個端口上學習到的MAC地址不一樣,就避免了MAC地址漂移的現象。而網關設備在發送針對羣集IP的ARP請求的時候得到的迴應是羣集MAC,這個羣集MAC地址不會學習在交換機的任何端口上。
因此,報文到達交換機以後,報文的目的MAC是羣集MAC,由於交換機查找不到MAC地址表項,按照未知單播報文處理,所以在VLAN內進行廣播。
以上分析是對接工作在單播模式的NLB服務器,如果NLB服務器工作在組播模式,其集羣MAC是組播MAC,交換機無法學習到MAC地址是組播MAC的ARP表項。因此,NLB服務器工作在組播模式時,需要在做網關的Switch上使能ARP動態學習組播MAC的功能或配置靜態ARP表項(表項的IP地址爲羣集IP地址、MAC地址爲羣集組播MAC地址、出接口爲網關設備上連接二層交換機的接口GE0/0/1)。
ARP動態學習組播MAC配置命令:arp learning multicast enable,配置在網關設備連接二層交換機的接口上。
靜態ARP表項配置命令(以上圖爲例):arp static 羣集IP 羣集MAC vid 10 interface gigabitethernet 0/0/1
對接案例3——單臺設備物理鏈路環回
本方案適用於S系列交換機所有產品形態及版本。但這個方案需要佔用物理端口資源,支持多端口ARP的情況下,推薦使用多端口ARP。
物理鏈路環回方案和案例2“增加二層交換機”的方案類似,物理鏈路環回以後邏輯上交換機被分成了兩塊,一部分是二層交換機一部分是三層做網關的交換機,原理就不再贅述了。
組網需求
如下圖所示,Switch通過接口GE0/0/1、GE0/0/2和GE0/0/3分別與三臺NLB服務器直連。NLB服務器羣集工作在單播模式下,羣集IP地址爲10.128.246.252/24,羣集MAC地址爲02bf-0a80-f6fc。Switch與客戶端Client之間路由可達。
當客戶端Client訪問NLB服務器羣集時,交換機Switch能夠將發往羣集IP地址的報文發送給羣集中的所有NLB服務器。
通過物理鏈路環回方法實現對接的配置思路如下:
1. 配置與NLB服務器直連的接口GE0/0/1~GE0/0/3加入VLAN100。
2. 去使能自環接口GE0/0/4和GE0/0/5的STP/RSTP/VBST/MSTP功能,並以Access類型分別加入VLAN100和VLAN200。
3. 配置三層接口VLANIF200的IP地址,VLANIF200作爲NLB服務器羣集的網關。
4. 連接自環接口GE0/0/4和GE0/0/5。
1. 配置與NLB直連的接口GE0/0/1~GE0/0/3以Access方式加入VLAN100
<Quidway> system-view
[Quidway] sysname Switch
[Switch] vlan batch 100 200
[Switch] interface gigabitethernet 0/0/1
[Switch-GigabitEthernet0/0/1] port link-type access
[Switch-GigabitEthernet0/0/1] quit
[Switch] interface gigabitethernet 0/0/2
[Switch-GigabitEthernet0/0/2] port link-type access
[Switch-GigabitEthernet0/0/2] quit
[Switch] interface gigabitethernet 0/0/3
[Switch-GigabitEthernet0/0/3] port link-type access
[Switch-GigabitEthernet0/0/3] quit
[Switch] vlan 100
[Switch-vlan100] port gigabitethernet 0/0/1 to 0/0/3
[Switch-vlan100] quit
2. 配置自環接口GE0/0/4和GE0/0/5
# 去使能接口GE0/0/4和GE0/0/5的STP/RSTP/VBST/MSTP功能。
[Switch] interface gigabitethernet 0/0/4
[Switch-GigabitEthernet0/0/4] undo stp enable
[Switch-GigabitEthernet0/0/4] quit
[Switch] interface gigabitethernet 0/0/5
[Switch-GigabitEthernet0/0/5] undo stp enable
[Switch-GigabitEthernet0/0/5] quit
# 配置接口GE0/0/4和GE0/0/5以Access類型分別加入VLAN100和VLAN200。
[Switch] interface gigabitethernet 0/0/4
[Switch-GigabitEthernet0/0/4] port link-type access
[Switch-GigabitEthernet0/0/4] port default vlan 100
[Switch-GigabitEthernet0/0/4] quit
[Switch] interface gigabitethernet 0/0/5
[Switch-GigabitEthernet0/0/5] port link-type access
[Switch-GigabitEthernet0/0/5] port default vlan 200
[Switch-GigabitEthernet0/0/5] quit
3. 配置NLB服務器羣集網關的IP地址
[Switch] interface vlanif 200
[Switch-Vlanif200] ip address 10.128.246.250 24
[Switch-Vlanif200] quit
4. 連接自環接口GE0/0/4和GE0/0/5
上述配置完成後,進行物理連線。
5. 驗證配置結果
上述配置完成後,發往NLB服務器羣集IP地址的報文Server_1~Server_3都能收到。
配置注意事項
當NLB服務器羣集工作在單播模式時,不需要在交換機上配置靜態ARP表項(以上舉例是這種情況);當NLB服務器羣集工作在組播模式時,需要在交換機上配置靜態ARP表項(IP地址和MAC都是NLB服務器的羣集IP和MAC,出接口爲VLAN200所在的接口,以上舉例中就是GE0/0/5)。