我们已经使用 DRBD 和 Heartbeat 在 Linux 上实现了故障转移解决方案,并且效果很好,现在我们的要求发生了变化,指出复制的节点位于不同的子网中,我们将没有在机器运行时使用的通用虚拟 IP同一个子网。
当我们在不同子网中有节点时,故障转移的最佳方法是什么?
有多种方法可以实现子网之间的故障转移;但根据具体要求,有很多变体。无论具体细节如何,您似乎想要实现的是路由健康注入;也就是说,根据特定服务的运行状况/可用性来通告该服务的路由(通常通过VIP )。
实现这一点的一些方法包括:
例如Citrix Netscaler或F5 BIGIP。这些设备通常提供非常丰富的功能集。除了满足您的高可用性要求之外,它们还提供多个服务器之间的负载平衡,以及针对众所周知的应用程序协议(例如 HTTP、HTTPS、DNS 等)的一些高级健康检查功能。然而,它们非常昂贵。
例如Quagga或XORP。通过一些脚本编写,这些守护进程可以提供上述设备的部分功能,而无需产生相关成本。如果您将网络配置为接受来自主机的动态路由更新,并放入一些定期检查服务运行状况的脚本,这将允许您有条件地从每个真实服务器向 VIP 通告路由。这里有一些注意事项:
对您的情况的要求/限制进行一些澄清可能会有所帮助。一些问题: