我正在与一些使用移动互联网与我的应用服务器通信的硬件单元合作。
最初,硬件中有一个硬编码的 IP 地址(负载均衡器),用于通信,将流量路由到我的应用程序服务器;现在,如果负载均衡器出现故障,就会产生单点故障,其背后的整个冗余基础设施都会变得毫无用处,因为它的目标是共享负载,而不是保持可用性。
现在我要求硬件制造商将其切换为使用 DNS,并使用多个A 记录我得到了更好的结果。在这种情况下,我可以让应用服务器直接与硬件一起工作;但如果一台服务器出现故障,一些硬件单元会在一段时间内无法通信,但会在 20-30 分钟内转到另一台服务器;因为 DNS 故障转移并不总是有效。
那么我该如何克服这个问题并让我的应用服务器始终保持正常工作呢?
答案1
由于你的问题比较笼统,没有提供任何涉及软件的详细信息,所以我的回答也很简短:只需使用一组两个负载均衡器,它们通过使用例如在它们之间共享一个“虚拟 IP”虚拟专用网络(“虚拟路由器冗余协议”)或起搏器(还有更多选项可用)。为此使用两台机器,它们要么是裸机,要么从两个不同的主机运行。如果其中一台机器出现故障,另一台机器将接管 IP。将您的记录指向此 IP(请记住:DNS 并非为实现高可用性而设计的。)
编辑1:正如@Ondra Sniper Flidr 在评论中提到的那样:另一种解决方案是保持活跃。
答案2
您的负载均衡器应具有高可用性,只需让两台设备协同工作即可。在任何时候,两台设备中的一台都配置为具有负载均衡器的 IP 地址,并且两台设备不断相互通信,以便备用设备知道活动设备仍在运行。
如果活动负载均衡器由于任何原因发生故障,备用设备会自动重新配置自身以获取负载均衡器 IP 地址,并继续平衡到后端集群的流量。