【问题标题】:Dealing with failures of a web service running on multiple instances处理在多个实例上运行的 Web 服务的故障
【发布时间】:2017-04-05 16:12:40
【问题描述】:

我正在构建一个应用程序,它将调用具有 2 个相同实例的 Web 服务,每个实例运行在不同的服务器上,具有自己的 IP。

应用可以随时调用任何服务实例,但有时可能难以从其中一个实例获得响应(因为网络故障或实例问题)。

让应用自动停止使用有问题的实例的推荐方法是什么?

实例再次上线后如何恢复使用?

是否有标准库或工具来帮助这种情况?

【问题讨论】:

  • 通常你会有一个负载平衡器服务器将请求定向到两个实例。客户端应用程序应该连接到负载均衡器 URI,并且应该不知道您的两个实例。如果其中一个实例发生故障,负载均衡器会将所有流量引导到其余实例,直到故障实例恢复。

标签: load-balancing failover


【解决方案1】:

使用负载平衡器。

您的应用必须连接到 LB,而不是直接连接到 Web 服务器。 LB 维护它们配置的每个服务器的状态(通过超时或显式 http 状态调用)。它们会自动禁用来自断开连接的服务器的流量,并在实例返回后启用它。

稍后,您可以根据自己的要求(手动或自动缩放)添加或删除实例,而无需对您的应用进行任何更改。

HAProxy 和 Nginx 广泛用于互联网规模负载平衡。云提供商也将其作为服务提供,如果您在云上,您可以使用它们(例如 AWS 具有弹性负载平衡,Google Cloud 具有负载平衡)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多