自动扩缩组容量提供程序 - Amazon Elastic Container Service

自动扩缩组容量提供程序

Amazon ECS 容量提供程序可以使用 自动扩缩组来管理注册到其集群的 Amazon EC2 实例。您可以使用托管调整功能来让 Amazon ECS 管理 自动扩缩组的缩减和扩展操作,您也可以自行管理调整操作。有关更多信息,请参阅Amazon ECS 集群弹性伸缩

自动扩缩组容量提供程序注意事项

在经典控制台中使用 自动扩缩组容量提供程序时应考虑以下因素:

  • 建议您创建一个新的空 自动扩缩组,以便与容量提供程序一起使用,而不是使用现有组。如果您使用现有 自动扩缩组,则在自动扩缩组用于创建容量提供程序之前,与已在运行并注册到 Amazon ECS 集群的组关联的任何 Amazon EC2 实例都可能无法正确注册到该容量提供程序。使用容量提供程序策略中的容量提供程序时,这可能会引发问题。DescribeContainerInstances API 可以确认容器实例是否与容量提供程序关联。

    注意

    要创建空的 自动扩缩组,请将所需计数设置为零。创建容量提供程序并将其与集群关联后,可以扩展它。

    当您在基础设施下使用带有 Amazon EC2 实例选项的 Amazon ECS 控制台创建集群时,Amazon ECS 将代表您创建 Amazon EC2 Auto Scaling 启动配置和自动扩缩组,作为 AWS CloudFormation 堆栈的一部分。它们的前缀是 EC2ContainerService-<ClusterName>,这使得它们很容易识别。然后可以在该集群的容量提供程序中使用该 自动扩缩组。

  • 自动扩缩组必须具有大于零的 MaxSize 才能横向扩展。

  • 如果自动扩缩组无法横向扩展以适应运行的任务数,则任务将无法转换到 PROVISIONING 状态。

  • 使用托管式终止保护时,还必须启用托管式扩缩。否则,托管终止保护将无法工作。

  • 启用托管式扩展后,自动扩缩组容量提供程序将创建一个扩展策略资源来管理自动扩缩组的扩展。您可以按 ECSManaged 前缀识别这些资源。

  • 请勿修改与由容量提供程序管理的自动扩缩组关联的扩展策略资源。

  • 您可以将暖池添加到 自动扩缩组。暖池是一组预先初始化的 Amazon EC2 实例,可以在应用程序需要横向扩展时将其包含在集群中。有关暖池的更多信息,请参阅 为 自动扩缩组使用暖池

  • 自动扩缩组不能有实例权重设置。与 Amazon ECS 容量提供程序一起使用时,不支持实例权重。

  • 如果在创建容量提供程序时启用了托管终止保护,则 自动扩缩组和自动扩缩组中的每个 Amazon EC2 实例也必须启用阻止横向缩减的实例保护。有关更多信息,请参阅 AWS Auto Scaling 用户指南中的实例保护

  • 如果在创建容量提供程序时启用了托管式扩展,则可将自动扩缩组所需计数设置为 0。启用托管式扩展后,Amazon ECS 管理自动扩缩组的横向缩减和横向扩展操作。

有关创建 Amazon EC2 Auto Scaling 启动模板的更多信息,请参阅《Amazon EC2 Auto Scaling 用户指南》中的启动模板

有关创建 Amazon EC2 Auto Scaling 组的更多信息,请参阅《Amazon EC2 Auto Scaling 用户指南》中的 自动扩缩组

为 自动扩缩组使用暖池

Amazon ECS 支持 Amazon EC2 Auto Scaling 暖池。暖池是一组准备投入使用的预初始化 Amazon EC2 实例。每当您的应用程序需要横向扩展时,Amazon EC2 Auto Scaling 都会使用暖池中的预初始化实例,而不是启动冷实例,允许运行任何最终初始化过程,然后将实例投入使用。

要了解有关暖池以及如何将暖池添加到 自动扩缩组的更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的 Amazon EC2 Auto Scaling 的暖池

当您为 Amazon ECS 的自动扩缩组创建或更新温池时,无法设置在横向缩减时将实例退回暖池的选项(ReuseOnScaleIn)。有关更多信息,请参阅《AWS Command Line Interface 参考》中的 put-warm-pool

要将暖池与您的 Amazon ECS 集群一起使用,请在 Amazon EC2 Auto Scaling 组启动模板的 User data(用户数据)字段中将 ECS_WARM_POOLS_CHECK 代理配置变量设置为 true。以下示例介绍如何在 Amazon EC2 启动模板的 User data(用户数据)字段中指定代理配置变量。

#!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=MyCluster ECS_WARM_POOLS_CHECK=true EOF

ECS_WARM_POOLS_CHECK 变量仅在代理版本 1.59.0 和更高版本上受支持。有关变量的更多信息,请参阅 可用参数 页面。