有关更多信息,请参阅 Amazon EC2 Auto Scaling 的步进和简单扩展策略 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

有关更多信息,请参阅 Amazon EC2 Auto Scaling 的步进和简单扩展策略

分步扩展和简单扩展策略可根据 CloudWatch 警报以预定义的增量扩展 Auto Scaling 组的容量。您可以定义单独的扩缩策略,以便在超过警报阈值时处理横向扩展(增加容量)和横向缩减(减少容量)。

通过步进缩放和简单扩展,您可以创建和管理调用扩展过程的 CloudWatch 警报。当警报被违反时,Amazon EC2 Auto Scaling 会启动与该警报关联的扩展策略。

我们强烈建议您使用目标跟踪扩展策略来根据平均 CPU 利用率或每个目标的平均请求数等指标进行扩展。使用目标跟踪,可以通过在容量增加时减少以及在容量减少时增加的指标,按比例扩展或缩减实例数。这有助于确保 Amazon EC2 Auto Scaling 密切遵循应用程序的需求曲线。有关更多信息,请参阅 目标跟踪扩展策略

分步扩缩策略的工作原理

要使用步进缩放,您需要先创建一个 CloudWatch 警报,用于监控 Auto Scaling 组的指标。定义确定触发警报的指标、阈值和评估周期数。然后,创建分步扩展策略,该策略定义在突破警报阈值时如何扩展您的群组。

在策略中添加分步调整。您可以根据警报的阈值突破大小定义不同的分步调整。例如:

  • 如果警报指标达到 60%,则扩展 10 个实例

  • 如果警报指标达到 75%,则扩展 30 个实例

  • 如果警报指标达到 85%,则扩展 40 个实例

当在指定的评估周期内超过警报阈值时,Amazon EC2 Auto Scaling 将应用策略中定义的步骤调整。针对其他警报触发情况,可以继续进行调整,直到警报状态恢复为 OK

每个实例都有一个预热期,以防止扩展活动对短时间内发生的变化过于敏感。您可以选择为扩展策略配置预热期。但是,我们建议使用默认实例预热,以便在预热时间发生变化时更轻松地更新所有扩展策略。有关更多信息,请参见 为 Auto Scaling 组设置原定设置实例预热

简单的扩展策略与分步扩展策略类似,不同之处在于它们基于单次扩展调整,每次扩展活动之间都有冷却期。有关更多信息,请参见 简单扩展策略

步进扩展的分步调整

在创建分步扩展策略时,您可以指定一个或多个步进调整,这些步进调整会根据警报违规的大小自动扩展实例数量。每个分步调整指定以下内容:

  • 指标值的下限

  • 指标值的上限

  • 要扩展的数量(基于扩展调整类型)

CloudWatch 根据与 CloudWatch 警报关联的指标的统计数据聚合指标数据点。超过警报时,将调用相应的扩缩策略。Amazon EC2 Auto Scaling 将聚合类型应用于来自的最新指标数据点 CloudWatch (而不是原始指标数据)。它将此聚合指标值与步进调整定义的上限和下限进行比较,以确定执行哪个步进调整。

您可以指定相对于违例阈值的上限和下限。例如,假设您针对指标高于 50% 时发出了 CloudWatch 警报并制定了扩展策略。然后,当指标低于 50% 时,又发出了另一个警报并采取横向缩减策略。您对每项策略进行了一组步骤调整,调整类型为PercentChangeInCapacity(或控制台中的组百分比):

示例:扩展策略的步进调整
下限 上限 调整

0

10

0

10

20

10

20

null

30

示例:缩放策略的步进调整
下限 上限 调整

-10

0

0

-20

-10

-10

null

-20

-30

这将创建以下扩展配置。

Metric value -infinity 30% 40% 60% 70% infinity ----------------------------------------------------------------------- -30% | -10% | Unchanged | +10% | +30% -----------------------------------------------------------------------

现在,假设您在当前容量和所需容量均为 10 的 Auto Scaling 组上使用此扩展配置。以下几点总结了扩展配置相对于组的所需容量和当前容量的行为:

  • 在聚合指标值大于 40 并小于 60 时,将保留所需容量和当前容量。

  • 如果指标值达到 60,根据扩展策略的第二个分步调整 (增加 10 个实例的 10%),组的所需容量将增加 1 个实例,总共达到 11 个实例。在新实例运行并且其指定预热时间过期后,当前组容量将增加到 11 个实例。如果指标值即使在这一容量增加之后也上升到 70,则组的所需容量将再增加 3 个实例,达到 14 个实例。这基于扩展策略的第三个步进调整(添加 11 个实例的 30%,即 3.3 个实例,向下舍入到 3 个实例)。

  • 如果指标值降到 40,根据缩减策略的第二个分步调整 (删除 14 个实例的 10%,向下取整为 1 个实例),组的所需容量将减小 1 个实例,达到 13 个实例。如果指标值即使在这一容量减少之后也下降至 30,则组的所需容量将再减少 3 个实例,达到 10 个实例。这基于缩减策略的第三个步进调整(移除 13 个实例的 30%,即 3.9 个实例,向下舍入为 3 个实例)。

为扩展策略指定步进调整时,请注意以下事项:

  • 如果使用Amazon Web Services Management Console,则可以将上限和下限指定为绝对值。如果您使用Amazon CLI或 SDK,则需要指定相对于违规阈值的上限和下限。

  • 分步调整范围不能重叠或有间隙。

  • 只有一个分步调整可以有空下限 (负无穷)。如果一个分步调整有负下限,则必须有一个分步调整有空下限。

  • 只有一个分步调整可以有空上限 (正无穷)。如果一个分步调整有正上限,则必须有一个分步调整有空上限。

  • 同一分步调整中的上限和下限不能为空。

  • 如果指标值高于违例阈值,则含下限而不含上限。如果指标值低于违例阈值,则不含下限而含上限。

扩展调整类型

您可以根据您选择的扩展调整类型来定义执行最佳扩展操作的扩展策略。您可以将调整类型指定为 Auto Scaling 组当前容量的百分比或以容量单位指定。通常,容量单位意味着一个实例,除非您使用的是实例权重功能。

对于步进扩展和简单扩展,Amazon EC2 Auto Scaling 支持以下调整类型:

  • ChangeInCapacity — 将当前组容量增加或减少指定的值。正值将增加容量,负调整值将减小容量。例如:如果组的当前容量为 3,调整值为 5,那么当执行此策略时,我们会向容量添加 5 个容量单位,共计 8 个容量单位。

  • ExactCapacity — 将组的当前容量更改为指定值。为此调整类型指定一个非负值。例如:如果当前组容量为 3,调整值为 5,则当执行此策略时,我们会将容量更改为 5 个容量单位。

  • PercentChangeInCapacity — 将当前组容量增加或减少指定的百分比。正值将增加容量,负值将减少容量。例如:如果当前容量为 10,调整值为 10%,那么当执行此策略时,我们会向容量添加 1 个容量单位,总共 11 个容量单位。

    注意

    如果得出的值不是整数,将按如下所示进行取整:

    • 大于 1 的值向下取整。例如,12.7 取整为 12

    • 0 和 1 之间的值舍入到 1。例如,.67 取整为 1

    • 0 和 -1 之间的值舍入到 -1。例如,-.58 取整为 -1

    • 小于 -1 的值向上取整。例如,-6.67 取整为 -6

通过 PercentChangeInCapacity,您还可以使用 MinAdjustmentMagnitude 参数指定要扩展的最小实例。例如,假定您创建一个增加 25% 的策略,并且您指定最小增量为 2 个实例。如果您有一个 Auto Scaling 组包含 4 个实例,而要执行该扩展策略,则 4 的 25% 就是 1 个实例。但是,因为您指定了最小增量 2,则将添加 2 个实例。

使用实例权重时,将MinAdjustmentMagnitude参数设置为非零值的效果会发生变化。该值以容量单位为单位。如需设置所要扩展的最小实例数,请将此参数设置为至少与最大实例权重一样大的值。

如果您使用实例权重,请记住,Auto Scaling 组的当前容量可能会根据需要超过所需的容量。如果要递减的绝对数或百分比表示递减的数量小于当前容量和所需容量之间的差值,则不会执行任何扩展操作。在您查看超过警报阈值时扩缩策略的结果时,必须考虑这些行为。例如,假设所需容量为 30,当前容量为 32。超过警报时,如果扩缩策略将所需容量减少 1,则不会执行扩缩操作。

实例预热

对于扩缩步骤,您可以指定新启动实例的预热时间(单位为秒)。在指定的预热时间过期前,实例不会计入自动扩缩组的聚合 EC2 实例指标。

当实例处于预热时间时,仅当未预热实例的指标值大于策略的告警阈值上限时,您的扩缩策略才会横向扩展。

如果组再次横向扩展,则仍在预热的实例将计算为下一横向扩展活动所需容量的一部分。因此,落入同一分步调整中的多个警报违例只会导致一个扩展活动。旨在持续 (但不过度) 扩大。

例如,假设您通过两个步骤创建策略。第一步,当指标达到 60 时,增加 10%;第二步,当指标达到70%时,增加 30%。自动扩缩组的所需容量和当前容量为 10。在聚合指标值小于 60 时,所需容量和当前容量不变。假设指标达到 60,因此添加 1 个实例(10 个实例中的 10%)。然后,在新实例仍在预热期间,指标达到 62。扩缩策略根据当前容量(仍为 10)计算新的所需容量。不过,组的所需容量已经增加至 11 个实例,因此,扩展策略不会进一步增加所需的容量。如果指标在新实例仍在预热时增长到 70,我们应添加 3 个实例(10 个实例的 30%)。但该组的所需容量已经是 11,所以我们只添加 2 个实例,因为新的所需容量为 13 个实例。

当横向扩展活动正在进行时,通过扩缩策略启动的所有横向缩减活动都将被阻止,直到实例完成预热。当实例完成预热后,如果发生横向缩减事件,那么在计算新的所需容量时,当前正在终止的任何实例都将计入该组的当前容量。因此不会从 Auto Scaling 组中删除更多实例。例如,当实例已经终止时,如果警报超出将所需容量减 1 的相同步进调整范围,则不会执行扩缩操作。

默认值

如果未设置任何值,则扩展策略将使用默认值,即为组定义的默认实例预热值。如果默认实例预热为空,则它将回退到默认冷却时间值。

注意事项

使用分步和简单扩缩策略时,需要注意以下事项:

  • 考虑是否可以足够准确地预测应用程序上的分步调整,以便使用分步扩缩。如果您的扩缩指标的升高或降低与可扩展目标的容量成比例,则建议您使用目标跟踪扩缩策略。您仍然可以选择使用步进扩展作为附加策略来实现更高级的配置。例如,您可以在利用率达到特定级别时配置更积极的响应。

  • 确保在横向扩展和横向缩减之间选择足够的余量,以防止摇摆。摆动是横向缩减和横向扩展的无限循环。也就是说,如果采取扩展操作,则指标值将更改并启动另一个相反方向的扩展操作。

为横向扩展创建分步扩展策略

要为您的 Auto Scaling 组创建分步扩展策略以进行扩展,请使用以下方法之一:

Console
步骤 1:为指标高阈值创建 CloudWatch 警报
  1. 打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/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于 Whenever is,指定您是否希望指标值大于或大于或等于违反警报的阈值。然后,在 than(大于/小于)下,输入您希望超过警报的阈值。

      重要

      要使警报与横向扩展策略(指标的高阈值)一起使用,请确保不要选择小于或小于等于阈值。

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

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

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

  9. 请选择 Next(下一步)

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

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

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

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

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

  12. 选择 Next(下一步)。

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

  14. 选择创建警报

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

步骤 2:为横向扩展创建分步扩展策略
  1. 访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。

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

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

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

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

  5. 对于策略类型,选择分步缩放,然后为策略指定名称。

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

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

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

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

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

  10. (可选)对于 实例预热,请根据需要更新实例预热值。

  11. 选择创建

Amazon CLI

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

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

步骤 1:创建横向扩展策略

使用以下put-scaling-policy命令创建名为的分步扩展策略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命令创建警报,根据平均 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

为缩放创建分步缩放策略

要为您的 Auto Scaling 组创建逐步缩放策略,请使用以下方法之一:

Console
步骤 1:为指标低阈值创建 CloudWatch 警报
  1. 打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/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于 Whenever is,指定您是否希望指标值小于或小于或等于触发警报的阈值。然后,在 than(大于/小于)下,输入您希望超过警报的阈值。

      重要

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

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

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

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

  9. 请选择 Next(下一步)

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

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

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

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

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

  12. 选择 Next(下一步)。

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

  14. 选择创建警报

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

步骤 2:为缩减创建分步扩展策略
  1. 访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。

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

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

  3. 验证是否正确设置了扩缩限制。例如,如果您的群组所需容量已达到最小值,则需要指定新的最小容量才能进行扩展。有关更多信息,请参见 为自动扩缩组设置扩缩限制

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

  5. 对于策略类型,选择分步缩放,然后为策略指定名称。

  6. 要获得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命令创建警报,在至少两个连续两分钟的评估周期内,根据平均 CPU 阈值 40% 减小 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

简单扩展策略

以下示例显示了如何使用 CLI 命令来创建简单的扩展策略。它们仍保留在本文档中,供任何想要使用它们的客户参考,但我们建议您改用目标跟踪或步进缩放策略。

与步进扩展策略类似,简单的扩展策略要求您为扩展策略创建 CloudWatch 警报。在您创建的策略中,您还必须定义是添加还是移除实例以及实例数量,或者将组设置为精确的大小。

步进扩展策略和简单扩展策略之间的主要区别之一是步进扩展策略可以进行步进调整。使用步长缩放,您可以根据您指定的步长调整对组的大小进行更大或更小的更改。

简单的扩展策略还必须等待正在进行的扩展活动或运行状况检查替换完成,冷却时间结束后,才能对其他警报做出响应。相比之下,在分步扩展中,即使扩展活动或运行状况检查替换正在进行中,策略也会继续响应其他警报。这意味着 Amazon EC2 Auto Scaling 会在收到警报消息时对所有警报违规行为进行评估。因此,即使只有一次缩放调整,我们也建议您改用步进缩放策略。

Amazon EC2 Auto Scaling 起初只支持简单扩展策略。如果您在引入目标跟踪和步进扩展策略之前创建了扩展策略,则您的策略将被视为简单的扩展策略。

使用以下put-scaling-policy命令创建一个名为的简单扩展策略my-simple-scale-out-policy,其调整类型为,当关联的PercentChangeInCapacity CloudWatch 警报违反指标上限阈值时,该策略会将组的容量增加 30%。

aws autoscaling put-scaling-policy --policy-name my-simple-scale-out-policy \ --auto-scaling-group-name my-asg --scaling-adjustment 30 \ --adjustment-type PercentChangeInCapacity

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

使用以下put-scaling-policy命令创建名为的简单扩展策略my-simple-scale-in-policy,其调整类型为,当关联的ChangeInCapacity CloudWatch 警报违反指标低阈值时,该策略会将组的容量减少一个实例。

aws autoscaling put-scaling-policy --policy-name my-simple-scale-in-policy \ --auto-scaling-group-name my-asg --scaling-adjustment -1 \ --adjustment-type ChangeInCapacity --cooldown 180

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