Amazon Elastic Compute Cloud
Linux 实例用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用步进扩展策略扩展Spot 队列

在使用步进扩展策略时,您可以指定 CloudWatch 警报以触发扩展过程。例如,如果您希望在 CPU 使用率达到特定水平时扩展,可以使用 Amazon EC2 提供的 CPUUtilization 指标创建警报。

在创建步进扩展策略时,您必须指定以下扩展调整类型之一:

  • Add – 按指定的容量单位数量或当前容量的指定百分比来增加队列的目标容量。

  • Remove – 按指定的容量单位数量或当前容量的指定百分比来缩减队列的目标容量。

  • Set to – 将队列的目标容量设为指定的容量单位数量。

当触发警报时,Auto Scaling 过程使用执行容量和扩展策略计算新的目标容量,然后相应地更新目标容量。例如,假设目标容量和执行容量为 10,扩展策略加 1。触发警报时,Auto Scaling 过程为 10 增加 1 得到 11,因此Spot 队列将启动 1 个实例。

请注意,当Spot 队列因目标容量下降而终止某个实例时,该实例将收到一条Spot 实例中断通知。

限制

  • Spot 队列请求必须使用 maintain 作为请求类型。一次性请求或 Spot 型限制不支持自动扩展。

先决条件

  • 考虑哪些 CloudWatch 指标对您的应用程序比较重要。您可以根据 AWS 提供的指标或您自己的自定义指标来创建 CloudWatch 警报。

  • 如果您打算在扩展策略中使用 AWS 指标,请为其启用 CloudWatch 指标集合 (如果提供这些指标的服务默认未启用它的话)。

  • 使用 AWS 管理控制台 为Spot 队列启用自动扩展功能时,它会创建一个名为 aws-ec2-spot-fleet-autoscale-role 的角色来授予 Amazon EC2 Auto Scaling 权限,以描述策略警报、监控队列的当前容量及修改队列的容量。如果您使用 AWS CLI 或 API 配置自动扩展功能,则可以为此用途使用该角色 (如果存在) 或手动创建您自己的角色。

    手动创建角色

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

    2. 在导航窗格中,选择 Roles

    3. 选择 Create role

    4. Select type of trusted entity (选择可信实体的类型) 页面上,选择 AWS service (AWS 服务)、EC2EC2 - Spot Fleet Auto Scaling (EC2 - Spot 队列 Auto Scaling),然后选择 Next: Permissions (下一步:权限)。

    5. Attached permissions policy 页面上,选择 Next: Review

    6. Review (审核) 页面上,键入角色的名称,然后选择 Create role (创建角色)。

创建 CloudWatch 警报

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

  2. 在导航窗格中,选择 Alarms

  3. 选择 Create Alarm

  4. CloudWatch Metrics by Category 选择一个类别,如 EC2 Spot MetricsFleet Request Metrics

  5. 选择一个指标,然后选择 Next

  6. 对于 Alarm Threshold,请键入警报的名称和描述,并为警报设置阈值和时间段数量。

  7. (可选) 如需接收扩展事件通知,请为 Actions 选择 New list,然后键入您的电子邮件地址。当然,您也可以立即删除通知,之后按需添加通知。

  8. 选择 Create Alarm

使用控制台为Spot 队列配置步进扩展策略

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

  2. 在导航窗格中,请选择 Spot Requests

  3. 选择您的Spot 队列请求,然后选择 Auto Scaling 选项卡。

  4. 如果未配置自动扩展,请选择 Configure

  5. 使用 Scale capacity between 设置队列的最小和最大容量。队列的自动扩展操作不会超出最小或最大容量范围。

  6. 最初,Scaling policies 包含名为 ScaleUp 和 ScaleDown 的策略。您可以完善这些策略,或选择 Remove policy 来删除它们。您也可以选择 Add policy 来添加策略。

  7. 要定义策略,请执行以下操作:

    1. Policy name 中键入策略的名称。

    2. 对于 Policy trigger,可以选择现有的警报,或选择 Create new alarm 来打开 Amazon CloudWatch 控制台并创建警报。

    3. 对于 Modify capacity,选择扩展调整类型、数字及单位。

    4. (可选) 要执行步进扩展,请选择 Define steps。默认情况下,添加策略的下限为负无穷,上限为警报阈值。默认情况下,删除策略的下限为警报阈值,上限为正无穷。要添加其他步骤,请选择 Add step

    5. (可选) 要修改冷却时间的默认值,请从 Cooldown period 中选择一个数字。

  8. 选择 Save

使用 AWS CLI 为Spot 队列配置步进扩展策略

  1. 使用 register-scalable-target 命令将Spot 队列请求注册为可扩展目标。

  2. 使用 put-scaling-policy 命令创建扩展策略。

  3. 使用 put-metric-alarm 命令创建触发扩展策略的警报。