Keepalived 发送单播和多播 VRRP 通告

Keepalived 发送单播和多播 VRRP 通告

我有三个 keepalived 服务器集群,每个集群有两个实例,每个集群都有一个唯一的 VIP 和路由器 ID。其中两个使用单播 VRRP 广告工作正常,但其中一个……不能。

因此,为了回答这个问题,我们假设两个集群实例是machine1.domainmachine2.domain。以下是的 keepalived 配置machine1.domain

vrrp_instance VI_1 {
    state MASTER
    notify /usr/local/bin/keepalived-notify.sh
    virtual_router_id 55
    interface eth0
    unicast_src_ip 192.168.0.12
    unicast_peer {
        192.168.0.13
    }
    priority 255
    authentication {
        ...
    }
    virtual_ipaddress {
        192.168.0.14
    }
    track_script {
        chk_haproxy
    }
}

明确地说明一下,machine1.domain的分配 IP 为192.168.0.12,VIPmachine2.domain为。192.168.0.13192.168.0.14

当我运行时tcpdump -i eth0 | grep "vrid 55",我得到的结果如下:

sudo tcpdump -i eth0 | grep "vrid 55"
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:09:03.386420 IP machine1.domain > machine2.domain: VRRPv2, Advertisement, vrid 55, prio 255, authtype simple, intvl 1s, length 20
14:09:03.738807 IP VIP.domain > vrrp.mcast.net: VRRPv2, Advertisement, vrid 55, prio 100, authtype none, intvl 1s, length 20
14:09:04.387364 IP machine1.domain > machine2.domain: VRRPv2, Advertisement, vrid 55, prio 255, authtype simple, intvl 1s, length 20
14:09:04.740211 IP VIP.domain > vrrp.mcast.net: VRRPv2, Advertisement, vrid 55, prio 100, authtype none, intvl 1s, length 20
14:09:05.388325 IP machine1.domain > machine2.domain: VRRPv2, Advertisement, vrid 55, prio 255, authtype simple, intvl 1s, length 20
14:09:05.740435 IP VIP.domain > vrrp.mcast.net: VRRPv2, Advertisement, vrid 55, prio 100, authtype none, intvl 1s, length 20

因此,keepalived 在 VIP 上发送多播消息,并在machine1.domain的实例 IP 上发送单播消息。我已重新启动 keepalived 服务、重新加载它、停止它、重新启动实例等。它总是在单播和多播上重新广播。

此外,我的所有 3 个集群中的所有实例都是通过 chef 配置的。它们都具有相同的配置,只需在 keepalived 配置中替换三个 IP 和路由器 ID 即可。

感谢您提供的任何帮助。我不知道是什么原因造成的,有什么想法吗?

相关内容