我有4台服务器,每台服务器都有相同的应用程序。我在网络上的负载均衡器是一个简单的循环。问题是,如果其中一个应用程序关闭,负载均衡器仍会尝试连接到它,然后向我的用户返回一个http错误。
我是否可以通过javascript调用一台服务器,如果收到错误,请调用下一台服务器?
感谢
答案 0 :(得分:3)
这里的真正答案必须是修复或更换负载均衡器,因为将呼叫路由到死服务器的负载均衡器不是......很有用......: - )
但回答你实际问过的问题:
简短的回答可能是“不”,但请继续阅读。
答案很长,可能取决于你所说的“电话”。如果您的意思是通过ajax调用服务器,那么为此,您必须设置服务器以支持Cross-Origin Resource Sharing(并要求您的用户使用browsers compatible with it),否则您将被阻止由SOP。但是如果你这样做,基本上就是如果你在响应对负载平衡地址的ajax调用时遇到错误,那么你将再次尝试使用特定的服务器地址。
您可以通过加载图片做同样的事情(通过使用特定地址再次尝试来回复error
事件。)
但是,如果您的用户只是链接到负载平衡地址或其他任何东西的链接,那将无济于事,这让我们回到:这确实需要在负载平衡器级别修复。
答案 1 :(得分:0)
根据负载均衡器的不同,它应该能够在其中一个主机不可用的情况下故障转移到其他主机。通常,您将设置状态页面(如果基于Web)或要监视的端口,如果它不可用,负载均衡器将自动从池中删除主机并将所有会话转移到其他主机(同样,这假设是基于网络的应用程序)。
尝试此操作的下一层将在服务器级别上。如果这是一个基于Web的应用程序,大多数Web服务器都带有一些心跳功能,可用于故障转移到其他Web服务器。
如果其他选项不可用,那么客户端(除非你谈论服务器编译的JS)将是你的最后一个求助。但是,在进一步帮助之前,我们需要有关您的应用程序的更多信息。