跨不同子网的故障切换

我们已经使用DRBD和Heartbeat在Linux上实现了一个故障转移function,并且它工作的很好,现在我们有一个需求的变化,说明节点复制在不同的子网中,我们将不会有一个共同的虚拟IP,当我们使用机器同一个子网。

当我们有不同子网中的节点时,最好的故障切换方式是什么?

有几种方法来实现子网间的故障切换。 但根据具体要求有很多变体。 不pipe具体什么,你似乎试图实现的是路由健康注入 ; 即根据该服务的健康/可用性向特定服务(通常通过VIP )广告路线。

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

第三方设备

例如Citrix Netscaler或F5 BIGIP 。 这些设备通常提供非常丰富的function集。 除了高可用性要求之外,它们还提供了多个服务器之间的负载均衡,以及一些针对众所周知的应用程序协议(例如HTTP,HTTPS,DNS等)的高级运行状况检查function。 但是,它们非常昂贵。

基于主机的路由守护进程

例如Quagga或XORP 。 通过一些脚本,这些守护进程可以提供上述设备的一部分function,而没有相关的成本。 如果您将networkingconfiguration为接受来自主机的路由dynamic路由更新,并放入一些定期检查服务运行状况的脚本,则可以从每台真实服务器有条件地向VIP发送路由。 这里有一些考虑:

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

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

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

这个邮件列表页面讨论了使用RIP路由通告来允许服务器回答一个通用的IP地址,即使它们在不同的子网上。 你需要一些路由器的魔法才能使它工作。

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

或者,如果您不介意有点宕机,则可以使用短TTL的DNS条目。 只需更新DNSlogging即可更改服务器。

我们能够通过使我们的Linux服务器充当路由器(使用斑马+ ospf)
这里有一些细节,如果任何人有兴趣
-DRBD使用在两台机器上的lo:1接口上通告的不同子网进行复制
– 在lo:2上configuration的虚拟IP故障转移
– 对于心跳使用单播与另一个节点通话

最后一次我有这个要求,我使用每台机器一个IP绑定到机器和一个“服务IP”(这是IP客户端configuration为服务器的IP)。 我使用ultramonkey来监视服务和处理故障转移,Zebra与路由协议交互(为所有服务IP注入/ 32路由;我们有多个需要移动的服务,每个服务的主要主机基于与客户端的物理邻近)。

这些服务器位于英国伦敦和美国加利福尼亚州的某个地方(不,我不记得在哪里,我从来没有看过他们),GRE隧道提供网间连接(两个站点都有独立的互联网接入) 。

然而,我们并没有使用数据的连续复制,因为这个服务在每小时都会发生数据复制的情况下工作得很好,(大部分是读取,没有太多写入)。 复制是从“物理IP”到“物理IP”完成的。

一切你需要和更多,www.openbsd.org – 我不会开始写一本书来帮助你,但从FAQ和手册页开始,一旦你看到它拥有一切,你将会感到惊讶在这种情况下,你需要更多,更多。

内容切换?