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 的角色来授予 Auto Scaling 权限,以描述策略警报、监控队列的当前容量以及修改队列的容量。如果您使用 AWS CLI 或 API 配置自动扩展功能,则可以为此用途使用该角色 (如果存在) 或手动创建您自己的角色。

    手动创建角色

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

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

    3. 选择 Create New Role

    4. Set Role Name 页面上,请键入角色名称,然后选择 Next Step

    5. Select Role Type 页面上,选择 Amazon EC2 旁的 Select

    6. Attach Policy 页面上,选择 AmazonEC2SpotFleetAutoscaleRole 策略,然后选择 Next Step

    7. Review 页面上,选择 Create Role

    8. 选择您刚创建的角色。

    9. Trust Relationships 选项卡上,选择 Edit Trust Relationship

    10. ec2.amazonaws.com 更改为 application-autoscaling.amazonaws.com,然后选择 Update Trust Policy

创建 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 命令创建触发扩展策略的警报。