使用 ECS 的 Docker 级别负载均衡

Posted

技术标签:

【中文标题】使用 ECS 的 Docker 级别负载均衡【英文标题】:Docker level load balancing using ECS 【发布时间】:2018-04-29 13:39:28 【问题描述】:

我正在使用弹性 beanstalk 将 Web 服务部署为使用 ECS 在 AWS 上的 Docker 容器。 EBS 中可用的默认负载均衡器为我提供了网络级自动缩放来处理 EC2 实例上的负载。

如何处理应用程序级别的自动扩展并使用 ECS (如 Kubernetes 处理 docker)使用 dockerization 功能?我想在收到更多内存或 CPU 使用率时扩展我的个人 docker。请帮助我实现这一目标。

【问题讨论】:

【参考方案1】:

您可以让 ECS 集群由 auto scaling group 管理。这将处理 docker 图像底层的硬件。 至于容器本身,可以走application auto scaling的路。

由于这两个服务都可以配置为响应低档和高档的 CW 警报,因此您可以使用 HIGH cpu/ram 警报策略来添加 1 个主机和 2 个容器副本,并在 LOW 警报中删除相同数量的副本.

希望对你有帮助

【讨论】:

【参考方案2】:

您可以在更新服务时使用任务扩展,该服务附加了一个 cloudwatch 警报以向上/向下扩展并称为服务自动扩展。

参考:http://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-auto-scaling.html

【讨论】:

【参考方案3】:

这些不是这个问题的答案。在 ELB 服务上使用多容器 docker 环境,我们可以指定(在 Dockerrun.aws.json 中)我们的 docker 服务及其关系,但我们不能指定单个服务的实例数量。这意味着如果我们想扩展我们的 ELB docker 服务,我们可以使用自动扩展组和 CloudWatch 警报来做到这一点,但这意味着我们的整个 docker 服务环境都会受到影响:如果我们有 3 个 docker 服务,我们只能扩展它们一起,而不是单独的服务。

您唯一能做的就是使用弹性容器服务 (ecs)。在此服务中,您将创建集群(类似于 Kubernetes 方法),然后创建能够运行多个任务的单个服务,每个任务将是单个 docker 容器的规范。这样,您将能够以所需的方式运行您的服务并适当地扩展它们。

【讨论】:

以上是关于使用 ECS 的 Docker 级别负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

我是不是需要 AWS ECS 中带有 nginx 的 AWS 负载均衡器?

在没有负载平衡的情况下将 docker 部署到 AWS

阿里云ECS服务器SLB负载均衡实践

阿里云负载均衡权重管理脚本

负载均衡SLB

阿里云支持使用Keepalived搭建负载均衡软件吗?