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