什么是ARP缓存

        在计算机网络中,当一个主机需要向同一个局域网内的另一个主机发送数据时,它需要知道目标主机的物理地址。如果发送主机的ARP缓存中没有存储目的主机的IP地址对应的物理地址,它会广播一个ARP请求,询问哪个设备拥有该IP地址。收到请求的设备会回复自己的物理地址,这样发送主机就可以将数据包发送到正确的目的地。这个IP地址到物理地址的映射关系会被存储在ARP缓存中,以便于下次通信时可以直接使用,避免再次发送ARP请求。

        

ARP缓存的弊端

        ip和mac映射在交换机上有缓存,那就可能存在一种可能:某一台物理主机宕机,vip飘到另一台主机上,但是由于ARP缓存并没有更新。所以VIP的mac地址依然是宕机的主机的mac地址,导致上一层的连接出现连接不上的问题。

 

如何排查是否是ARP问题

        arp -vn|grep 具体的VIP

        这样可以查看当前交换机arp表中记录的这个VIP的mac地址

 

查询出来的该VIP的mac地址和两台物理主机的MAC地址对比,看该VIP的mac地址是不是它当前所在的主机的mac地址。如果不一致,则ARP表未更新。

        

如何处理ARP缓存未更新

若发现上述VIP切换后,ARP表未更新的问题,可采用如下方法快速处理(任选一种):

1、清空不正确的机器arp表:ip neigh flush all。

2、arp -d 删除错误的vip

3、ping 一下vip,看能不能学到正确的mac。不行就从vip所在的机器上发一下arping,再看能不能学到。或者配置静态arp先把内部互通解决?。
arping -I 网卡名 -s vip 不对的物理ip

 

4、进行VIP切换,将VIP切到它对应的mac地址的主机上去。一般来说使用了keepalived的,需要关注主备节点的优先级。