我在两台服务器上设置了心跳,如下所示:
掌握:10.15.1.50
备份:10.15.1.51
(虚拟 IP:10.15.1.52)
因此,主服务器始终也拥有 10.15.1.52,但如果主服务器发生故障,备份服务器将接管 10.15.1.52。这非常完美,可在 10 秒内完成故障转移。我们有一个链接到 10.15.1.52 的域名,因此当服务器发生故障转移时,它是透明的。我们注意到,尽管 IP 切换时间不到 10 秒,但可能需要 10-20 分钟才能通过域名实际访问服务器。
由于 10.15.1.52 是私有 IP,因此我们确实有一个转发端口 80 的路由器。这没有任何意义,因为我们实际上并没有更改域名注册表中的任何内容。一旦 IP 故障转移,备份服务器就应该可以通过域名访问。
问题可能是路由器上的 NAT 吗?这几乎看起来像是某种主机验证问题。
编辑:现在我想起来,这可能是路由器上的 arp 表的问题
答案1
我几乎完全肯定 arp 不是你的问题。
我认为问题出在 dnat 连接跟踪。
从一个系统接管到另一个系统后,查看/proc/net/ip_conntrack
路由器/proc/net/nf_conntrack
。您应该看到 DNAT conntrack 条目指向发生故障的系统。
所以如果确实如此,您应该寻找解决方案来清除路由器上的特定 conntrack 表条目。