使用步进扩展策略扩展 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. 在导航窗格中,选择警报

  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. 选择下一步

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

  12. 选择下一步

  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. 对于扩展策略策略类型,选择分步扩展策略

  7. 最初,扩展策略包含名为 ScaleUp 和 ScaleDown 的分步扩展策略。您可以完善这些策略,或选择 Remove policy 来删除它们。您也可以选择 Add policy (添加策略)

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

    1. 对于 Policy name(策略名称),输入此策略的名称。

    2. 对于策略触发器,可以选择现有的警报,也可以选择创建警报打开 Amazon CloudWatch 控制台并创建警报。

    3. 对于修改容量,定义扩展量以及分步调整的下限和上限。您可以添加或删除特定数量的实例或现有实例集大小的百分比,也可将实例集设置为准确的大小。

      例如,要创建将实例集容量增加 30% 的分步扩展策略,请选择 Add,在下一个字段中键入 30,然后选择 percent。默认情况下,添加策略的下限为警报阈值,上限为正 (+) 无穷。默认情况下,移除策略的上限为警报阈值,下限为负 (-) 无穷。

    4. (可选)要添加其他步骤,请选择添加步骤

    5. 对于冷却时间,指定新值(以秒为单位)或保留默认值。

  9. 选择保存

使用 AWS CLI 为竞价型实例集配置分步扩展策略
  1. 使用 register-scalable-target 命令将 Spot 队列请求注册为可扩展目标。

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

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