【问题标题】:AWS - Load balancing for ECS service with hard connections limit per containerAWS - ECS 服务的负载平衡,每个容器有硬连接限制
【发布时间】:2019-03-05 09:48:28
【问题描述】:

我在 ECS Fargate 上部署了一个容器作为服务。 容器应提供长 HTTP Websocket 连接并执行实时处理。在不同的用例中,每个连接的寿命从几分钟到几小时不等。

每个容器可以同时提供最多恒定数量的连接(例如最多 10 个连接),以便能够实时处理输入。

AWS 应用程序负载均衡器位于此服务的前面。 在常规的自动缩放规则中 - 容器数量可以通过监控 CPU 来扩展或缩小。 此应用程序负载均衡器对每个传入请求使用循环路由算法。

我的问题:

要求每个容器的连接数始终保持 HARD 限制,如何强制 ALB 不将新连接路由到没有可用连接槽的容器?

容器内的服务本身 - 它可以告诉 ALB 它已为新连接关闭吗?可能是通过特定的 HTTP 响应?

还有其他好的做法来处理这个要求吗?

【问题讨论】:

    标签: amazon-web-services amazon-elb amazon-ecs


    【解决方案1】:

    您需要为此编写自己的代码。

    一种可能的解决方案是结合:

    • 自动缩放
    • 生命周期挂钩
    • 容器实例耗尽。

    您的代码需要检测它正在处理的连接数。当数量达到 10 的限制时,将容器从 Auto Scaling 组中删除。通过使用生命周期钩子,您可以使容器保持活动状态。一旦你的 10 个连接达到 0,就完成容器的终止。

    请注意,这将导致在您排空已达到峰值的容器时启动一个新容器。

    我不知道另一种方法可以告诉 ALB 停止向特定容器发送流量而不删除它。它们的关键是 drainingtermination lifecycle 部分,因为您希望容器继续与客户端建立连接。

    【讨论】:

      猜你喜欢
      • 2017-05-23
      • 2021-07-21
      • 2020-12-31
      • 2018-10-30
      • 2019-10-28
      • 2018-12-08
      • 2017-09-21
      • 1970-01-01
      • 2015-12-04
      相关资源
      最近更新 更多