ECS容量提供程序自动缩放实例选择

0

【以下的问题经过翻译处理】 你好,

我正在使用AWS ECS容量提供者来扩展我们运行的作业实例。这些作业的内存需求因ECS任务和容器级别而异。我们有一个连接到EC2自动伸缩组(ASG)的容量提供者。 ASG具有实例选择,使我们可以指定实例属性。在这里,我们为内存和CPU设置了大范围,并显示了数百个可能的实例。

当我们运行小任务(1GB的内存)时,它扩展了m5.largem6i.large实例,并且任务成功运行。这很棒,因为我们的任务得以运行,但所选的实例比我们的需求大得多。然后,我们让ASG缩小到0。然后,我们运行一个大作业(16GB),并开始扩展。但它开始了与之前相同的实例类型。实例类型具有8GB内存,而我们的任务需要单个实例的两倍。

在小作业的情况下,我希望容量提供者只扩展一个更接近作业(1GB)内存需求大小的实例。对于较大的作业,我希望容量提供者只扩展一个内存超过16GB以适应作业(16GB)的实例。

问题:

  • 有没有办法让容量提供者和自动缩放组更加响应挂起任务的资源需求?
  • 是否存在任何我可能配置错误的配置?
  • 我是否理解得不正确?有没有可以推荐的资源?
  • 有没有更好的方法来完成我想要的ECS操作?
  • 我概述的行为是否符合预期?

谢谢

profile picture
专家
已提问 10 个月前106 查看次数
1 回答
0

【以下的回答经过翻译处理】 我在答案中假设这些任务在不同的定义中(即,您有一个小型任务的任务定义,另一个/多个用于需要16GB RAM的大型任务)。在这种情况下,我会简单地创建一个不同的ASG(用作不同的集群容量提供程序),并为“每个服务”设置容量提供程序(即,为1到8GB RAM的任务设置一个,为16GB RAM及以上的任务设置另一个,如果需要,再设置一个用于中间任务)。由于ASG由ECS驱动,您只需要为每个ASG拥有1个启动模板或重用1个启动模板并用覆盖(最好使用3个不同的启动模板)。

我了解到,考虑到您已经拥有了位置策略,这似乎有些多余,但肯定它会防止ECS在竞赛条件下部署小实例(即,首先为小型任务获取实例类型),并将大型作业的ASG清晰地隔离开来。这也可以帮助未来的配置:如果您需要更大的磁盘用于更大的作业,或者需要GPU,那么您只需要更改一个LT/ASG(并反映到容量提供程序中)而不是为所有LT/ASG更改它或为不需要这些的任务付费GPU实例。

容量提供程序的好处是您可以将其定义到集群中并在服务级别进行“覆盖”,因此您的集群可以有4个容量提供程序,默认为其中之一(基础/权重分配),同时也可以让一些服务特别使用它们自己的配置。希望这可以帮助您:)例如,使用[x-ecs](https://docs.compose-x.io/syntax/compose_x/ecs.details/ecs.html#capacityproviderstrategy)可以执行

profile picture
专家
已回答 10 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则