使用步进扩展策略扩展 Spot 队列 - Amazon Elastic Compute Cloud

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

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

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

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

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

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

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

当竞价型实例集因目标容量下降而终止某个实例时,该实例将收到一条竞价型实例中断通知。

限制

竞价型实例集请求必须使用 maintain 作为请求类型。request 类型的请求或 Spot 型限制不支持自动扩展。

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

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

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

  2. 在导航窗格中,选择 Alarms (警报)

  3. 选择 Create Alarm (创建警报)

  4. Specify metric and conditions (指定指标和条件) 页面上,选择 Select metric (选择指标)

  5. 选择 EC2 SpotFleet Request Metrics(队列请求指标),选择一个指标(例如 TargetCapacity),然后选择 Select metric(选择指标)。

    这将显示 Specify metric and conditions (指定指标和条件) 页面,其中显示一个图表以及有关所选指标的其他信息。

  6. Period (周期) 下,选择警报的评估周期,例如 1 分钟。评估警报时,每个周期都聚合到一个数据点。

    注意

    周期越短,创建的警报越敏感。

  7. Conditions (条件) 下,通过定义阈值条件来定义警报。例如,您可以定义一个阈值,在指标值大于或等于 80% 时触发警报。

  8. Additional configuration (附加配置) 下,对于 Datapoints to alarm (触发警报的数据点数),请指定必须有多少个数据点(评估期)处于 ALARM 状态才会触发警报,例如,1 个或 2 个(共 3 个)评估期。这将创建一个警报,如果多个连续周期超出阈值,该警报将进入 ALARM(警报)状态。有关更多信息,请参阅Amazon CloudWatch 用户指南中的评估警报

  9. 对于 Missing data treatment (缺失数据处理),选择某个选项(或保留 Treat missing data as missing (将缺失的数据视为缺失) 的默认值)。有关更多信息,请参阅 Amazon CloudWatch 用户指南 中的配置 CloudWatch 警报处理缺少数据的方式

  10. 选择 Next(下一步)。

  11. (可选)要接收扩展事件的通知,在 Notification (通知) 中,您可以选择或创建要用于接收通知的 Amazon SNS 主题。当然,您也可以立即删除通知,之后按需添加通知。

  12. 选择 Next(下一步)。

  13. Add a description (添加描述) 下,输入警报的名称和描述,然后选择 Next (下一步)

  14. 选择 Create Alarm (创建警报)

为您的 Spot 队列配置分步扩展策略(控制台)
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/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 为竞价型实例集配置分步扩展策略
  1. 使用 register-scalable-target 命令将 Spot 队列请求注册为可扩展目标。

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

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