Amazon ECS 集群自动扩展 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon ECS 集群自动扩展

Amazon ECS 集群 Auto Scaling 使您能够更好地控制集群内的 Amazon EC2 实例调整方式。在创建 Auto Scaling 组容量提供程序并启用托管调整时,Amazon ECS 会管理在创建容量提供程序时使用的 Auto Scaling 组的缩减和扩展操作。根据您指定的目标容量值,Amazon ECS 代表您创建具有目标跟踪调整策略的 Amazon Auto Scaling 调整计划。然后,Amazon ECS 将此扩展计划与您的 Auto Scaling 组相关联。

对于已启用托管调整的每个 Auto Scaling 组容量提供程序,都会创建带有前缀 AWS/ECS/ManagedScaling 的 Amazon ECS 托管 CloudWatch 指标以及两个 CloudWatch 警报。CloudWatch 指标和警报用于监控 Auto Scaling 组中的Amazon EC2实例容量,并将触发 Auto Scaling 组根据需要进行缩放。

每个集群都有一个或多个 Auto Scaling 组容量提供程序和一个可选的原定设置容量提供程序策略。容量提供程序确定要用于任务的基础设施,容量提供程序策略确定任务在容量提供程序之间的分布方式。运行任务或创建服务时,您可以使用集群的默认容量提供程序策略,也可以指定容量提供程序策略来取代集群的默认策略。有关容量提供程序的更多信息,请参阅Amazon ECS 容量提供程序

集群 Auto Scaling 注意事项

使用集群 Auto Scaling 时应考虑以下因素:

New console
  • Auto Scaling 组会自动配置为托管实例保护和托管扩缩。

  • Amazon ECS 使用 AWSServiceRoleForECS 服务相关 IAM 角色来获取它代表您调用 Amazon Auto Scaling 所需的权限。有关使用和创建 Amazon ECS 服务链接 IAM 角色的更多信息,请参阅 Amazon ECS 的服务相关角色

  • 亚太地区(大阪)区域无法使用集群 Auto Scaling。

  • 用于 Auto Scaling 组的启动模板可以包含一种实例类型。

  • 创建容量提供程序的 IAM 用户需要 autoscaling:CreateOrUpdateTags 权限。这是因为Amazon ECS在将 Auto Scaling 组与容量提供商关联时会向其添加一个标签。

    重要

    确保您使用的任何工具都不会从 Auto Scaling 组中删除 AmazonECSManaged 标签。如果删除此标签,则 Amazon ECS 无法在扩展集群时对其进行管理。

  • 为了使组横向扩展,最大值必须大于 0。

  • 默认情况下,Amazon ECS 托管扩缩功能处于启用状态。有关更多信息,请参阅 托管扩展行为

  • 默认情况下,托管终止处于关闭状态。

  • 默认情况下,Auto Scaling 实例横向缩减保护处于关闭状态。有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南 中的使用实例横向缩减保护

  • 您的容量提供程序使用的 Auto Scaling 组不能有实例权重设置。与 Amazon ECS 容量提供程序一起使用时,不支持实例权重。

Classic console
  • Amazon ECS 使用 AWSServiceRoleForECS 服务相关 IAM 角色来获取它代表您调用 Amazon Auto Scaling 所需的权限。有关使用和创建 Amazon ECS 服务链接 IAM 角色的更多信息,请参阅 Amazon ECS 的服务相关角色

  • 亚太地区(大阪)区域无法使用集群 Auto Scaling。

  • 将容量提供程序与 Auto Scaling 组结合使用时,对于创建容量提供程序的 IAM 用户需要 autoscaling:CreateOrUpdateTags 权限。这是因为Amazon ECS在将 Auto Scaling 组与容量提供商关联时会向其添加一个标签。

    重要

    确保您使用的任何工具都不会从 Auto Scaling 组中删除 AmazonECSManaged 标签。如果删除此标签,则 Amazon ECS 无法在扩展集群时对其进行管理。

  • 如果 Auto Scaling 组使用相同或相似的实例类型,则托管扩展效果最佳。有关更多信息,请参阅 托管扩展行为

  • 使用带有按需实例和多个实例类型或竞价型实例的 Auto Scaling 组时,请将较大的实例类型放在优先级列表中,并且不指定权重。这时不支持指定权重。有关详细信息,请参见 Amazon Auto Scaling 用户手册中的使用多个实例类型 Auto Scaling 组

  • 创建服务时,指定跨可用区域分布的任务放置策略或基于 CPU 或内存的 Binpack 策略的效果最佳。不要使用实例扩展策略,因为扩展与该策略类型相比较慢。

  • 与容量提供商关联的 Auto Scaling 组的所需容量不应由 Amazon ECS 管理的扩展策略进行更改或管理。

托管扩展行为

当使用启用托管扩展的 Auto Scaling 组容量提供程序时,Amazon ECS 估计要添加到集群的最佳实例数的下限,并使用此值确定要请求的实例数。下面更详细地描述了扩展行为。

  1. 对所有置备任务进行分组,以便每个组具有相同的精确资源需求。

  2. 使用多个实例类型时,Auto Scaling 组中的实例将按其属性(如 vCPU、内存、elastic network interface (ENI)、端口和 GPU)进行排序,并为每个属性选择最大的实例类型。

  3. 对于每组任务,计算运行未放置任务所需的实例数。此计算使用 binpack 策略,考虑到任务的 vCPU、内存、弹性网络接口 (ENI)、端口和 GPU 要求以及 Amazon EC2 实例的资源可用性。此值将被视为最大计算实例计数。

    注意

    此计算会考虑任何已定义的任务放置约束,但我们建议仅使用 distinctInstance 任务放置约束。

  4. 然后,Amazon ECS将启动 minimumScalingStepSize,如果计算的最大实例计数小于最小扩展步长大小,或者 maximumScalingStepSize 或最大计算的实例计数值。

有关此逻辑如何工作的更详细的说明,请参阅深入了解 Amazon ECS 集群 Auto Scaling