ESXI中,当利用网卡组配置且组中的某个网络适配器发生故障时,进行故障切换或故障恢复后虚拟交换机上的所有端口组的网络连接都将丢失。在 vMotion 至其他 ESX/ESXi 主机后,虚拟机上的网络连接丢失。造成该类现象的原因是:故障切换顺序中位居收尾的物理网卡遇到间歇性故障,故障恢复策略可能导致平凡更换使用的网卡,上层物理交换机MAC表地址频繁更改,造成网络丢失。该丢失问题官方具体解决办法为:官方解决办法
同时,vSphere官方DOC也给出了此类情况及建议,见下图:
但是本人根据官方文档进行操作,并未取得很好效果,于是继续研究该问题和官方DOC。
本次环境为:单台物理主机存在两张网卡,同时将网卡划分为活动和备用,如下图:经过多次测试,发现,若关闭活动适配器vmnic3对应交换机端口,会自动切为备用适配器vmnic0,查看交换机ARP表,ARP端口已经更改为备用适配器所连接交换机端口,但对应的MAC地址依旧为vmnic3。
接着,交换机开启活动适配器端口,此时会网络会出现丢失,再次查看ARP映射表,发现映射的交换机端口依旧为备用适配器,根据官方DOC解释:
故障恢复机制默认为是,则当活动适配器对应交换机端口被打开后,立即停止备用适配器,切换所有流量至活动适配器。由于此时交换机ARP对应的端口依旧为备用适配器,即交换机依旧把所有流量转发至备用适配器,所以造成网络丢失。
综上,原因在于ESXI主机和交换机使用适配器不同步问题,ESXI主机默认使用活动适配器,故障恢复时,主机会自动切换为活动适配器,而交换机因备用适配器一直处于端口UP状态,所以ARP表会在1200秒后老化,但不一定切换为活动适配器。究其原因,还是ESXI主机对活、备适配器的管理机制问题,主备的切换仅针对是否接受网卡流量,而不是关闭网卡。
所以,有个简单的解决办法,就是修改故障恢复状态为否,即活动适配器故障恢复后不会切换,主机依旧使用备用适配器,当备用适配器故障后再切换为活动适配器,这样形成一个良性循环,符合交换机的逻辑,虚拟交换机和VMkernel适配器都可以进行配置(VMkernel适配器无法直接通过vSphere直接修改,需登录具体主机修改)。
或者也可以选择负载均衡为基于原MAC哈希的路由,同时将两张网卡都切换为活动适配器。