ana*_*and 6 domain-name-system failover high-availability load-balancing
我正在使用一些使用移动互联网与我的应用程序服务器进行通信的硬件单元。
最初,硬件在硬件中有一个硬编码的 IP 地址(负载平衡器)用于通信,用于将流量路由到我的应用程序服务器;现在,如果负载均衡器出现故障,它会导致单点故障,它后面的整个冗余基础设施变得无用,因为它的目标是共享负载,而不是保持可用性。
现在我要求硬件创建者将其切换为使用 DNS,通过使用多个A 记录,我得到了更好的结果。在这种情况下,我可以让应用程序服务器直接与硬件一起工作;但是如果一台服务器宕机,一些硬件单元会暂时无法通信,但它会在 20-30 分钟内到达另一台服务器;因为 DNS 故障转移并不总是有效。
那么我怎样才能克服这个问题并让我的应用程序服务器一直以某种方式工作呢?
由于您的问题非常笼统,并且没有提供有关所涉及软件的任何详细信息,因此我的回答也很简短:只需使用一组两个负载均衡器,它们通过使用例如vrrp( “虚拟路由器冗余协议”)或起搏器(还有更多选项可用)。为此使用两台机器,它们要么是裸机,要么是从两个不同的主机运行。如果其中一台机器出现故障,另一台将接管 IP。将您的记录指向这个 IP(并记住:DNS 不是为了实现高可用性。)
编辑 1:正如评论中提到的@Ondra Sniper Flidr:另一个解决方案是keepalived。
编辑 2:您还可以查看CARP,即“通用地址冗余协议”。例如,使用该协议的软件解决方案是UCARP。
您的负载平衡器应该是高度可用的,通过让两个设备协同工作的简单权宜之计。在任何时候,两个设备中的一个被配置为具有负载均衡器 IP 地址,并且两个设备不断地相互交谈,因此备用设备知道活动设备仍在运行。
如果活动负载均衡器因任何原因关闭,备用设备会自动重新配置自身以拥有负载均衡器 IP 地址,并继续平衡到后端集群的流量。