前几天在项目中发现,双机切换后虚ip启动正常,一切都正常,但是通过网关却无法访问虚ip,从而导致双机切换失败。当时我的第一感觉就是,是不是切换后没有给网关发送arp欺骗,所以网关里面的mac/ip缓存没有即时更新造成的。经排查后发现确实如此,不知道heartbeat为什在切换到主机时没有发送arp包通知网关刷新缓存,但是切换到备机时又一切正常。无奈之下只能自己手动在主机的heartbeat启动脚本里,添加send arp的命令。命令如下:
/usr/lib64/heartbeat/send_arp -i 5 -r 10 -p /var/run/test.pid eth0 192.168.1.100 auto ignored ignored
send_arp是heartbeat自带的一个程序,专门来做arp欺骗的。
注:上面这条命令未必就是最优的,但确实是凑效的。