假设:
你已经了解keepalived
的基础知识,且已经能正确运行keepalived。
背景:
在两个正常工作的主机中,正常运行keepalived
,且主机A绑定了虚拟IP,为主节点,主机B为从节点。
问题:
当执行某些网络操作后,发现主机A、B都无法绑定虚拟IP。
问题复现:
-
修改主机A的IP配置,例如修改DNS,并执行
systemctl restart network
命令。 -
主机A、B都无法绑定虚拟IP。
问题排查:
-
在主机A重启
keepalived
后,主机B可以获取到虚拟IP。 -
怀疑
keepalived
有bug。 -
搜索后发现当
NetworkManager
服务运行时,在A停用network
服务,网络连接的link状态仍为yes,在B上抓包,可以收到来自A的VRRP包。因此B不会绑定虚拟ip, 又因为此时节点A已经没有ip地址, 所以A\B都不能获取虚拟ip -
解决方法:停止并禁用
NetworkManager
服务。
思考:
NetworkManager
是否还有其他和network冲突的地方?- 为何通过ip命令或ifconfig命令都不能获取到ip, 但A仍然能对外发送vrrp包?