教程:通过 AWS 管理控制台 使用集群 Auto Scaling - Amazon Elastic Container Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

教程:通过 AWS 管理控制台 使用集群 Auto Scaling

Amazon ECS 集群 Auto Scaling 可以使用 AWS 管理控制台、AWS CLI 或 Amazon ECS API 进行设置和配置。

本教程分步演示了使用 AWS 管理控制台 创建用于集群 Auto Scaling 的资源。如果资源需要名称,我们将使用前缀 ConsoleTutorial 来确保它们都具有唯一的名称,并使它们易于找到。

有关 AWS CLI 教程,请参阅教程:通过 AWS CLI 使用集群 Auto Scaling

先决条件

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

步骤 1:创建 Amazon ECS 集群

请按照以下步骤创建 Amazon ECS 集群。本教程使用空集群,以便我们可以手动创建 Auto Scaling 资源。当您使用 AWS 管理控制台 创建非空集群时,Amazon ECS 会创建一个 AWS CloudFormation 堆栈以及 Auto Scaling 资源。我们希望避免在使用集群 Auto Scaling 功能时创建此 AWS CloudFormation 堆栈。

创建空集群

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

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

  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 资源

按照以下步骤创建 Auto Scaling 启动配置和 Auto Scaling 组。

创建 Auto Scaling 启动配置

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

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

  3. 在导航窗格中的 Auto Scaling (自动调整) 上,选择 Launch Configurations (启动配置)

  4. 在下一页上,选择创建启动配置

  5. Choose AMI (选择 AMI) 页面上,在 us-west-2 区域中搜索并选择 Amazon ECS 优化 Amazon Linux 2 AMI。可以使用以下链接检索 AMI ID:查看 AMI ID

  6. Choose Instance Type (选择实例类型) 页面上,选择 t2.micro,然后选择 Next: Configure details (下一步: 配置详细信息)

  7. Configure details 页面上,执行以下操作:

    1. 对于 Name (名称),输入 ConsoleTutorial-ASGlaunchconfig 作为启动配置名称。

    2. 对于 IAM role (IAM 角色),选择您的容器实例 IAM 角色。有关更多信息,请参阅Amazon ECS 容器实例 IAM 角色

    3. 展开 Advanced Details (高级详细信息) 部分以指定 Amazon ECS 容器实例的用户数据。

      将以下脚本粘贴到 User data (用户数据) 字段。ConsoleTutorial-cluster 集群在第一步中创建。

      #!/bin/bash echo ECS_CLUSTER=ConsoleTutorial-cluster >> /etc/ecs/ecs.config
    4. 选择 Skip to review

  8. 选择 Create launch configuration

接下来,使用该启动配置创建 Auto Scaling 组。

创建 Auto Scaling 组

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

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

  3. 在导航窗格中的 Auto Scaling (自动调整) 上,选择 Launch Configurations (启动配置)

  4. 在下一页上,选择我们在步骤 1 中创建的启动配置,然后选择 Create Auto Scaling group (创建 Auto Scaling 组)

  5. Configure Auto Scaling group details (配置 Auto Scaling 组详细信息) 页面上,执行以下操作:

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

    2. 对于 Group size (组大小),输入 0。本教程使用 Amazon ECS 托管调整,因此无需让 Auto Scaling 组启动任何初始实例。

    3. 对于 Network (网络),为您的 Auto Scaling 组选择 VPC。

    4. 对于 Subnet (子网),选择 VPC 中的一个子网。

    5. 展开 Advanced Details (高级详细信息) 部分。对于 Instance Protection (实例保护),请选择 Protect From Scale In (保护免于缩减)。这使您能够对 Auto Scaling 组中的实例使用托管终止保护,从而防止包含任务的容器实例在缩减操作期间终止。

  6. 选择 Next: Configure scaling policies

  7. Configure scaling policies (配置调整策略) 页面上,选择 Keep this group at its initial size (将此组保持在其初始大小)。本教程使用 Amazon ECS 托管调整,因此无需创建调整策略。

  8. 选择 Review (查看),然后选择 Create Auto Scaling group (创建Auto Scaling 组)

  9. 重复步骤 3 至 8,创建第二个 Auto Scaling 组,但在 Group name (组名称) 中输入 ConsoleTutorial-ASG-burst

  10. 按照以下步骤编辑每个 Auto Scaling 组的最大容量值。

    1. 选择 View your Auto Scaling Groups (查看您的 Auto Scaling 组)

    2. 选择您的 ConsoleTutorial-ASG 调整组。在 Details (详细信息) 选项卡上,选择 Edit (编辑)

    3. 对于 Max (最大值),输入 100,然后选择 Save (保存)

  11. 为您的 ConsoleTutorial-ASG-burst 调整组重复执行步骤 10。

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

按照以下步骤创建 Amazon ECS 容量提供程序。

创建容量提供程序

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

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

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

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

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

  6. Create Capacity Providers (创建容量提供程序) 窗口中,执行以下操作。

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

    2. 对于 Auto Scaling group (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

      重要

      如果在此步骤中出现错误,请尝试注销并再次登录控制台。如果错误仍然存在,我们建议使用 AWS CLI 教程。有关更多信息,请参阅教程:通过 AWS CLI 使用集群 Auto Scaling

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

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

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

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

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

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

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

  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.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

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

  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. https://console.amazonaws.cn/ecs/ 上打开 Amazon 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.amazonaws.cn/cloudwatch/

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

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

  4. All metrics (所有指标) 选项卡上,选择 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.amazonaws.cn/ec2/

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

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

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

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

确认 Auto Scaling 组已扩展

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

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

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

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

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

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

步骤 8:清理

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

清除教程资源

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

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

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

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

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

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

    1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

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

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

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

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

  7. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

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

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

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

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