路由器故障转移未检测到外部接口链路丢失

路由器故障转移未检测到外部接口链路丢失

假设我有两个配置为主/从配置的路由器。

它们看起来像这样(地址不是真实的)

123.123.123.10  <===> [eth0] Router 1 (10.1.1.2) [eth1] ===> +----------+
                                                             | 10.1.1.1 | ===> LAN
172.123.123.10  <===> [eth0] Router 2 (10.1.1.3) [eth1] ===> +----------+

10.1.1.1 是网络 (10.1.1.0) 的默认路由。此配置与我见过的其他配置略有不同,因为我没有外部虚拟 IP。此外,10.1.1.1 地址是实际的公共 IP(不是此处显示的私有 IP)。这更像是路由器设置,而不是防火墙设置,因此我在这里不使用 NAT。

现在我遇到的问题是,我看不出有任何方法可以配置 UCARP 或 VRRP 来监控 eth0 和 eth1,并在其中任何一个发生故障时故障转移到备用路由器。我看到的情况是,如果 Router1 是主路由器,并且我拔掉 router1 上的 eth0,它不会故障转移到路由器 2。但是,如果我拔掉路由器 1 上的 eth1,它就会故障转移到路由器 2。
在 VRRP 中我看到有一个集群组,但似乎要使其工作,您需要为其分配虚拟 ip 或 vrrp 实例,而不是实际接口。

希望我的解释清楚了。我该如何解决这个问题?

答案1

回答我自己的问题。我最终在一个文档化的配置文件中找到了答案。(遗憾的是,keepalived 文档已经过时了,但产品仍在开发中,并且运行良好)

vrrp_instance default {
  virtual_router_id 1
  interface eth2
  priority 50
  track_interface {
    eth0
    eth1
  }
  virtual_ip_address P
    10.1.1.1/24 brd 10.1.1.255 dev bond0 label bond0:vrrp
  }

  #... other config ...
}

这里的关键是 track_interface。它表示 keepalived 在决定回退时将监视 eth0 和 eth1 的链接状态。它将使节点进入故障状态。

相关内容