(1) 基于端口的负载均衡 (Route based on the originating virtual port ID)(这个是默认支持)
这种方式下,负载均衡是基于vPort ID的。一个vPort和Host上的一个pNIC捆绑在一起,只有当这个pNIC失效的时候,才切到另外的pNIC链路上。这种方式的负载均衡只有在vPort数量大于pNIC的数量时才生效。对于VM来说,因为某台VM的vNIC是捆绑在某一个pNIC上的,也就是说这台VM(如果只有一个vNIC的话)对外的数据流量将固定在某一个pNIC上。这种负载均衡是在VM之间的均衡,对于某一台VM而言,其uplink的速率不可能大于单个pNIC的速率。此外,只有当VM的数量足够多,并且这些VM之间的数据流量基本一致的情况下,Host上的NIC Teaming的Load Balancing才较为有效。对于以下这些极端情况,基于端口方式的负载均衡根本不起作用或者效果很差,充其量只能说是一种端口冗余。
a.Host上只有一台只具有单vNIC的VM (此时完全没有Load balancing)
b.Host上的VM数量比pNIC少(比如有4台VM但是Teaming中有5块pNIC,此时有一块pNIC完全没用上,其他每个vNIC各自使用一块pNIC,此时也没有任何负载均衡实现)
c.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或者Cisco的PAgP),因此只能实现静态的链路聚合。(类似于HP的SLB)。不仅如此,对端的交换机设置静态链路聚合的时候也要设置成IP Hash的算法。否则这种方式的负载均衡将无法实现。
这种方式的缺点是,因为pNIC是连接到同一台物理交换机的,因此存在交换机的单点失败问题。此外,在点对点的链路中(比如VMotion),2端地址总是固定的,所以基于IP Hash的链路选择算法就失去了意义。
如何配置网卡聚合:
点击【主机】—>【配置】—>【网络】—>【属性】:
在上面的选项卡中选择【网络适配器】—>【添加】—>在右边弹出的窗口中选择相应要绑定的网卡,接着一直下一步就可以了。
这一步是将两张网卡绑定在一起,实现双网卡绑定,下面要进行绑定策略的设置。
点击上图的【属性】—>选择【端口】选项卡—>【编辑】—>在弹出的窗口中选择网卡绑定
可以看到下图有四种负载均衡策略:
按文章开始的说明选择符合自己需求的策略,默认是基于vport ID 进行负载均衡。
在VMware ESX 上配置网卡网络负载均衡就完成了。