我们已经在
Linux上使用DRBD和Heartbeat实现了故障转移灵活性并且它运行良好,现在我们对要求的变化表明复制的节点位于不同的子网中,我们将不会有机器开启时使用的公共虚拟IP同一个子网.
当我们在不同的子网中有节点时,最好的故障转移方法是什么?
解决方法
有几种方法可以在子网之间实现故障转移;但根据具体要求,有很多变种.无论细节如何,您似乎想要实现的是路线健康注射;也就是说,根据该服务的健康/可用性,将路由通告给特定服务(通常通过
VIP).
第三方电器
例如Citrix Netscaler或F5 BIGIP.
这些设备通常提供非常丰富的功能集.除了高可用性要求之外,它们还提供多个服务器之间的负载平衡,以及针对众所周知的应用程序协议(例如HTTP,HTTPS,DNS等)的一些高级运行状况检查功能.然而,它们非常昂贵.
基于主机的路由守护进程
例如通过一些脚本编写,这些守护进程可以提供上述设备的一部分功能,而无需相关成本.如果将网络配置为接受来自主机的路由动态路由更新,并添加一些定期检查服务运行状况的脚本,则可以从每个真实服务器有条件地向VIP发布路由.这里有一些考虑:
>您需要拥有网络硬件的管理权限;
>您需要采取适当的控制措施,以确保基于主机的路由流程不会对您的网络基础架构产生任何影响,例如:通过配置错误.
在您的情况下对要求/约束的一些澄清可能会有所帮助.一些问题:
>您是否需要主动/主动或主动/备用故障转移?
>这些应用程序是面向互联网还是仅供内部使用?
>您需要自动故障转移吗?
>负载平衡是一项要求吗?
>您是否更喜欢anycast解决方案,用户连接到“最近”的服务实例?
>您的后端服务器是否需要查看源自其实际源IP地址的客户端连接,或者是否可以接受proxied解决方案?