keepalived的两个节点均配置backup角色并配置了nopreempt非抢占模式请问当VIP漂移到另一个节点后如何让周边的节点知道新VIP的mac地址已经发生变化?
当VIP漂移到另一个节点后,周边的节点可以通过ARP协议来获取新VIP的MAC地址。ARP(Address Resolution Protocol)是一种用于将IP地址解析为MAC地址的协议。当节点A的IP地址发生变化时,它会发送一个ARP广播消息,询问所有周边节点中拥有该IP地址的节点的MAC地址。节点B接收到该ARP广播消息后,会回复一个ARP响应消息,包含它的MAC地址。这样,节点A就能获得节点B的MAC地址,从而实现VIP地址的更新。
在keepalived中,当VIP漂移到另一个节点后,该节点会发送一个ARP广播消息,通知周边节点新VIP的MAC地址已经发生变化。其配置项如下:
vrrp_script chk_arp {
script "/etc/keepalived/check_arp.sh" # 执行的脚本路径
interval 2 # 脚本执行间隔时间
}
vrrp_instance VI_1 {
...
advert_int 1 # VRRP广告发送间隔
nopreempt # 非抢占模式
virtual_ipaddress {
192.168.0.1/24 # VIP地址
}
notify_master "/etc/keepalived/notify_master.sh" # 通知脚本路径
notify_backup "/etc/keepalived/notify_backup.sh" # 通知脚本路径
notify_fault "/etc/keepalived/notify_fault.sh" # 通知脚本路径
}
在notify_backup脚本中,可以执行一系列操作,包括发送ARP广播消息通知周边节点新VIP的MAC地址已经发生变化。具体的实现方法可以通过调用相关系统命令,比如arping来发送ARP广播消息。
另外,需要注意的是,当VIP漂移到另一个节点后,原节点的ARP缓存中仍然会保留旧VIP的MAC地址,因此需要在新节点上配置相关策略,使其处理来自旧VIP的ARP请求,以确保通信的连续性
原文地址: https://www.cveoy.top/t/topic/it0a 著作权归作者所有。请勿转载和采集!