Keepalived:主转换无效

Keepalived:主转换无效

我们有两台机器的 keepalived 设置,其中两台机器的配置方式相同。

vrrp_instance RP_VI_1 {
  interface                 eth3
  state                     BACKUP
  virtual_router_id         61
  priority                  150
  advert_int                1
  garp_master_delay         5

  virtual_ipaddress {
    x.x.x.x dev eth2
  }
}

两台机器都以这种配置运行了大约半年,没有任何问题,但今晚出现了看似错误的状态转换。

host1: in BACKUP state
host2: in MASTER state

03:44:44: host1: Transition to MASTER state
03:44:45: host1: Entering MASTER STATE
03:44:46: host1: Received higher prio advert 150
03:44:46: host1: Entering BACKUP state

在此期间,host2 没有在任何状态之间转换,也没有记录任何信息。因此,host1 向网络发送了免费 ARP,其 mac 地址被缓存了几个小时,同时丢弃了所有流量。

我们这里最大的问题是,host1 恢复到 BACKUP 状态,说收到了“更高优先级广告”,而两个主机的优先级都是 150。如何触发此转换而系统没有进行后续通信来决定谁应该保持主控,从而发送新的免费 ARP 以确保数据包传输到正确的主机?

答案1

阅读完 VRRPv2 (RFC3768) 定义后,显而易见:

1) 使用主 IP 地址作为两个优先级相同的主机之间的决胜局。具有较高 IP 地址的主机获胜,具有较低 IP 地址的主机将转换为 MASTER

2) keepalived 选项garp_master_refresh可用于在 x 秒后重新发送免费 ARP。由于默认值为 0,因此现在默认重新发送请求,指定该选项应会导致系统在一段时间后恢复。

相关内容