跨不同子网的故障转移

use*_*925 5 networking linux

我们已经使用 DRBD 和 Heartbeat 在 Linux 上实现了故障转移解决方案,并且效果很好,现在我们的要求发生了变化,指出复制的节点位于不同的子网中,我们将没有在机器运行时使用的通用虚拟 IP同一个子网。

当我们在不同子网中有节点时,故障转移的最佳方法是什么?

Mur*_*iar 3

有多种方法可以实现子网之间的故障转移;但根据具体要求,有很多变体。无论具体细节如何,您似乎想要实现的是路由健康注入;也就是说,根据特定服务的运行状况/可用性来通告该服务的路由(通常通过VIP )。

实现这一点的一些方法包括:

第 3 方设备

例如Citrix NetscalerF5 BIGIP。这些设备通常提供非常丰富的功能集。除了满足您的高可用性要求之外,它们还提供多个服务器之间的负载平衡,以及针对众所周知的应用程序协议(例如 HTTP、HTTPS、DNS 等)的一些高级健康检查功能。然而,它们非常昂贵。

基于主机的路由守护进程

例如QuaggaXORP。通过一些脚本编写,这些守护进程可以提供上述设备的部分功能,而无需产生相关成本。如果您将网络配置为接受来自主机的动态路由更新,并放入一些定期检查服务运行状况的脚本,这将允许您有条件地从每个真实服务器向 VIP 通告路由。这里有一些注意事项:

  • 您需要拥有网络硬件的管理权限;
  • 您需要适当的控制措施,以确保基于主机的路由过程不会对您的网络基础设施产生任何影响,例如通过错误配置。

对您的情况的要求/限制进行一些澄清可能会有所帮助。一些问题:

  • 您是否需要主用/主用或主用/备用故障转移?
  • 这些应用程序是面向互联网的,还是仅供内部使用?
  • 您需要自动故障转移吗?
  • 是否需要负载平衡?
  • 您是否更喜欢任播解决方案,让用户连接到“最近”的服务实例?
  • 您的后端服务器是否需要查看源自其实际源 IP 地址的客户端连接,或者代理解决方案是否可以接受?