Amazon Elastic Container Service
开发人员指南 (API Version 2014-11-13)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

教程:具有自定义 CloudWatch 指标的 服务 Auto Scaling

以下过程帮助您创建一个自定义 CloudWatch 警报并将其与 服务 Auto Scaling 关联以扩展 (和缩减) 您的服务。

在本教程中,您将使用自定义 CloudWatch 警报在服务上配置 服务 Auto Scaling,该警报使用 HealthyHostCount 指标向上或向下扩展您的服务,具体取决于您的 应用程序负载均衡器 后的正常运行的主机数。

先决条件

本教程假定您有一个 AWS 账户和一个有权执行教程中介绍的所有操作的 IAM 管理员。本教程还假定您已创建包含 应用程序负载均衡器 的集群和服务。如果您没有这些资源 (或不确定是否有),则可以执行Amazon ECS 的设置 中的步骤来创建这些资源。

您的 Amazon ECS 容器实例还需要对您用来启动容器实例的 IAM 角色的 ecs:StartTelemetrySession 权限。如果您在 CloudWatch 指标可用于 Amazon ECS 之前已创建您的 Amazon ECS 容器实例,则可能需要添加此权限。有关检查您的 Amazon ECS 容器实例角色并为容器实例附加托管 IAM 策略的信息,请参阅在 IAM 控制台中检查 ecsInstanceRole

步骤 1:创建 CloudWatch 警报

创建要用作扩展触发器的自定义 CloudWatch 警报。

创建 CloudWatch 警报

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  2. 在导航窗格中,依次选择 AlarmsCreate Alarm

  3. CloudWatch Metrics by Category 下,选择 ApplicationELB Metrics 类别。

  4. 选择包含 Per AppELB, per TG MetricsHealthyHostCount 指标的行。

  5. 对于统计数据,选择 Minimum

  6. 对于时段,选择 1 Minute

  7. 选择 Next

  8. Alarm Threshold 下,键入警报的唯一名称 (例如,HealthyHostCount) 和警报的描述 (例如,Alarm when all hosts are unhealthy)。

  9. Whenever 下,对于 is,选择 < 并键入 1。对于 for,键入 3

  10. Additional settings 下,对于 Treat missing data as,选择 ignore (maintain alarm state),使缺失数据点不会触发警报状态更改。

  11. Actions 下,为 Whenever this alarm 选择 State is ALARM。对于 Send notification to,选择一个现有 SNS 主题或创建一个新 SNS 主题。

    要创建 SNS 主题,请选择 New list。对于 Send notification to,键入 SNS 主题的名称 (例如,HealthyHostCount),对于 Email list,键入在警报状态变为 ALARM 时要将通知发送到的一系列电子邮件地址 (用逗号分隔)。将向每个电子邮件地址发送一封主题订阅确认电子邮件。您必须先确认订阅,然后才会发送通知。

  12. 选择 Create Alarm

步骤 2:使用 Auto Scaling 配置更新服务

在为您的群集和服务创建 CloudWatch 警报后,您可以更新服务以将其与警报关联。

更新运行服务

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

  2. 在导航栏上,选择集群所在的区域。

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

  4. Clusters 页面上,选择您的服务驻留的集群的名称。

  5. Cluster: name 页面上,选择 Services

  6. 选中要更新的服务左侧的框并选择 Update

  7. Update Service 页面上,选择 Configure Service Auto Scaling

  8. Service Auto Scaling 页面上,执行以下操作:

    1. 选择 Configure Service Auto Scaling to adjust your service’s desired count

    2. 对于 Minimum number of tasks,输入 1

    3. 对于 Desired number of tasks,输入 2

    4. 对于 Maximum number of tasks,输入 3

    5. 对于 IAM role for Service Auto Scaling,选择一个 IAM 角色来授权 Application Auto Scaling 服务代表您调整您的服务的预期数量。如果您之前未创建此类角色,请选择 Create new role,系统将为您创建此角色。为了方便将来参考,为您创建的角色名为 ecsAutoscaleRole。有关更多信息,请参阅 Amazon ECS 服务 Auto Scaling IAM 角色

  9. Automatic task scaling policies 部分下,选择 Add scaling policy

  10. Add policy 页面上,执行以下操作:

    1. 对于 Policy name,输入策略的描述性名称 (例如,HealthyHostCount)。

    2. 对于执行策略的时间,选择使用现有警报,然后选择您在上一部分中创建的警报。

    3. 对于 Scaling action,选择 Add,然后在 0 > HealthyHostCount > -infinity 时为 tasks的数量输入 1

    4. (可选) 您可以重复步骤 3 来为单个警报配置多个扩展操作 (例如,在 HealthyHostCount 大于 3 时删除一个任务)。

    5. 对于 Cooldown period,输入 300 作为两次扩展操作之间的秒数。

    6. 选择 Save

  11. Service Auto Scaling 页面上,选择 Save 以完成服务的更新。