ECS服务弹性伸缩和弹性伸缩组

ECS Service auto scaling and auto scaling group

我决定开始使用 AWS ECS 服务,并创建了集群和一项服务我的问题是我想将它连接到 AWS Auto Scaling 组。 我已经关注了以下 guide.

指南有效,我的问题是这完全是浪费钱。

向导说当我的服务预留的总CPU台数量超过75台时,我需要添加机器,但实际上我的服务总是预留100% 因为我不想浪费钱,而且把 3 个 nodejs 任务放在 2 cpu 机器上也没什么用,反正没有硬限制。

这几天我都在苦思冥想,我不知道如何让它们一起工作正确

编辑: 目前是这样的:

  1. CPU 超过 75%,服务扩展在同一台服务器上创建了 2 个新任务,这意味着现在我有 1 个实例和 4 个任务

  2. 实例预留现在 100%,Auto Scaling 组正在创建新实例

  3. 创建新实例后,服务扩展将从旧实例中删除 2 个任务并向新实例添加 2 个新任务

只有我一个人,还是整个过程看起来都是浪费时间?这真的应该是这样还是(可能)我做错了什么?

我认为您缺少一些见解。

要使 ECS 自动缩放正常工作,您还必须在 ECS Service level 上设置缩放。

然后,缩放流程将如下所示:

  1. ECS 服务已达到 100% 使用率 CPU 并已保留 100% CPU
  2. ECS 服务通过启动附加任务进行扩展,使预留 CPU 总量达到 200%
  3. Auto Scaling 组发现预留容量多于可用容量并启动新机器。

此外,你可以在2 CPU台机器上完美运行多个nodejes任务。尤其是在微服务环境中,这些 nodejs 服务可能非常小(例如 128 CPU),但在同一台主机上仍然 运行 完美无缺。

最后我想,我想做的事是不可能的。 无法像在 Kubernetes 中那样使用 ECS 创建资源优化的集群。 (当然除非你用 lambda 写了一些魔法)

服务自动缩放和自动缩放组不能协同工作,但是,您可以使其与 fargate 完美配合,但它的扩展性很大,主要问题是您没有集群预留触发器高于 100%