发生心跳故障转移后,arp失败

我有一个基于LVS的负载平衡器,一直工作得很好。 它使用心跳在两台服务器上运行以提供故障转移。

我已经添加了对系统的第二个IP范围的支持,但是当发生故障转移时,接pipe的服务器不能在这个第二范围内ARP任何IP,除非我删除并重新添加该范围的路由

以下是有关故障转移后在活动负载平衡器上看到的更多详细信息:

# arp foo1.example.com ether 00:20:ED:1A:0C:82 C eth0 foo2.example.com ether 00:1E:C9:B0:F6:FE C eth0 bar1.example.com (incomplete) eth0 # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 2.2.2.128 * 255.255.255.192 U 0 0 0 eth0 1.1.1.0 * 255.255.255.0 U 0 0 0 eth0 default 1.1.1.1 0.0.0.0 UG 100 0 0 eth0 

所以我不能ARP那bar1.example.com将在2.2.2。* netblock

我发现,删除和添加网路的路线修复了这个问题

 ip route del 2.2.2.128/26 dev eth0 ip route add 2.2.2.128/26 dev eth0 

如果我通过ping bar1.example.com触发ARP查找,ARPcaching现在将显示

 bar1.example.com ether 00:22:19:51:71:E4 C eth0 

有没有人知道这里发生了什么事情,或者知道一个方法,我可以让心跳守护进程执行这个路由删除和重新添加时,它进行接pipe?

有时,交换机将旧的ARP映射保留太久; 我不得不使用Linux下的“arping -U”来告诉上游交换机刷新caching。

你如何指定一个IP作为资源? 你使用IPAddr资源脚本吗? 如果您没有在故障转移时重新广播ARP,则先前与VIP通话的设备将在ARP表中拥有旧的物理地址。