跨不同子网的故障转移

跨不同子网的故障转移

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

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

答案1

有几种方法可以实现子网之间的故障转移;但根据具体要求,有很多变体。无论具体情况如何,您似乎试图实现的是路线健康注射;也就是说,向特定服务通告一条路由(通常通过贵宾) 根据该服务的健康状况/可用性。

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

第三方设备

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

基于主机的路由守护进程

例如斑驴或者异或算法。只需编写少量脚本,这些守护进程就可以提供上述设备的部分功能,而无需支付相关费用。如果您将网络配置为接受来自主机的路由动态路由更新,并放入一些定期检查服务运行状况的脚本,这将允许您有条件地从每个真实服务器向 VIP 通告路由。以下是一些注意事项:

  • 您需要拥有网络硬件的管理权限;
  • 您将需要采取控制措施来确保基于主机的路由过程不会对您的网络基础设施造成任何影响(例如由于配置错误)。

澄清一下您的情况中的要求/限制可能会有所帮助。以下是一些问题:

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

答案2

此邮件列表页面讨论了使用 RIP 路由通告来允许服务器响应一个公共 IP 地址,即使它们位于不同的子网中。您需要一些路由器魔法才能使其工作。

http://www.gossamer-threads.com/lists/linuxha/users/31977#31977

另外,如果您不介意停机时间,您可以使用具有较短 TTL 的 DNS 条目。只需更新 DNS 记录即可更改服务器。

答案3

我们能够通过让我们的 Linux 服务器充当路由器(使用 zebra + ospf)来实现这一点,
如果有人感兴趣的话,这里有一些细节
-DRBD 使用在两台机器的 lo:1 接口上公布的不同子网进行复制 -
在 lo:2 上配置了故障转移的虚拟 IP
-对于心跳,使用单播与另一个节点通信

答案4

内容切换?

相关内容