Ucarp更新交换机的arp缓存

时间:2016-04-13 08:08:36

标签: networking carp

我使用ucarp over linux bonding来实现两个服务器的高可用性和自动故障转移。 以下是我在每台服务器上用来启动ucarp的命令:

服务器1: ucarp -i bond0 -v 2 -p secret -a 10.110.0.243 -s 10.110.0.229 --upscript=/etc/vip-up.sh --downscript=/etc/vip-down.sh -b 1 -k 1 -r 2 -z

服务器2: ucarp -i bond0 -v 2 -p secret -a 10.110.0.243 -s 10.110.0.242 --upscript=/etc/vip-up.sh --downscript=/etc/vip-down.sh -b 1 -k 1 -r 2 -z

以及脚本的内容:

vip -up.sh:

#!/bin/sh
exec 2> /dev/null
/sbin/ip addr add "$2"/24 dev "$1"

vip-down.sh:

#!/bin/sh
exec 2> /dev/null
/sbin/ip addr del "$2"/24 dev "$1"

当主服务器不可用时,一切正常并且服务器正确地从一个服务器切换到另一个服务器。

问题是当我从交换机上拔下两台服务器太长时间(大约30分钟)。当他们被拔掉时他们都认为他们是主人, 当我重新插入它们时,具有最低IP地址的那个试图通过发送无偿的arps来保持主人。另一个按预期切换到备份,但我无法通过其虚拟IP访问主服务器。 如果我拔掉主设备,第二台服务器将从备份转为主设备,并可通过虚拟IP访问。

我的猜测是开关"忘记"关于我的服务器断开连接的时间过长,当我重新连接它们时,需要从备份到主服务器以正确更新交换机的arp缓存,尽管主机发送的无偿arps应该完成工作。请注意,在主服务器上重新启动ucarp确实可以解决问题,但是每次断开连接太长时我都需要重新启动它...

知道为什么它不像我预期的那样工作以及我如何解决问题?

感谢。

0 个答案:

没有答案