Amazon ECS 任务放置策略
任务放置策略是一种算法,用于选择放置任务的实例,或要终止的任务。可以在运行任务或创建新服务时指定任务放置策略。也可以针对现有服务更新任务放置策略。有关更多信息,请参阅Amazon ECS 任务放置。
对于作为 Amazon ECS 服务的一部分运行的任务,默认的任务放置策略是使用 attribute:ecs.availability-zone
的 spread
。服务中的任务没有默认的任务放置约束。
策略类型
Amazon ECS 支持以下任务放置策略:
binpack
-
将任务放置在容器实例上,以保留最少的未使用 CPU 或内存。此策略最大限度地减少了正在使用的容器实例的数量。
当使用此策略并执行横向缩减操作时,Amazon ECS 将终止任务。它根据任务终止后留在容器实例上的资源量执行此操作。任务终止后剩下可用资源最多的容器实例将终止该任务。
random
-
任务随机放置。
spread
-
根据指定的值均匀放置任务。接受的值为
instanceId
(或具有相同效果的host
)或应用于容器实例的任何平台或自定义属性,如attribute:ecs.availability-zone
。服务任务根据该服务的任务分布。独立任务根据同一任务组中的任务分布。有关任务组的更多信息,请参阅 任务组。
当使用
spread
策略并采取横向缩减行动时,Amazon ECS 将选择要终止的任务,以保持可用性区域之间的平衡。在可用区域内,将随机选择任务。
策略示例
您可以使用以下操作指定任务放置策略:CreateService、UpdateService 和 RunTask。
以下策略可在各可用区之间平均分配任务。
"placementStrategy": [ { "field": "attribute:ecs.availability-zone", "type": "spread" } ]
以下策略可在所有实例中平均分配任务。
"placementStrategy": [ { "field": "instanceId", "type": "spread" } ]
以下策略根据内存装填任务。
"placementStrategy": [ { "field": "memory", "type": "binpack" } ]
以下策略随机放置任务。
"placementStrategy": [ { "type": "random" } ]
以下策略跨可在多个可用区中平均分配任务,然后在每个可用区内的实例中平均分配任务。
"placementStrategy": [ { "field": "attribute:ecs.availability-zone", "type": "spread" }, { "field": "instanceId", "type": "spread" } ]
以下策略可在多个可用区中平均分配任务,然后根据每个可用区内的内存装填任务。
"placementStrategy": [ { "field": "attribute:ecs.availability-zone", "type": "spread" }, { "field": "memory", "type": "binpack" } ]