ESXI主機網絡負載均衡(基於路由,MAC,IP HASH)

簡介: 
1) 3
種類型的VMware網絡都支持NIC Teaming ,詳細請參考《VMWare ESX Server中的網絡設置(VMkernel, Service ConsoleVM port group
2) uplink
連接到那些物理交換機的端口都必須在同一個廣播域中。(也就是必須在同一個VLAN中,不能跨路由)
3)
如果uplink要配置VLAN,則每個uplink必須都配置成VLAN Trunk並且具有相同的VLAN配置。
4) VMware
的負載均衡(Load Balancing)只是出站(Outbound)的負載均衡,因此要做到Inbound的負載均衡,必須在物理交換機上做同樣IP Hash方式的配置。
5
NIC TeamingLoad Balancing和一些高級路由算法的Load Balancing不同,它不是按照Teaming中網卡上通過的數據流量來負載均衡,而是根據網卡上的連接(connection)來進行負載均衡。
VMware
3種負載均衡 
VMware
NIC Teaming Load Balancing策略有3種。
(1)
基於端口的負載均衡(默認)
(2)
基於源MAC的負載均衡
(3)
基於IP hash的負載均衡 
wKiom1QJJx2iVLgyAAFQepNUTtU135.jpg

1. 基於端口的負載均衡 (Route based on theoriginating virtual port ID) 
這種方式下,負載均衡是基於vPort ID的。一個vPortHost上的一個pNIC(vSwitch角度看就是某個uplink)捆綁在一起,只有當這個pNIC失效的時候,才切到另外的pNIC鏈路上。這種方式的負載均衡只有在vPort數量大於pNIC的數量時才生效。
什麼是vport?一個VM上的vNIC或者某一個VMKernel或者Service Console的某個vswif。用一個圖來直觀的表述,vPort在下圖中顯示爲vSwitch上左側的那些綠點。而pNIC在圖中顯示爲右邊的vmnicX
wKiom1QJJzOgP8O9AAFGekAEgW0247.jpg

對於VM來說,因爲某臺VMvNIC是捆綁在某一個pNIC上的,也就是說這臺VM(如果只有一個vNIC的話)對外的數據流量將固定在某一個pNIC上。這種負載均衡是在VM之間的均衡,對於某一臺VM而言,其uplink的速率不可能大於單個pNIC的速率。此外,只有當VM的數量足夠多,並且這些VM之間的數據流量基本一致的情況下,Host上的NIC TeamingLoad Balancing才較爲有效。對於以下這些極端情況,基於端口方式的負載均衡根本不起作用或者效果很差,充其量只能說是一種端口冗餘。
(1)Host
上只有一臺只具有單vNICVM (此時完全沒有Load balancing)
(2)Host
上的VM數量比pNIC(比如有4VM但是Teaming中有5pNIC,此時有一塊pNIC完全沒用上,其他每個vNIC各自使用一塊pNIC,此時也沒有任何負載均衡實現)
(3)Host
上雖然有多臺VM,但是99%的網絡流量都是某一臺VM產生的
這裏還可以參考VMware ESXi5負載均衡分析
最近對ESXi5負載均衡策略中的默認基於源虛擬端口ID的路由做了一些分析,非常有意思分享給大家。
先描述一下場景:
一臺ESXi5服務器有6VM(姑且用VM1VM2VM3VM4VM5VM6來稱呼),兩塊物理網卡做負載均衡(依次顯示vmnic0vmnic1默認的做法,兩網卡分別依次對應到對端Cisco 2950上的fa0/1fa0/2口上,通過分析cisco2950MAC表來分析vmnic0vmnic1承載VM的數量。
1
:依次啓動VM虛擬機VM1vmnic0VM2vmnic1VM3vmnic1VM4vmnic0VM5vmnic0VM6vmnic1
VM1
VM4VM5走的是vmnic0網口
VM2
VM3VM6走的是vmnic1網口
2
shutdown vmnic1對應的網口後,VM2VM3VM6自動轉移到vmnic0上承載。後重新開啓vmnic1後,VM2VM3VM6自動又轉移回vmnic1
3
:人爲關閉VM2VM3VM6虛擬機VM1VM4VM5並沒有自動轉移到vmnic1上,哪怕是一個VM,關閉VM1後又重啓,發現VM1走到了vmnic1上了。
總結:
1
:在默認的基於源虛擬端口ID的路由策略下,每一個VM的數據流(上下行)實際上跑的是一個網口(vmnic1vmnic0,也就是說任何一個VM虛擬機的數據流並沒有被這兩個網口分擔。
2
:初始開啓的VM虛擬機使用哪一個網口來負載的判斷原則是網口上承載VM的數量,而不是網口自身資源的負載壓力,這樣的判斷原則有可能會出現有的網口壓力非常大,而有的網口非常閒置。
3
:系統正常運行中(上述1),添加網口vmnic2,則虛擬機會重新分配負載平衡,數量是2—2—2模式(三網卡模式下)
4
:添加和刪除網口,對極個別VM會造成一個包的丟失。
5
:建議大家根據VM的要承載數據量的大小,使用vmnetwork端口組中負載均衡設置,人爲的指定承載網口和待定網口,最優化使用網口資源。
其實這個基於端口和mac地址準確的說應該不是叫負載均衡,理解爲冗餘更好點,這個均衡應該理解爲按端口或者mac平均哼配,測試過就算一張卡的吞吐率到達50%,也不會切換的,所以準確地說這前兩個應該理解爲連接數平均,最後個IP Hash纔是真的負載均衡,這個時候交換機設置爲兩層的EthernetChannel,配置負載模式爲Src xor des ip
2.
基於源MAC地址的負載均衡 Route based on source MAC hash 
這種方式下,負載均衡的實現是基於源MAC地址的。因爲每個vNIC總是具有一個固定的MAC地址,因此這種方式的負載均衡同基於端口的負載均衡具有同樣的缺點。同樣是要求vPort數量大於pNIC的時候纔會有效。同樣是vNIC的速率不會大於單個pNIC的速率。
3.
基於IP Hash的負載均衡 Route based on IP hash 
這種方式下,負載均衡的實現是根據源IP地址和目的IP地址的。因此同一臺VM(IP地址總是固定的)到不同目的的數據流,就會因爲目的IP的不同,走不同的pNIC。只有這種方式下,VM對外的流量的負載均衡才能真正實現。
不要忘記,VMware是不關心對端物理交換機的配置的,VMware的負載均衡只負責從Host出站的流量(outbound),因此要做到Inbound的負載均衡,必須在物理交換機上做同樣IP Hash方式的配置。此時,pNIC必須連接到同一個物理交換機上。
需要注意的是,VMware不支持動態鏈路聚合協議(例如802.3ad LACP或者CiscoPAgP),因此只能實現靜態的鏈路聚合。(類似於HPSLB)。不僅如此,對端的交換機設置靜態鏈路聚合的時候也要設置成IP Hash的算法。否則這種方式的負載均衡將無法實現。
這種方式的缺點是,因爲pNIC是連接到同一臺物理交換機的,因此存在交換機的單點失敗問題。此外,在點對點的鏈路中(比如VMotion),2端地址總是固定的,所以基於IP Hash的鏈路選擇算法就失去了意義。
4.
總結 
不管採用以上哪一種方法的Load Balancing,它會增加總聚合帶寬,但不會提升某單個連接所獲的帶寬。爲啥會這樣?同一個Session中的數據包爲啥不能做到Load Balancing?這是因爲網絡的7層模型中,一個Session在傳輸過程中會被拆分成多個數據包,並且到目的之後再重組,他們必須具有一定的順序,如果這個順序弄亂了,那麼到達目的重組出來的信息就是一堆無意義的亂碼。這就要求同一個session的數據包必須在同一個物理鏈路中按照順序傳輸過去。所以,101Gb鏈路組成的10Gb的聚合鏈路,一定不如單條10Gb鏈路來的高速和有效。
【選擇】
那麼應該選擇哪種NIC Teaming方式呢?大拿Scott Lowe建議:
如果使用鏈路聚合,必須設爲“Route based on IP hash” 
如果不是使用鏈路聚合,可以設爲任何其它設置。大多數情況下,接受默認設置“Route based onoriginating virtual port ID”是最好的。

源鏈接:http://bbs.vmsky.com/forum.php?mod=viewthread&tid=36574&highlight=%E7%BD%91%E7%BB%9C%E8%B4%9F%E8%BD%BD

 

 

------------------------------------------------------------------------------------------------------------------------------------------------

In the ESX case, the vSwitch fully supports VLAN tagging. How doesthis help you? Instead of having to provide a separate network card for everyVLAN you’re connecting into your ESX server, you can trunk them all onto thesame physical NIC. Doing so can signi?  cantly reduce TCO for yourinfrastructure from day one and in the long run. Providing redundancy for thevSwitch is also extremely simple. There are four options:


   Route based on the originating virtual port ID


   Route based on an IP hash


   Route based on the source MAC hash


   Explicit failover order


The most commonly used option is the ?  rst (it’s the default for allvSwitches). A number of VMs are connected to a vSwitch that uses two or morephysical NICs (pNICs). You use all of these pNICs in an active-activecon?  guration. If you lose a pNIC, traf?  c automatically travelsover one of the other pNICs in the vSwitch. Each time a VM is powered on, it’sassigned to a pNIC and continues to operate from that NIC until it’spower-cycled or until the pNIC fails and network traf?  c is passed to theother pNICs in the vSwitch. This setup doesn’t provide ef?  cient loadbalancing over all the pNICs in the vSwitch and can become unbalanced incertain cases; but in the majority of scenarios, it’s suitable because it’s thedefault con?  guration of an ESX host.

 

 

 

 

 

1. ESX網絡基礎


 

ESX server總共有三種形式的網絡:
– Service console port
 ESX Server 的管理網絡,如:vSphere ClientvCenter就是使用此網絡管理ESX
– VMkernel port
ESX Server內核接口,用來 VMotion, iSCSI NFS/NASnetworks
– Virtual machine port group:
虛擬機網絡連接。

ESX 界面:


 

2. ESXvSwitch


 

VMWare的官方解釋是這樣的:

A virtualswitch, vSwitch, works much like a physical Ethernetswitch. It detects which virtual machines are logically connected to each ofits virtual ports and uses that information to forward traffic to the correctvirtual machines. A vSwitch can be connected to physical switches usingphysical Ethernet adapters, also referred to as uplink adapters, to joinvirtual networks with physical networks. This type of connection is similar toconnecting physical switches together to create a larger network. Even though avSwitch works much like a physical switch, it does not have some of theadvanced functionality of a physical switch. For more information on vSwitches,see Virtual Switches.

其實vSwitch就是上圖左邊端口的組合,默認端口數爲56(最大可以到1016),我們可以爲一個ESX server創建最多248vSwitch。在VM不斷增多的情況下,出於冗餘和流量或安全考慮,可以增加多個vSwitch,並設置相應規則。


 

3. 增加vSwitch


 

1)列出系統的網卡

[root@VM1 ~]# esxcfg-nics-l  

Name   PCI      Driver      LinkSpeed     Duplex MACAddress       MTU   Description                  

vmnic0  01:00.00bnx2        Up   1000Mbps Full   a4:ba:db:45:c8:b2 1500   Broadcom CorporationBroadcom NetXtreme II BCM5709 1000Base-T

vmnic1  01:00.01bnx2        Up   1000Mbps Full   a4:ba:db:45:c8:b4 1500   Broadcom CorporationBroadcom NetXtreme II BCM5709 1000Base-T

vmnic2  02:00.00bnx2        Down0Mbps     Half   a4:ba:db:45:c8:b61500   Broadcom Corporation Broadcom NetXtreme II BCM5709 1000Base-T

vmnic3  02:00.01bnx2        Down0Mbps     Half   a4:ba:db:45:c8:b81500   Broadcom Corporation Broadcom NetXtreme II BCM5709 1000Base-T

2)列出你當前的虛擬交換機

[root@VM1 ~]#esxcfg-vswitch -l

SwitchName    Num Ports   Used Ports  ConfiguredPorts  MTU     Uplinks  

vSwitch0      32         10         32               1500    vmnic0,vmnic1

 

  PortGroupName      VLAN ID  Used Ports Uplinks  

  VMNetwork         0       5           vmnic0,vmnic1

  ServiceConsole     0       1           vmnic0,vmnic1

 VMkernel           0       1           vmnic0,vmnic1

3)添加一個虛擬交換機,名字叫(vswitch_test)連接到兩塊不用的物理網卡(目前沒有插網卡)

[root@VM1 ~]#esxcfg-vswitch -a vswitch_test

[root@VM1 ~]#esxcfg-vswitch -A VM_test vswitch_test

[root@VM1 ~]#esxcfg-vswitch -L vmnic2 vswitch_test

[root@VM1 ~]#esxcfg-vswitch -L vmnic3 vswitch_test

然後就可以在GUI裏修改相應配置(修改Port Group或其他)


 

4. vSwitch流量分隔及冗餘切換


 

VMware建議ESX中的三種網絡類型最好配置不同的Vlan,使用不同的上行鏈路以分隔流量,並且爲了保證故障冗餘,每個網絡類型至少關聯2塊網卡,我這裏用vSwitch_test爲例:

配置:
VMotion
使用vmnic2作爲活動適配器,vmnic3作爲待機適配器,VLAN ID=201
虛擬機網絡VM_test使用vmnic2作爲活動適配器,vmnic3作爲待機適配器,VLAN ID=200
虛擬機網絡VM_test2使用vmnic3作爲活動適配器,vmnic2作爲待機適配器,VLAN ID=202


 

5. vSwitch網絡負載均衡


WMware ESX Server網絡負載均衡配置

時間: 2011-02-14 分類VMware 
標籤ESXVMwarevSwitch / 3,687 次瀏覽 2 評論


簡介:

1) 3種類型的VMware網絡都支持NIC Teaming ,詳細請參考《VMWare ESX Server中的網絡設置(VMkernel, Service ConsoleVM port group
2) uplink
連接到那些物理交換機的端口都必須在同一個廣播域中。(也就是必須在同一個VLAN中,不能跨路由)
3)
如果uplink要配置VLAN,則每個uplink必須都配置成VLAN Trunk並且具有相同的VLAN配置。
4) VMware
的負載均衡(LoadBalancing)只是出站(Outbound)的負載均衡,因此要做到Inbound的負載均衡,必須在物理交換機上做同樣IP Hash方式的配置。
5
NIC TeamingLoad Balancing和一些高級路由算法的Load Balancing不同,它不是按照Teaming中網卡上通過的數據流量來負載均衡,而是根據網卡上的連接(connection)來進行負載均衡。


VMware
3種負載均衡

VMwareNIC Teaming Load Balancing策略有3種。
(1)
基於端口的負載均衡(默認)
(2)
基於源MAC的負載均衡
(3)
基於IP hash的負載均衡


1.
基於端口的負載均衡 (Route based on theoriginating virtual port ID)

這種方式下,負載均衡是基於vPort ID的。一個vPortHost上的一個pNIC(vSwitch角度看就是某個uplink)捆綁在一起,只有當這個pNIC失效的時候,才切到另外的pNIC鏈路上。這種方式的負載均衡只有在vPort數量大於pNIC的數量時才生效。
什麼是vport?一個VM上的vNIC或者某一個VMKernel或者Service Console的某個vswif。用一個圖來直觀的表述,vPort在下圖中顯示爲vSwitch上左側的那些綠點。而pNIC在圖中顯示爲右邊的vmnicX

對於VM來說,因爲某臺VMvNIC是捆綁在某一個pNIC上的,也就是說這臺VM(如果只有一個vNIC的話)對外的數據流量將固定在某一個pNIC上。這種負載均衡是在VM之間的均衡,對於某一臺VM而言,其uplink的速率不可能大於單個pNIC的速率。此外,只有當VM的數量足夠多,並且這些VM之間的數據流量基本一致的情況下,Host上的NIC TeamingLoad Balancing才較爲有效。對於以下這些極端情況,基於端口方式的負載均衡根本不起作用或者效果很差,充其量只能說是一種端口冗餘。
(1)Host
上只有一臺只具有單vNICVM (此時完全沒有Load balancing)
(2)Host
上的VM數量比pNIC(比如有4VM但是Teaming中有5pNIC,此時有一塊pNIC完全沒用上,其他每個vNIC各自使用一塊pNIC,此時也沒有任何負載均衡實現)
(3)Host
上雖然有多臺VM,但是99%的網絡流量都是某一臺VM產生的


2.
基於源MAC地址的負載均衡 Route based on source MAC hash

這種方式下,負載均衡的實現是基於源MAC地址的。因爲每個vNIC總是具有一個固定的MAC地址,因此這種方式的負載均衡同基於端口的負載均衡具有同樣的缺點。同樣是要求vPort數量大於pNIC的時候纔會有效。同樣是vNIC的速率不會大於單個pNIC的速率。


3.
基於IP Hash的負載均衡 Route based on IP hash

這種方式下,負載均衡的實現是根據源IP地址和目的IP地址的。因此同一臺VM(IP地址總是固定的)到不同目的的數據流,就會因爲目的IP的不同,走不同的pNIC。只有這種方式下,VM對外的流量的負載均衡才能真正實現。
不要忘記,VMware是不關心對端物理交換機的配置的,VMware的負載均衡只負責從Host出站的流量(outbound),因此要做到Inbound的負載均衡,必須在物理交換機上做同樣IP Hash方式的配置。此時,pNIC必須連接到同一個物理交換機上。
需要注意的是,VMware不支持動態鏈路聚合協議(例如802.3ad LACP或者CiscoPAgP),因此只能實現靜態的鏈路聚合。(類似於HPSLB)。不僅如此,對端的交換機設置靜態鏈路聚合的時候也要設置成IP Hash的算法。否則這種方式的負載均衡將無法實現。

這種方式的缺點是,因爲pNIC是連接到同一臺物理交換機的,因此存在交換機的單點失敗問題。此外,在點對點的鏈路中(比如VMotion),2端地址總是固定的,所以基於IP Hash的鏈路選擇算法就失去了意義。


4.
總結

不管採用以上哪一種方法的Load Balancing,它會增加總聚合帶寬,但不會提升某單個連接所獲的帶寬。爲啥會這樣?同一個Session中的數據包爲啥不能做到Load Balancing?這是因爲網絡的7層模型中,一個Session在傳輸過程中會被拆分成多個數據包,並且到目的之後再重組,他們必須具有一定的順序,如果這個順序弄亂了,那麼到達目的重組出來的信息就是一堆無意義的亂碼。這就要求同一個session的數據包必須在同一個物理鏈路中按照順序傳輸過去。所以,101Gb鏈路組成的10Gb的聚合鏈路,一定不如單條10Gb鏈路來的高速和有效。

 

轉載自:

Refresh MySelf

原文鏈接:http://kuku789123.blog.163.com/blog/static/13616735120130171401594/

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