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.jpgphp

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.jpghtml

對於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」是最好的。ios

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

 

 

------------------------------------------------------------------------------------------------------------------------------------------------sass

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
session


   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/

相關文章
相關標籤/搜索