假设我有两个配置为主/从配置的路由器。
它们看起来像这样(地址不是真实的)
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 的链接状态。它将使节点进入故障状态。