两台机器192.168.171.124/192.168.171.125
VIP:192.168.171.123
[MYSQL-MS00 ~]# ip a |grep 171
inet 192.168.171.124/24 brd 192.168.171.255 scope global noprefixroute ens32
inet 192.168.171.123/32 scope global ens32
[MYSQL-MS01 ~]# ip a |grep 171
inet 192.168.171.125/24 brd 192.168.171.255 scope global noprefixroute ens32
此时VIP在MS00机器上,当重启MS00的keepalived服务或者重启MS00机器后,VIP可以正常地漂移到MS01上
但在测试中发现一个意外情况: VIP在MS00机器上时,如果停用MS00的网卡,则VIP无法正常地漂移到MS01上,或者说,MS01无法成功生成vip
[MYSQL-MS00 ~]# service network stop
Stopping network (via systemctl):
[MYSQL-MS01 ~]# ip a |grep 171 # MS01未获取VIP
inet 192.168.171.125/24 brd 192.168.171.255 scope global noprefixroute ens32
之后,即使是启动MS00的网卡,并且重启两台机上的keepalived服务,都无法正常生成VIP,查看日志也没有显示任何报错。
最后,检查MS00的arp列表,发现在MS00机上有VIP的条目
[MYSQL-MS00 ~]$ arp | grep 123
Address HWtype HWaddress Flags Mask Iface
192.168.171.123 (incomplete) ens32
删除这条记录后,再重启keepalived服务就可以正常地绑定VIP了
[MYSQL-MS00 ~]$ arp -d 192.168.171.123
[MYSQL-MS00 ~]$ service keepalived restart
Redirecting to /bin/systemctl restart keepalived.service
[MYSQL-MS00 ~]# ip a |grep 171 # VIP已经生成了
inet 192.168.171.124/24 brd 192.168.171.255 scope global noprefixroute ens32
inet 192.168.171.123/32 scope global ens32
至此,故障解决。另外要注意地是,如果删除了MS00上的条目后还是无法成功获取VIP,这时要再去MS01上检查一下arp列表,如果存在VIP,则也将它删除。
具体原因,有时间再慢慢查了。
网友评论