我正在使用一些使用移动互联网与我的应用程序服务器通信的硬件单元。
最初,硬件在通信硬件中有一个硬编码的IP地址(负载均衡器),用于将stream量路由到我的应用程序服务器; 现在,如果负载平衡器在整个冗余基础架构失效的情况下创build一个单点故障,则它将变得无用,因为其目标是共享负载,而不是维持可用性。
现在我要求硬件创build者将其切换到使用DNS,并通过使用多个Alogging,我得到了更好的结果。 在这种情况下,我可以让应用程序服务器直接使用硬件。 但是如果一台服务器出现故障,一些硬件单元无法通信一段时间,但是会在20-30分钟内到达另一台服务器。 因为DNS故障转移不能始终工作。
那么我怎样才能克服这个问题,让我的应用服务器一直工作?
由于你的问题是相当通用的,并没有给出有关涉及的软件的任何细节,我的答案也很短:只需使用一组两个负载均衡器,它们之间共享一个“虚拟IP”通过使用例如vrrp “虚拟路由器冗余协议”)或起搏器 (还有更多选项可用)。 为此使用两台机器,它们是裸机或从两台不同的主机上运行。 如果其中一台机器停机,另一台机器将接pipeIP。 把你的logging指向这个IP(记住:DNS不是为了实现高可用性)。
编辑1:作为@Ondra狙击手Flidr在评论中提到:另一个解决scheme是keepalived 。
编辑2:你也可以看看CARP ,“通用地址冗余协议”。 例如,使用该协议的软件解决scheme将是UCARP 。
您的负载均衡器应该是高度可用的,通过简单的方法有两个设备协同工作。 在任何时候,这两个设备中的一个被configuration为具有负载平衡器IP地址,并且这两个设备不断地相互通信,以便待机设备知道主动设备仍在工作。
如果活动负载平衡器由于某种原因而closures,则备用设备将自动重新configuration以获取负载均衡器IP地址,并继续平衡到后端群集的stream量。