为横向缩减创建步进扩缩策略 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

为横向缩减创建步进扩缩策略

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

Console
步骤 1:为指标低阈值创建 CloudWatch 警报
  1. 访问 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。

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

  3. 在导航窗格中,选择 Alarms, All alarms(警报,所有警报),然后选择 Create alarm(创建警报)。

  4. 选择选择指标

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

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

    注意

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

  7. Conditions(条件)下,执行以下操作:

    • 对于 Threshold type(阈值类型),选择 Static(静态)。

    • 对于每当 CPUUtilization,请指定您是希望指标值小于还是小于等于阈值以触发警报。然后,在 than(大于/小于)下,输入您希望超过警报的阈值。

      重要

      要使警报与横向缩减策略(警报的低阈值)一起使用,请确保不要选择大于或大于等于阈值。

  8. 其他配置下,执行以下操作:

    • 对于 Datapoints to alarm(触发警报的数据点数),输入指标值必须满足阈值条件才会触发警报的数据点(评估时间段)数。例如,2 个连续的 5 分钟时间段需要花 10 分钟才会调用警报状态。

    • 对于 Missing data treatment(缺失数据处理),选择 Treat missing data as bad (breaching threshold)(将丢失的数据视为不良数据(违反阈值))。有关更多信息,请参阅 Amazon CloudWatch 用户指南中的配置 CloudWatch 警报处理缺少数据的方式

  9. 选择下一步

    Configure actions(配置操作)页面会显示。

  10. Notification(通知)下面,选择一个在警报处于 ALARMOKINSUFFICIENT_DATA 状态时通知的 Amazon SNS 主题。

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

    要让警报不发送通知,请选择删除

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

  12. 选择下一步

  13. 输入警报的名称(例如,Step-Scaling-AlarmLow-RemoveCapacity)和可选的描述,然后选择 Next(下一步)。

  14. 选择创建警报

创建 CloudWatch 警报后,使用以下程序从中断的地方继续操作。

步骤 2:为横向缩减创建步进扩缩策略
  1. 访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,然后从导航窗格中选择 自动扩缩组

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

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

  3. 验证是否正确设置了扩缩限制。例如,如果您的组所需容量已经是最小,则需要指定一个新的最小值才能横向缩减。有关更多信息,请参阅 为自动扩缩组设置扩缩限制

  4. Automatic scaling(自动扩展)选项卡的 Dynamic scaling policies(动态扩展策略)中,选择 Create dynamic scaling policy(创建动态扩展策略)。

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

  6. 对于 CloudWatch alarm (CloudWatch 警报),请选择您的警报。如果尚未创建警报,请选择创建 CloudWatch 警报,然后完成上一程序中的步骤 4 到步骤 14 以创建警报。

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

    例如,要创建将组容量减少两个实例的横向缩减策略,请选择 Remove,在下一个字段中输入 2,然后选择 capacity units。默认情况下,此步骤调整的上限为警报阈值,下限为负 (-) 无穷。

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

  9. 选择创建

Amazon CLI

要创建横向缩减(减少容量)的步进扩缩策略,可以使用以下示例命令。将每个用户输入占位符替换为您自己的信息。

在使用 Amazon CLI 时,首先创建步进扩缩策略,该策略指示 Amazon EC2 Auto Scaling 在指标值减少时如何进行横向缩减。然后,通过确定要监控的指标、为警报定义指标的低阈值和其他详细信息,并将警报与扩缩策略关联,您可以创建警报。

步骤 1:为横向缩减创建策略

使用以下 put-scaling-policy 命令创建名为 my-step-scale-in-policy 的分步扩缩策略,调整类型为 ChangeInCapacity,并且在关联的 CloudWatch 警报超过指标的低阈值时将组容量减少 2 个实例。

aws autoscaling put-scaling-policy \ --auto-scaling-group-name my-asg \ --policy-name my-step-scale-in-policy \ --policy-type StepScaling \ --adjustment-type ChangeInCapacity \ --step-adjustments MetricIntervalUpperBound=0.0,ScalingAdjustment=-2

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

{ "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787:autoScalingGroupName/my-asg:policyName/my-step-scale-out-policy }
步骤 2:为指标低阈值创建 CloudWatch 警报

使用以下 CloudWatch put-metric-alarm 命令创建警报,基于至少两个连续评估期(两分钟)内 40% 的平均 CPU 阈值减小 Auto Scaling 组的大小。要使用您自己的自定义指标,请在 --metric-name 中指定其名称,并在 --namespace 指定其命名空间。

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