基于 vmware exsi ip 的散列的虚拟 IP 故障转移问题

网络工程 arp linux 国际会议 故障转移 虚拟机
2021-07-29 08:48:18

我们正在 exsi 上部署 HA 数据库集群,它基于虚拟 IP 概念进行故障转移。如果一个节点失败,保留的 VIP 将分配给另一个节点

我们在这些 exsi 节点上有两个 exsi 节点和两个虚拟机作为主节点和从节点。

db_master = 192.168.60.10
db_slsave = 192.168.60.11
reserved_vip = 192.168.60.12

gateway = 192.168.60.1

每个 exsi 节点有两个接口。使用基于 IP 哈希的路由配置的 NIC 组合,其中 LAG 配置在交换机端 (NO LACP)。

LAG 配置为中继端口,我在 exsi 端口组内终止 VLAN

我所有的数据库服务器都在 vlan 60 上,这些是目前 exsi 上唯一的虚拟机

我配置了虚拟端口组并分配了 vlan 60。并且网络启动并运行。当我移除一根电缆时,我可以 ping 设置之外的其他节点并且 LAG 工作正常。

问题与数据库故障转移有关。对于分配给 db_master 的正常场景 VIP 192.168.60.12。当我关闭 db_master VIP 将分配给 db_slave。

故障转移软件功能运行良好,但当虚拟 ip (192.168.60.12) 分配给 db_slave 时,我无法再从网关 ping 它。

看来这是arp问题。但我想通过影响故障转移来确认基于 exsi IP 哈希的路由和延迟不会在这里出错。

此外,我没有用应用程序级别检查这个,而只用 ICMP

1个回答

ESXi 的 vSwitch 不关心 IP 地址,只关心 MAC。“基于 IP 哈希的路由”是关于 L2 负载平衡 - 使用哪个出口端口 - 与 IP 路由无关。

您需要确保故障转移服务器发送了一个免费的 ARP (GARP) 并且该 GARP 被该段中的所有相关节点正确处理——它们都需要更新它们的 ARP 缓存表。或者,可以删除过时的条目(因此它会被重新ARP)。如果两者都不能完成,那么故障转移概念将不起作用。

如果没有正确的 ARP 更新(IP 到 MAC 映射),IP 数据包将被发送到故障 MAC 节点 - 交换机将帧转发到故障设备(或者它们可能会被泛洪到所有交换机端口,但使用错误的 MAC 导致没有不同之处)。

此外,除非您的工作负载适合,否则不应在 ESXi 对面的物理交换机上使用 IP 哈希和静态 LAG。虽然这确实有效,但 LAG 组的潜在有害影响是交换机决定使用哪个端口发送到特定 vNIC (MAC) 的主机。使用简单、独立的端口而不是 LAG 中继和通过虚拟端口 ID 或 MAC 哈希进行路由,交换机使用目标 vNIC/MAC 逻辑关联的端口(因为它用于出口和学习) - 因此主机决定从交换机到主机使用哪个端口。通常,这是优选的。

换句话说,在没有静态 LAG 的情况下,来自或到达某个 vNIC 的流量始终在两个方向上使用相同的物理端口(由主机控制)。对于静态 LAG,流向某个 vNIC 的流量可能使用与来自该 vNIC 的流量(由主机控制)不同的端口(由交换机控制)。

由于 vSwitch 从不​​通过物理端口转发帧,因此您不需要 LAG 中继或 STP 来防止网桥环路。当您不使用 LAG 时,ESXi 的行为更可预测。您还可以为每个物理 NIC 设置一个端口组并故障转移到另一个端口组的 NIC - 这使您可以完全控制 vNIC 到物理 NIC 的映射。