【问题标题】:ECS auto scailing cluster with ec2 count具有 ec2 计数的 ECS Auto Scaling 集群
【发布时间】:2019-06-21 06:11:12
【问题描述】:

为了部署我的 docker-compose,我使用 AWS ECS。

一切正常,除了自动缩放。

创建ECS集群时,

我可以决定实例的数量。

所以我把它定义为 1。

接下来,在我的集群上创建服务时,

还可以决定任务的数量。

我知道任务在实例上运行,所以我将其定义为 1。

并像这样指定自动缩放策略。

如你所知,如果 cpu 百分比在 5 分钟内达到 50,它会自动添加一个任务。

所以完成配置,我运行基准测试。

在服务描述中,期望的任务增加到 2 个。

但实例没有自动添加。

在事件日志中,

也许我在集群中将实例数定义为 1,所以它无法启动新任务。

为什么自动伸缩不会自动在我的集群上添加新实例?

我的配置有问题吗?

谢谢。

【问题讨论】:

    标签: amazon-ecs autoscaling


    【解决方案1】:

    您的 ecs 集群未自动缩放实例数量。它自动缩放在现有集群中运行的任务数量。一个 ec2 实例可以运行多个任务。要自动缩放实例计数,您需要使用 cloudwatch 警报: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch_alarm_autoscaling.html

    当 ECS 尝试使用“最接近的匹配容器实例”时,您收到此问题是因为端口冲突,在这种情况下,该实例以 9e5e 结尾。

    当尝试在该实例上启动任务时,它会注意到该实例“已在使用您的任务所需的端口”

    为了解决这个问题, 您需要为 ECS 集群使用动态移植。

    亚马逊在此处提供了有关如何执行此操作的教程: https://aws.amazon.com/premiumsupport/knowledge-center/dynamic-port-mapping-ecs/

    基本上, 您将需要修改任务定义中的端口映射,该任务定义包含您尝试运行和扩展的 docker 容器。

    主机端口的端口映射应为 0,然后是您的应用程序用于容器端口的端口号。

    零值将使运行的 ECS 集群中的每个 docker 实例为其主机端口使用不同的编号,从而消除您遇到的端口冲突。

    【讨论】:

    • 我使用了烧瓶(端口 5000)+ nginx(端口 80)。如果请求到 80 端口,它会反向代理到 5000 端口。我需要将nginx docker镜像的端口更改为0吗?或者,仅在我的任务定义中将端口更改为 0?
    • 我只在任务定义中将端口更改为 0:80,无法访问。健康检查也失败了。
    • 如果您现在遇到健康检查问题,请检查三件事。 1) 确保运行状况检查正在使用流量端口 2) 它可能会超时。增加超时 3) 检查您的安全策略。 EC2 实例可能不允许来自 ALB 的流量
    • 我将动态端口映射范围添加到我的安全组,它可以正常访问。但是,仍然抛出already using port 错误。
    • 所有容器都使用动态端口吗?现在可能是与端口冲突的烧瓶应用程序。您的烧瓶应用程序是否在可以动态移植的 docker 中?
    猜你喜欢
    • 2021-12-30
    • 1970-01-01
    • 2018-09-30
    • 2018-05-10
    • 2021-01-07
    • 2021-05-29
    • 2020-02-04
    • 2018-11-18
    • 2018-07-13
    相关资源
    最近更新 更多