ESXi主机网络NIC Teaming
如果ESXi主机的虚拟交换机只使用一个物理网卡,那么就存在单点故障,如果这个物理网卡故障,那么整个网络将中断,ESXi主机服务就全部停止。因此,对于虚拟交换机来说,负载均衡是必须考虑的事情。当一个虚拟交换机有多个物理网卡的时候,就可以形成负载均衡。那么多物理网卡情况下负载均衡如何实现?
主要有以下几种方式。
1.Originating Virtual Port IDOriginating Virtual Port ID,即基于源虚拟端口负载均衡,是ESXi主机网络默认的负载均衡方式。
在这种方式下,系统会将虚拟机网卡与虚拟交换机所属的物理网卡进行对应和绑定,绑定后不管这个物理网卡流量是否过载,虚拟机流量始终走虚拟交换机分配的物理网卡,除非当分配的这个物理网卡故障后才会尝试走另外活动的物理网卡。也就是说基于源虚拟端口负载均衡不属于动态的负载均衡方式,但可以实现冗余功能。
在这种模式下,虚拟机通过算法与ESXi主机物理网卡进行绑定,虚拟机01和虚拟机02与ESXi主机物理网卡vmnic0进行绑定,虚拟机03和虚拟机04与ESXi主机物理网卡vmnic1进行绑定,那么无论网络流量是否过载,虚拟机只会通过绑定的网卡对外进行通信。当虚拟机03和虚拟机04绑定的ESXi主机物理网卡vmnic1出现故障时,虚拟机才会使用ESXi主机物理网卡vmnic0对外进行通信
2.Source MAC HashSource MAC Hash,即基于源MAC地址散列算法负载均衡,这种方式与基于源虚拟端口负载均衡方式相似。
如果虚拟机只使用一个物理网卡,那么它的源MAC地址不会发生任何变化,系统分配物理网卡并绑定后,不管这个物理网卡流量是否过载,虚拟机流量始终走虚拟交换机分配的物理网卡,除非当分配的这个物理网卡故障后才会尝试走另外活动的物理网卡。基于源MAC地址散列算法负载均衡的另外一种实现方式是,虚拟机使用多个虚拟网卡,以便生成多个MAC地址,这样就虚拟机就可绑定多个物理网卡以实现负载均衡。
基于源MAC地址负载均衡,虚拟机如果只有一个MAC地址,与基于源虚拟端口负载均衡相同,虚拟机01和虚拟机02与ESXi主机物理网卡vmnic0进行绑定,虚拟机03和虚拟机04与ESXi主机物理网卡vmnic1进行绑定,那么无论网络流量是否过载,虚拟机只会通过绑定的网卡对外进行通信。当虚拟机03和虚拟机04绑定ESXi主机物理网卡vmnic1出现故障时,虚拟机才会使用ESXi主机物理网卡vmnic0对外进行通信
实现基于源MAC地址负载均衡还存在另外一种方式:虚拟机多MAC地址模式。也就是说,虚拟机有多个虚拟网卡,图5-1-8中的虚拟机02和虚拟机03有两个网卡,意味着虚拟机有2个MAC地址。在这样的模式下,通过基于源MAC地址负载均衡算法,虚拟机可使用不同的ESXi主机物理网卡对外通信。
3.IP Base HashIP Base Hash,即基于IP散列算法的负载均衡。
这种方式与前两种负载均衡方式是完全不一样的,IP散列是指基于源IP地址和目标IP地址计算出一个散列值,源IP地址和不同目标IP地址计算的散列值不一样。当虚拟机与不同目标IP地址通信时使用不同的散列值,就会使用不同的物理网卡,这样就可以实现动态的负载均衡。在ESXi主机网络上使用基于IP散列算法的负载均衡,还必须满足一个前提,就是物理交换机必须支持链路聚合协议(Link Aggregation Control Protocol)以及思科私有的端口聚合协议(Port Aggregation Protocol),同时要求端口必须处于同一物理交换机(如果使用思科Nexus交换机Virtual Port Channel功能则不需要端口处于同一物理交换机)。
基于IP散列算法的负载均衡,由于虚拟机源IP地址和不同目标IP地址计算的散列值不一样,那么虚拟机就不存在绑定某个ESXi主机物理网卡的情况,虚拟机01—04可能根据不同的散列值,选择不同的ESXi主机物理网卡对外进行通信。需要特别注意的是,如果交换机不配置链路聚合协议,那么基于IP散列算法的负载均衡模式无效。