ECS 容量提供程序是不是实际适用于每个 ec2 实例的一项任务?

Posted

技术标签:

【中文标题】ECS 容量提供程序是不是实际适用于每个 ec2 实例的一项任务?【英文标题】:Is ECS capacity provider actual for one task per one ec2 instance?ECS 容量提供程序是否实际适用于每个 ec2 实例的一项任务? 【发布时间】:2021-01-02 06:43:35 【问题描述】:

我有 ECS 集群,每个 EC2 实例 + ALB 有一个任务。

从 AWS 研讨会 https://ecsworkshop.com/capacity_providers/ec2/ 了解到 容量提供程序有助于在集群扩展时将任务放置到 ec2 实例。例如 8 个任务和 4 个(t2.small)实例,每个实例 2 个任务

但在我的情况下(每个 EC2 实例一个任务)我是否需要为我的集群配置容量提供程序?也许容量提供商可以解决其他问题? (扩大/缩小)例如

当真正需要容量提供者时。我应该在集群中配置一个容量提供者,我的 ecs 服务中的默认容量提供者策略吗?

【问题讨论】:

您是说在相同静态数量的 EC2 实例上拥有静态数量的 ECS 任务吗?在这种情况下,您就不需要容量提供程序的托管扩展部分。 容量提供者应该处理得很好,如果需要扩展任务,它会自动扩展实例。它的工作方式有点像 Kubernetes 中的集群自动缩放器,因为它会查看请求的所需资源并进行缩放以匹配它。以前,您将根据现有实例的资源利用率进行扩展。 当你上面提到的 CPU 利用率很高时,你打算如何横向扩展任务和底层实例?这里的常规方法是让 ECS 服务自动扩展策略跟踪 CPU 利用率,然后让容量提供者确保扩展 EC2 实例以支持所需数量的 ECS 任务。 您是否设置了 ECS 服务和 ASG 平均 CPU 利用率的警报?如果您不扩展您的问题以显示您迄今为止尝试过的内容,然后将您的问题集中在您想知道的内容上,这很难充分回答。 正如我上面所说,容量提供程序简化了扩展策略,您可以查看任何正在运行和待处理的任务所需的资源。使用非容量提供商扩展意味着您只关注现有利用率。如果您的 ECS 和 ASG 扩展是完全耦合的,那么它可能对您没有任何帮助。如果您决定添加另一个想要在同一集群上运行的 ECS 服务,那么容量提供程序将变得更加有用。 【参考方案1】:

我正在阅读您的场景的方式,听起来您正在使用“distinctInstance”的放置约束——在这种情况下,如果您使用容量提供程序,它应该处理您的 EC2 的横向扩展和横向扩展随着您的任务数量的增加和减少,实例。不过,如果我误解了,请告诉我!

【讨论】:

我不使用特定的放置策略和任务按内存资源放置。容器 1700 的硬限制和集群中我使用 t3.small 实例(2g ram)。这是什么意思? (它应该处理扩展和扩展)在这种情况下,容量提供程序可以帮助在扩展时同步任务和 ec2 实例的计数?

以上是关于ECS 容量提供程序是不是实际适用于每个 ec2 实例的一项任务?的主要内容,如果未能解决你的问题,请参考以下文章

使用 terraform 的 AWS ECS 容量提供程序

aws - ECS 容量提供者权限

AWS ECS 容量提供商

ECS 停止实例

iOS 网络输入流提供请求体(适用于大容量内容)

AWS EC2 实例未加入 ECS 集群