教程:通过 Amazon Web Services Management Console 和经典 Amazon ECS 控制台使用集群自动扩缩 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

教程:通过 Amazon Web Services Management Console 和经典 Amazon ECS 控制台使用集群自动扩缩

本教程分步演示了使用 Amazon Web Services Management Console 和经典 Amazon ECS 控制台创建用于集群自动扩缩的资源。如果资源需要名称,我们将使用前缀 ConsoleTutorial 来确保它们都具有唯一的名称,并使它们易于找到。

先决条件

本教程假设以下先决条件已完成:

步骤 1:创建 Amazon ECS 集群

请按照以下步骤创建 Amazon ECS 集群。本教程使用空集群,以便我们可以手动创建 Auto Scaling 资源。当您使用 Amazon Web Services Management Console 创建非空集群时,Amazon ECS 会创建一个 Amazon CloudFormation 堆栈以及 Auto Scaling 资源。我们希望避免在使用集群弹性伸缩功能时创建此 Amazon CloudFormation 堆栈。

创建空集群

  1. 打开 Amazon ECS 控制台:https://console.aws.amazon.com/ecs/

  2. 在屏幕顶部的导航栏中,选择 US West (Oregon) 区域。

  3. 在导航窗格中,选择 Clusters

  4. Clusters 页面上,选择 Create Cluster

  5. 对于 Select cluster compatibility (选择集群兼容性),选择 EC2 Linux + Networking (EC2 Linux + 联网),然后选择 Next Step (下一步)

  6. 对于 Cluster name (集群名称),输入 ConsoleTutorial-cluster 作为集群名称。

  7. 选择 Create an empty cluster (创建空集群),然后选择 Create (创建)

步骤 2:创建 Auto Scaling 资源

使用以下步骤创建 Amazon EC2 启动模板和 Auto Scaling 组。

创建 Amazon EC2 启动模板。

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在屏幕顶部的导航栏中,选择美国西部(俄勒冈)区域。

  3. 在导航窗格中的实例下,选择启动模板

  4. 在下一页上,选择创建启动模板

  5. 创建目标组页面,完成以下步骤。

    1. 对于启动模板名称,输入 ConsoleTutorial-LaunchTemplate

    2. 对于模板版本说明,提供启动模板版本的简短说明。

    3. 对于 Amazon Machine Image (AMI),搜索最新 Amazon ECS 优化 AMI。可以使用下面的链接检索 AMI ID:查看 AMI ID。有关更多信息,请参阅 检索经 Amazon ECS 优化的 AMI 元数据

    4. 对于实例类型,选择一个实例类型。对于本教程,采用 t2.micro 实例类型。

    5. 对于 Security groups,选择一个或多个安全组。

    6. 展开高级详细信息部分,指定 Amazon ECS 容器实例的 IAM 实例配置文件和用户数据。

      1. 对于 IAM 实例配置文件,选择您的容器实例 IAM 角色。有关更多信息,请参阅Amazon ECS 容器实例 IAM 角色

      2. 对于用户数据,将下面的脚本粘贴到字段。ConsoleTutorial-cluster 集群在第一步中创建。

        #!/bin/bash echo ECS_CLUSTER=ConsoleTutorial-cluster >> /etc/ecs/ecs.config
  6. 选择Create launch template(创建启动模板)。

接下来,使用该启动模板创建 Auto Scaling 组

创建 Auto Scaling 组

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在屏幕顶部的导航栏中,选择美国西部(俄勒冈)区域。

  3. 在导航窗格的 Auto Scaling 下方选择 Auto Scaling 组创建 Auto Scaling 组

  4. 创建 Auto Scaling 组页面完成以下步骤。

    1. 对于 Auto Scaling 组名称,输入 ConsoleTutorial-ASG 作为 Auto Scaling 组名称。

    2. 对于启动模板,选择 ConsoleTutorial-LaunchTemplate 启动模板。

    3. 查看启动模板的内容,然后选择下一步

    4. 配置设置步骤,在网络下方选择要使用的 VPC 以及一个或多个子网,然后选择下一步

    5. 配置堆栈选项步骤,选择下一步

    6. 配置组大小和缩放策略步骤,对所需容量输入 0。本教程使用 Amazon ECS 托管缩放,因此无需让 Auto Scaling 组启动任何初始实例。对于最小容量,输入 0。对于最大容量,输入 2

    7. 对于实例缩减保护,选择启用实例缩减保护,然后选择下一步。这使您能够对 Auto Scaling 组中的实例使用托管终止保护,从而防止包含任务的容器实例在缩减操作期间终止。

    8. 添加通知添加标签步骤,选择下一步

    9. 审核步骤中,检查 Auto Scaling 组设置,然后选择创建 Auto Scaling 组

  5. 重复步骤 3 和 4 以创建第二个 Auto Scaling 组。对于 Auto Scaling 组名,使用 ConsoleTutorial-ASG-burst,并在设置组大小时,将所需容量最小容量设置为 0 和将最大容量设置为 20

步骤 3:创建容量提供程序

按照以下步骤创建 Amazon ECS 容量提供程序。参阅 了解更多信息。

创建容量提供程序

  1. 打开 https://console.aws.amazon.com/ecs/ 上的 Amazon ECS 控制台。

  2. 在屏幕顶部的导航栏中,选择 US West (Oregon) 区域。

  3. 在导航窗格中,选择 Clusters

  4. Clusters (集群) 页面上,选择您的 ConsoleTutorial-cluster 集群。

  5. Capacity Providers (容量提供程序) 选项卡上,选择 Create (创建)

  6. 创建容量提供程序页面,完成以下步骤。

    1. 对于 Capacity provider name (容量提供程序名称),输入 ConsoleTutorial-capacityprovider 作为名称。

    2. 对于 Auto Scaling 组,选择创建的 ConsoleTutorial-ASG Auto Scaling 组。

    3. 对于 Managed scaling (托管调整),选择 Enabled (启用)。这样就让 Amazon ECS 可以管理容量提供程序的缩减和扩展操作。

    4. 对于 Target capacity % (目标容量百分比),输入 100

    5. 对于 Managed termination protection (托管终止保护),选择 Enabled (已启用)。这样可以防止包含任务和 Auto Scaling 组中的容器实例在缩减操作期间终止。

    6. 选择 Create (创建)

    7. 选择 View in cluster (在集群中查看) 以查看您的新容量提供程序。

    8. 重复步骤 4 至 6,在 ConsoleTutorial-ASG-burst Auto Scaling 组中创建第二个名为 ConsoleTutorial-capacityprovider-burst 的容量提供程序。

步骤 4:为集群设置原定设置容量提供程序策略

运行任务或创建服务时,Amazon ECS 控制台使用集群的原定设置容量提供程序策略。默认容量提供程序策略可通过更新集群来定义。

定义默认容量提供程序策略

  1. 打开 https://console.aws.amazon.com/ecs/ 上的 Amazon ECS 控制台。

  2. 在屏幕顶部的导航栏中,选择 US West (Oregon) 区域。

  3. 在导航窗格中,选择 Clusters

  4. Clusters (集群) 页面上,选择您的 ConsoleTutorial-cluster 集群。

  5. Cluster : ConsoleTutorial-cluster (集群:控制台教程 - 集群) 页上,选择 Update Cluster (更新集群)

  6. 对于 Default capacity provider strategy (默认容量提供程序策略),选择 Add provider (添加提供程序)

  7. 选择您的 ConsoleTutorial-capacityprovider 容量提供程序。

  8. 选择 Add provider (添加提供程序),选择您的 ConsoleTutorial-capacityprovider-burst 容量提供程序。

  9. 对于 Provider 1 (提供商 1),将 Base (基准) 值保留为 0,并将 Weight (权重) 值保留为 1

  10. 选择 Update(更新)。这会将容量提供程序添加到集群的默认容量提供程序策略。

  11. 选择 View cluster (查看集群)

步骤 5:注册任务定义

您必须先注册任务定义,然后才能在集群上运行任务。任务定义是分组在一起的一系列容器。以下示例是一个简单的任务定义,它使用 Docker Hub 中的 amazonlinux 映像,并且直接休眠。有关可用任务定义参数的更多信息,请参阅 Amazon ECS 任务定义

注册任务定义

  1. 打开 https://console.aws.amazon.com/ecs/ 上的 Amazon ECS 控制台。

  2. 在屏幕顶部的导航栏中,选择 US West (Oregon) 区域。

  3. 在导航窗格中,依次选择 Task Definitions (任务定义)Create new Task Definition (创建新任务定义)

  4. Create new Task Definition (创建新任务定义) 页面上,选择 EC2,然后选择 Next step (下一步)

  5. 选择 Configure via JSON (通过 JSON 配置),复制并粘贴以下内容,然后选择 Save (保存),选择 Create (创建)

    { "family": "ConsoleTutorial-taskdef", "containerDefinitions": [ { "name": "sleep", "image": "amazonlinux:2", "memory": 20, "essential": true, "command": [ "sh", "-c", "sleep infinity" ] } ], "requiresCompatibilities": [ "EC2" ] }

第 6 步:运行任务

为您的账户注册任务定义后,您可以在集群中运行任务。在本教程中,您将在 ConsoleTutorial-cluster 集群中运行五个 ConsoleTutorial-taskdef 任务定义实例。

运行任务

  1. 打开 Amazon ECS 控制台:https://console.aws.amazon.com/ecs/

  2. 在屏幕顶部的导航栏中,选择美国西部(俄勒冈)区域。

  3. 在导航窗格中,选择 Task Definitions

  4. 选择您的 ConsoleTutorial-taskdef 任务定义。

  5. Actions (操作) 菜单中选择 Run Task (运行任务)

  6. 按照以下步骤完成运行任务工作流。

    1. 对于 Capacity provider strategy (容量提供程序策略),必须选择集群的默认容量提供程序策略。

    2. 对于 Cluster (集群),选择您 ConsoleTutorial-cluster 集群。

    3. 对于 Number of tasks (任务数量),输入 5

    4. 对于 Placement Templates (放置模板),选择 BinPack

    5. 选择 Run Task (运行任务)

步骤 7:验证

本教程到目前为止,您应该有两个 Auto Scaling 组,每个组都有一个容量提供程序。容量提供程序已启用 Amazon ECS 托管调整。已创建一个集群,五个任务正在运行。

我们可以通过查看 CloudWatch 指标、Auto Scaling 组设置和 Amazon ECS 集群任务计数来确认是否一切正常。

查看集群的 CloudWatch 指标

  1. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

  2. 在屏幕顶部的导航栏中,选择美国西部(俄勒冈)区域。

  3. 在导航窗格上,选择 Metrics (指标)

  4. 全部指标选项卡上,选择 AWS/ECS/ManagedScaling

  5. 选择 CapacityProviderName, ClusterName

  6. 选择与 ConsoleTutorial-capacityprovider 容量提供程序对应的指标。

  7. Graphed metrics (图形化指标) 选项卡上,将 Period (周期) 更改为 30 seconds (30 秒),将 Statistic (统计数据) 更改为 Maximum (最大)

    图中的值显示了容量提供程序的目标容量值。它应该从 100 开始,这是我们设定的目标容量百分比。您应该看到它扩展到 200,这将触发目标跟踪调整策略的警报。然后,警报将触发 Auto Scaling 组扩展。

    
                        容量提供程序指标视图
  8. 为您的 ConsoleTutorial-capacityprovider-burst 指标重复步骤 5 至 6。

按照以下步骤查看您的 Auto Scaling 组详细信息,以确认执行了扩展操作。

确认 Auto Scaling 组已扩展

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在屏幕顶部的导航栏中,选择美国西部(俄勒冈)区域。

  3. 在导航窗格的 Auto Scaling 下,选择 Auto Scaling 组

  4. 对于每个 Auto Scaling 组,查看实例所需列中的值,以确认您的组扩展到每个组两个实例。

按照以下步骤查看您的 Amazon ECS 集群,以确认 Amazon EC2 实例已注册到集群,并且您的任务已转变为 RUNNING 状态。

要验证 Auto Scaling 组中的实例

  1. 打开 https://console.aws.amazon.com/ecs/ 上的 Amazon ECS 控制台。

  2. 在屏幕顶部的导航栏中,选择 US West (Oregon) 区域。

  3. 在导航窗格中,选择 Clusters

  4. Clusters (集群) 页面上,选择您的 ConsoleTutorial-cluster 集群。

  5. ECS 实例选项卡上,确认您看到四个已注册的实例,这些实例与您的 Auto Scaling 组值相匹配。

  6. Tasks (任务) 选项卡上,确认您看到五个处于 RUNNING 状态的任务。

步骤 8:清除

完成本教程后,请清除与本教程关联的资源,以避免对您未使用的资源产生费用。不支持删除容量提供程序和任务定义,但这些资源不会产生任何开销。

清除教程资源

  1. 打开 Amazon ECS 控制台:https://console.aws.amazon.com/ecs/

  2. 在屏幕顶部的导航栏中,选择 US West (Oregon) 区域。

  3. 在导航窗格中,选择 Clusters

  4. Clusters (集群) 页面上,选择您的 ConsoleTutorial-cluster 集群。

  5. Tasks (任务) 选项卡中,选择 Stop All (全部停止)。输入验证,然后再次选择 Stop All (全部停止)

  6. 按照以下步骤删除 Auto Scaling 组。

    1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

    2. 在屏幕顶部的导航栏中,选择美国西部(俄勒冈)区域。

    3. 在导航窗格的 Auto Scaling 下,选择 Auto Scaling 组

    4. 选择您的 ConsoleTutorial-ASG Auto Scaling 组,然后从操作菜单中选择删除

    5. 选择您的 ConsoleTutorial-ASG-burst Auto Scaling 组,然后从操作菜单中选择删除

  7. 打开 https://console.aws.amazon.com/ecs/ 上的 Amazon ECS 控制台。

  8. 在屏幕顶部的导航栏中,选择 US West (Oregon) 区域。

  9. 在导航窗格中,选择 Clusters

  10. Clusters (集群) 页面上,选择您的 ConsoleTutorial-cluster 集群。

  11. 选择 Delete Cluster (删除集群),输入确认短语,然后选择 Delete (删除)