现象:ping不通,很久才恢复
- 通过ifconfig 配置的虚拟VIP
- 当VIP多次迁移后,发现跨网段ping时,需要等很久很慢才能ping通;
在同网段也能明显看出来比较慢,通过arp命令也能看到vip对应的mac地址很久才更新,但不用等很长时间; - 通过keealive配置的虚拟VIP能很快ping通,不管是同网段还是跨网段
- 只在连接华为路由器的发现此问题比较严重
复现问题
#绑定VIP
ifconfig eth0:3 192.168.0.141 netmask 255.255.255.0 up
#删除VIP
ifconfig eth0:3 192.168.0.141 netmask 255.255.255.0 down
#以上两个命令在多个机器上使用,再跨网段ping vip,会发现很慢
#刷新路由表
arping -c 3 -U -I eth0 192.168.0.141
或者
arping -c 3 -A -I eth0 192.168.0.141
或者
arping -c 1 -I eth0 -s 192.168.0.141 192.168.0.1
发现慢后,执行上面的arping命令刷新路由,发现ping能马上通
原因
ARP表老化时间造成的问题:思科是 5分钟,华为是 20分钟;
在一些HA的场景会配置浮动ip,可能会出现浮动ip切到其他主机后网络不通的问题,这很有可能是交换机ARP表没有更新造成的,因为在ip切换的过程中也许没有网络接口状态的变化触发ARP表的更新,交换机或其他主机缓存的依然是老的数据。等到交换机ARP表老化时间到了再次更新arp表网络就通了。显然我们没有那么多的时间,而且这样HA的意义又何在呢?为了使交换机尽快更新ARP表,可以将交换机的ARP缓存清理掉,让交换机自动学习一遍,但交换机不是每个系统管理员都能操作的。最方便的办法是在服务器上发送ARP请求或响应报文,从而更新交换机和邻近主机的ARP缓存,操作完成后网络就通了。前面说了这么多,其实就是为了引出最后的ARP缓存导致网络不通的问题和解决办法,但如果对ARP工作的工作缺乏基本的了解,在出现类似故障时是很难想到问题所在的。
解决方案:2种
● 添加vip后执行脚本,使用arping命令强制刷新路由表
● 使用keepalive来实现
另:arping命令
- 代替ping,检查ip是否通
arping 192.168.0.141
- 可用于检测是否有脑裂现象,观察是否有多个mac地址返回
#同网段 arping -c 2 -I eth0 192.168.0.141
参考:
https://www.博ky.com/my-show-time/p/14391379.html