

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为横向扩展创建步进扩缩策略


要为您的自动扩缩组创建横向扩展的步进扩缩策略，请使用以下方法之一：

------
#### [ Console ]

**步骤 1：为指标高阈值创建 CloudWatch 警报**

1. 打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.amazonaws.cn/cloudwatch/)。

1. 如果需要，可以更改区域。从导航栏中，选择您的自动扩缩组所在的区域。

1. 在导航窗格中，选择 **Alarms, All alarms**（警报，所有警报），然后选择 **Create alarm**（创建警报）。

1. 选择**选择指标**。

1. 在 **All metrics**（所有指标）选项卡上，选择 **EC2**、**By Auto Scaling Group**（按 Auto Scaling 组），然后在搜索字段中输入 Auto Scaling 组的名称。然后，选择 `CPUUtilization` 并选择 **Select metric**（选择指标）。将显示 **Specify metric and conditions**（指定指标和条件）页面，其中显示一个图表以及有关指标的其他信息。

1. 在 **Period**（周期）下，选择警报的评估周期，例如 1 分钟。评估警报时，每个周期都聚合到一个数据点。
**注意**  
周期越短，创建的警报越敏感。

1. 在 **Conditions**（条件）下，执行以下操作：
   + 对于 **Threshold type**（阈值类型），选择 **Static**（静态）。
   + 对于**每当 `CPUUtilization` 为**，请指定您是希望指标值大于还是大于等于阈值以触发警报。然后，在 **than**（大于/小于）下，输入您希望超过警报的阈值。

1. 在**其他配置**下，执行以下操作：
   + 对于 **Datapoints to alarm**（触发警报的数据点数），输入指标值必须满足阈值条件才会触发警报的数据点（评估时间段）数。例如，2 个连续的 5 分钟时间段需要花 10 分钟才会调用警报状态。
   + 对于 **Missing data treatment**（缺失数据处理），选择 **Treat missing data as bad (breaching threshold)**（将丢失的数据视为不良数据（违反阈值））。有关更多信息，请参阅 *Amazon CloudWatch 用户指南*中的[配置 CloudWatch 警报如何处理丢失的数据](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data)。

1. 选择**下一步**。

   **Configure actions**（配置操作）页面会显示。

1. 在 **Notification**（通知）下面，选择一个在警报处于 `ALARM`、`OK` 或 `INSUFFICIENT_DATA` 状态时通知的 Amazon SNS 主题。

   要使告警为相同告警状态或不同告警状态发送多个通知，请选择**添加通知**。

   要让警报不发送通知，请选择**删除**。

1. 您可以保留 **Configure actions**（配置操作）页面的其他部分为空。将其他部分留空会创建警报，而不会将其与扩展策略相关联。然后，您可以从 Amazon EC2 Auto Scaling 控制台将警报与扩展策略关联。

1. 选择**下一步**。

1. 输入警报的名称（例如，`Step-Scaling-AlarmHigh-AddCapacity`）和可选的描述，然后选择 **Next**（下一步）。

1. 选择**创建警报**。

创建 CloudWatch 警报后，按照以下步骤继续从上次中断的地方继续。

**步骤 2：为横向扩展创建步进扩缩策略**

1. 在上打开 Amazon EC2 控制台 [https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/)，然后从导航窗格中选择 A **uto Scaling Gro** ups。

1. 选中您的自动扩缩组旁边的复选框。

   这时将在页面底部打开一个拆分窗格。

1. 验证是否正确设置了扩缩限制。例如，如果您的组所需的容量已经是最大，则指定一个新的最大值才能向外扩展。有关更多信息，请参阅 [为自动扩缩组设置扩缩限制](asg-capacity-limits.md)。

1. 在 **Automatic scaling**（自动扩展）选项卡的 **Dynamic scaling policies**（动态扩展策略）中，选择 **Create dynamic scaling policy**（创建动态扩展策略）。

1. 对于**策略类型**，选择**步进扩展**，然后指定该策略的名称。

1. 要获得**CloudWatch 警报**，请选择您的闹钟。如果您尚未创建警报，请选择**创建警 CloudWatch 报，然后完成上一个**过程中的步骤 4 到步骤 14 以创建警报。

1. 指定在使用 **Take the action (执行操作)** 来完成操作时，此策略对当前组大小进行的更改。您可以添加特定数量的实例或现有组大小的百分比，也可将组设置为准确的大小。

   例如，要创建将组容量增加 30% 的横向扩展策略，请选择 `Add`，在下一个字段中输入 `30`，然后选择 `percent of group`。默认情况下，此步骤调整的下限为警报阈值，上限为正 (\$1) 无穷。

1. 要添加另一个步骤，请选择 **Add step (添加步进)**，然后定义要缩放的量以及步进相对于警报阈值的下限和上限。

1. 要设置可扩展的最少实例数，请更新 **Add capacity units in increments of at least (添加容量单位的增量至少为)** `1` **capacity units (容量单位)** 中的数量字段。

1. （可选）对于**实例预热**，请根据需要更新实例预热值。

1. 选择**创建**。

------
#### [ Amazon CLI ]

要创建横向扩展（增加容量）的步进扩缩策略，可以使用以下示例命令。将每个 *user input placeholder* 替换为您自己的信息。

使用时 Amazon CLI，首先要创建分步扩展策略，该策略向 Amazon EC2 Auto Scaling 提供有关在指标值增加时如何扩展的说明。然后，通过确定要监控的指标、为警报定义指标的高阈值和其他详细信息，并将警报与扩缩策略关联，您可以创建警报。

**步骤 1：为横向扩展创建策略**  
使用以下[put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html)命令创建名为的分步扩展策略`my-step-scale-out-policy`，其调整类型为`PercentChangeInCapacity`，该策略可根据以下步骤调整来增加组的容量（假设 CloudWatch 警报阈值为 60%）：
+ 当指标值大于或等于 60% 但小于 75% 时，将实例计数增加 10% 
+ 当指标值大于或等于 75% 但小于 85% 时，将实例计数增加 20%
+ 当指标值大于或等于 85% 时，将实例计数增加 30%

```
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name my-asg  \
  --policy-name my-step-scale-out-policy \
  --policy-type StepScaling \
  --adjustment-type PercentChangeInCapacity \
  --metric-aggregation-type Average \
  --step-adjustments MetricIntervalLowerBound=0.0,MetricIntervalUpperBound=15.0,ScalingAdjustment=10 \
                     MetricIntervalLowerBound=15.0,MetricIntervalUpperBound=25.0,ScalingAdjustment=20 \
                     MetricIntervalLowerBound=25.0,ScalingAdjustment=30 \
  --min-adjustment-magnitude 1
```

记下策略的 Amazon Resource Name (ARN)。您需要它来为策略创建 CloudWatch 警报。

```
{
    "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:4ee9e543-86b5-4121-b53b-aa4c23b5bbcc:autoScalingGroupName/my-asg:policyName/my-step-scale-in-policy
}
```

**步骤 2：为指标高阈值创建 CloudWatch 警报**  
使用以下 CloudWatch [put-metric-alarm](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/put-metric-alarm.html)命令创建警报，根据平均 CPU 阈值增加 Auto Scaling 组的大小，至少连续两个评估期（两分钟）。要使用您自己的自定义指标，请在 `--metric-name` 中指定其名称，并在 `--namespace` 指定其命名空间。

```
aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmHigh-AddCapacity \
  --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average \
  --period 120 --evaluation-periods 2 --threshold 60 \
  --comparison-operator GreaterThanOrEqualToThreshold \
  --dimensions "Name=AutoScalingGroupName,Value=my-asg" \
  --alarm-actions PolicyARN
```

------