在 AWS 中自动扩展 docker 容器

Posted

技术标签:

【中文标题】在 AWS 中自动扩展 docker 容器【英文标题】:Auto scaling docker containers in AWS 【发布时间】:2018-04-27 18:54:46 【问题描述】:

借助 Cloud-watch 警报,我们可以使用 AWS 中的服务自动扩展功能扩展 docker 容器 - http://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_autoscaling_tutorial.html

如果不使用 Cloud-watch,CPU/内存利用率达到 80%,是否还有其他选项可用于扩展 docker 容器?

注意:我们可以在 Kubernetes 中使用水平 pod 自动缩放来实现相同的效果。我想在没有 Cloudwatch 支持的情况下在 AWS 中实现同样的目标。

【问题讨论】:

为什么不想使用 cloudwatch? 【参考方案1】:

您可以使用 AWS ECS 来扩展 docker 容器。它为 AWS 提供了一个原生编排平台,并支持 Kubernetes。

如果您决定使用 ECS 原生容器编排,它涉及一个学习曲线,您需要了解 ECS 特定术语,例如 Tasks、Services 等。Kubernetes 也是如此,您需要了解 Pods、Services 等。

在使用 ECS 时,它管理底层的复杂性,例如将容器放置在为容器集群提供动力的多个 EC2 上、支持负载均衡器集成以实现容器级负载均衡、通过替换不健康的容器来支持容错等。

还可以使用 ECS 附带的 AWS Fargate,其中集群中的底层节点完全由 AWS 管理,甚至不会暴露为集群供电的 EC2 的数量。这更像是您可以扩展和缩减大量容器,而无需担心将 EC2 分配给集群。但是,相比之下,它的价格昂贵,这限制了它在更具体的工作负载中的使用,这些工​​作负载需要更高级别的可扩展性和最低的可预测性,这证明了定价是合理的。

【讨论】:

ECS 自动伸缩使用 cloudwatch 警报。 OP 专门询问了不使用 CW。 虽然 CF 自带默认选项,但您可以实现自己的监控并使用 ECS API 进行扩展。(查看更新的答案) 这个答案没有为追求这个问题的人提供任何有意义的信息。 @troyfolger 感谢您的反馈。我已经用更多细节更新了答案。希望对您有所帮助。

以上是关于在 AWS 中自动扩展 docker 容器的主要内容,如果未能解决你的问题,请参考以下文章

在 AWS 上存储 Docker 容器的配置文件的最佳方式是啥?

将 docker 容器从本地推送到 aws ecr

Docker容器学习梳理-容器硬盘热扩容

使用 Jenkins 或 Job Scheduler 在 AWS ECS 上自动部署 Docker 容器

如何在 AWS ECS 中扩展任务/容器

docker安装php扩展gd库