Active/Active 配置中的 ESXi VMKernel 端口有什么问题?

Active/Active 配置中的 ESXi VMKernel 端口有什么问题?

我有以下简化的配置:

在此处输入图片描述

本质上,我有一台带有两个物理网络适配器的 ESXi 主机。每个适配器都插入不同的交换机。每个交换机都通过中继端口连接。一台 PC 连接到其中一个交换机。带有 VMKernel 端口和 VM 端口的 vSwitch 配置为在 Active/Active 配置中使用两个物理网卡:

在此处输入图片描述

我已经运行esxtop并看到 ESXi 主机已选择连接到交换机 2 的物理网卡作为 VMKernel 端口。从 PC 上,如果我 ping ESXi 主机的管理 IP 地址,ping 会断断续续。它们时断时续。

如果我显示每个交换机上的 MAC 地址表,我会看到交换机 2 始终将 VMKernel 的 MAC 地址分配给连接到 ESXi 主机的交换机端口。但是,交换机 1 不断在其各自的物理端口上添加和删除 VMKernel 的 MAC 地址。只要交换机 1 将 VMKernel 的 MAC 分配给其物理端口,ping 就会失败。

失败的原因很明显。问题在于为什么交换机 1 会定期获取 ESXi VMKernel 端口的 MAC 地址。ESXi 主机已选择连接到交换机 2 的接口作为活动端口。连接到交换机 1 的接口应该处于非活动状态。但是,它似乎可能正在响应 ARP 请求?

值得注意的是,此主机上的所有虚拟机均不存在此问题。它们均可以访问,并且一次仅出现在一个 MAC 表中。此问题特别影响 VMKernel 端口。

这个配置有什么错误吗?我正在寻找某种文档或解释,以解决此问题。我知道将 VMKernel 端口设置为主动/待机模式可能会解决此问题。但是,我找不到任何文档来说明为什么当前配置存在问题。

更新:

  • 我在 vSwitch 上禁用了 CDP,认为它可能会导致通过非活动的 NIC 进行通信。
  • 我覆盖了 VMKernel 端口的 vSwitch 设置,并将其设置为使用显式故障转移和活动/待机。我还将备用 NIC 放在未使用的池中。这些都无济于事。解决问题的方法是改变端口顺序。因此,当连接到交换机 1 的端口变为活动状态时,我看不到该问题。交换机 2 上的 MAC 地址根本没有变为活动状态。这是两个截然不同的 NIC 卡,我想知道这是否不是某种驱动程序问题。

一定有某种原因导致 VMKernel MAC 地址显示在交换机 1 的端口上,但它每隔几秒钟就会出现一次又一次。

交换机 STP 和端口配置:交换机 1

!
spanning-tree mode rapid-pvst
spanning-tree portfast edge default
spanning-tree extend system-id
!
interface Port-channel1
 switchport access vlan 11
 switchport trunk encapsulation dot1q
 switchport mode trunk
!
interface GigabitEthernet1/0/7
 switchport access vlan 11
 switchport mode access
!
interface GigabitEthernet1/0/23
 switchport access vlan 11
 switchport trunk encapsulation dot1q
 switchport mode trunk
 channel-group 1 mode desirable
!
interface GigabitEthernet1/0/24
 switchport access vlan 11
 switchport trunk encapsulation dot1q
 switchport mode trunk
 channel-group 1 mode desirable

开关 2

!
spanning-tree mode rapid-pvst
spanning-tree portfast edge default
spanning-tree extend system-id
!
interface Port-channel1
 switchport access vlan 11
 switchport trunk encapsulation dot1q
 switchport mode trunk
!
interface GigabitEthernet1/0/3
 switchport access vlan 11
 switchport mode access
!
interface GigabitEthernet1/0/23
 switchport access vlan 11
 switchport trunk encapsulation dot1q
 switchport mode trunk
 channel-group 1 mode desirable
!
interface GigabitEthernet1/0/24
 switchport access vlan 11
 switchport trunk encapsulation dot1q
 switchport mode trunk
 channel-group 1 mode desirable

答案1

ESXI 中的管理 vmk 在初始设置期间假定第一个 PCI 插槽中 Nic 的 MAC 地址。这就是它一直的工作方式。只有当物理设备也开始发送数据包时,这才会破坏设备。这通常不会发生,物理 Nic 不会发送流量,它们会传递流量。如果您决定将物理 Nic 从一个主机移动到另一个主机,也需要注意此行为,当物理交换机出现故障时,这会导致 2 个主机连接中断。我猜这个 Nic 开始报告 CDP/LLDP 流量,这时您的交换机就会看到 MAC 重复。最简单的解决方案是通过命令行重建 vmk。这需要从直接控制台访问 (DCUI)(KVM、ILO、IDRAC 等...)完成。

以下是命令;(调整 IP/子网掩码/端口组名称等...以满足您的需要。)

esxcli 网络 ip 接口删除 --interface-name=vmk0

esxcli 网络 vswitch 标准端口组添加 -p Management_Network -v vSwitch0

esxcli 网络 ip 接口添加 --interface-name=vmk0 --portgroup-name=Management_Network

esxcli 网络 vswitch 标准端口组设置 -p Management_Network --vlan-id 50

esxcli 网络 ip 接口 ipv4 设置 --interface-name=vmk0 --ipv4=192.168.50.116 --netmask=255.255.255.0 --gateway=192.168.50.1 --type=static

esxcli 网络 ip 接口标签添加 -i vmk0 -t 管理

这将使用 VMware MAC 地址重建管理 vmk 以消除此问题。但是,我建议您联系硬件供应商/制造商,以关闭来自物理卡的 CDP/LLDP。这将解决这个 ESXi 主机问题,但如果您允许卡继续执行此功能,最终会导致其他主机也出现此问题。如果这个问题像您最初想象的那么大,VMware 就不会是一家大公司了,这种情况并不常见……

答案2

我已经运行了极为相似的设置很多年了,没有任何问题。

您如何配置交换机端口?您不应该做任何特别的事情((M)LAG/LACP),因为 ESXi 会处理所有事情。堆叠交换机没问题,只是不要聚合端口,配置任何链路状态镜像或类似功能。

Switch2 应该永久地在面向 ESXi 的端口上具有 VMkernel 端口的 MAC,并且 switch1 应该永久地在面向 switch2 的端口上具有 VMkernel 端口的 MAC。

MAC 来回抖动可能是由其他问题引起的,例如频繁的 STP 拓扑更改(ESXi 通常看不到,但仍可能看到)。检查交换机的日志是否有任何异常。

问题在于为什么交换机 1 会定期获取 ESXi VMKernel 端口的 MAC 地址。

没有任何 LAG,只有当主机实际将带有 VMK 端口 MAC 的帧发送到交换机 1 时才会发生这种情况。除非到交换机 2 的链接发生故障,否则它通常不会这样做。

连接到交换机 1 的接口应该处于非活动状态。

对于 VMK 端口,是的。可能有 VM 流量连接到同一端口组。

但是,看起来它可能正在响应 ARP 请求?

无论是否是 ARP,具有 VMK 端口 MAC 的帧都不会无缘无故地从其他端口发出。

答案3

您发布的交换机端口配置显示您正在使用催化剂交换机上的端口通道。

千万不要这么做!独立 ESXi 主机不支持此功能。ESXi 仅在软件内自行处理负载平衡和故障转移。如果您确实想使用基于外部交换机的端口通道,则需要使用 vCenter 和分布式交换机。

https://kb.vmware.com/s/article/82609https://kb.vmware.com/s/article/1001938了解更多详情。

相关内容