我有两个运行 keepalived 的应用服务器,它们都在同一网络上使用 keepalived。我一直Jan 8 11:49:01 <server> Keepalived_vrrp[13764]: bogus VRRP packet received on eth0 !!!
在系统日志中看到。这个问题似乎是在我昨天将第二个应用程序上线后出现的,除了将应用程序相互隔离之外,还有其他合适的方法可以解决这个问题吗?
下面是其中一个应用服务器上的一个节点的 keepalived.conf,它们都很类似,两个不同的应用程序使用不同的密码,但都使用相同的virtual_router_id
。
! Configuration File for keepalived
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 2222
}
virtual_ipaddress {
<public_ip>/24 dev eth0
}
}
答案1
我可以通过在vrrp_instance VI_1
块中添加以下内容来解决这个问题。
vrrp_unicast_bind 192.168.1.11 # Internal IP of this machine
vrrp_unicast_peer 192.168.1.12 # Internal IP of peer
看起来,心跳最初是通过单播发出的,并被其他实例接收。通过定义机器的对等体,您可以避免此问题。
答案2
就我的情况而言,在同一个网络上安装了多台 keepalived 路由器,并且在两个不同的路由器中变量中有相同的 id virtual_router_id
。