迁移您的扩展计划 - Amazon Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

迁移您的扩展计划

本主题向您展示如何从扩展计划迁移到 Amazon EC2 Auto Scaling 和 Application Auto Scaling 策略。

重要

要迁移扩展计划,必须按精确顺序完成多个步骤。迁移扩展计划时,请不要对其进行更新,因为这会破坏操作顺序并可能导致不良行为。

第 1 步:查看现有设置

要确定必须移动哪些缩放设置,请使用describe-scaling-plans命令。

aws autoscaling-plans describe-scaling-plans \ --scaling-plan-names my-scaling-plan

记下要从现有扩展计划中保留的项目,其中可能包括以下内容:

  • MinCapacity— 可扩展资源的最小容量。

  • MaxCapacity— 可扩展资源的最小容量。

  • PredefinedLoadMetricType— 为预测性扩展指定负载指标的枚举。

  • PredefinedScalingMetricType— 一个枚举,它为目标跟踪(动态)缩放和预测性扩展指定缩放指标。

  • TargetValue— 缩放指标的目标值。

扩展计划和扩展策略之间的区别

扩展计划和扩展策略之间有一些重要的区别:

  • 扩展策略只能启用一种扩展类型:目标跟踪扩展或预测扩展。要同时使用这两种扩展方法,必须创建单独的策略。

  • 同样,您必须在各自的策略中分别定义预测性扩展的扩展指标和用于目标跟踪扩展的扩展指标。

步骤 2:创建预测性扩展策略

如果您不使用预测缩放,请直接跳至步骤 4:准备删除扩展计划

为了留出时间来评估预测,我们建议您先创建预测性扩展策略,然后再创建其他扩展策略。

对于任何具有现有负载指标规范的 Auto Scaling 组,请执行以下操作将其转换为基于 Amazon EC2 自动扩展的预测性扩展策略。

创建预测性扩展策略
  1. 在 JSON 文件中,定义一个MetricSpecifications结构,如以下示例所示:

    { "MetricSpecifications":[ { ... } ] }
  2. MetricSpecifications结构中,针对扩展计划中的每个负载指标,CustomizedLoadMetricSpecification使用扩展计划中的等效设置创建PredefinedLoadMetricSpecification或。

    以下是载荷指标部分结构的示例。

    With predefined metrics
    { "MetricSpecifications":[ { "PredefinedLoadMetricSpecification":{ "PredefinedMetricType":"ASGTotalCPUUtilization" }, ... } ] }

    有关更多信息,请参阅 PredictiveScalingPredefinedLoadMetricAmazon EC2 Auto Scaling API 参考中的。

    With custom metrics
    { "MetricSpecifications":[ { "CustomizedLoadMetricSpecification":{ "MetricDataQueries":[ { "Id":"load_metric", "MetricStat":{ "Metric":{ "MetricName":"MyLoadMetric", "Namespace":"MyNameSpace", "Dimensions":[ { "Name":"MyOptionalMetricDimensionName", "Value":"MyOptionalMetricDimensionValue" } ] }, "Stat":"Sum" } } ] }, ... } ] }

    有关更多信息,请参阅 PredictiveScalingCustomizedLoadMetricAmazon EC2 Auto Scaling API 参考中的。

  3. 将缩放指标规范添加到中MetricSpecifications并定义目标值。

    以下是扩展指标和目标值部分的结构示例。

    With predefined metrics
    { "MetricSpecifications":[ { "PredefinedLoadMetricSpecification":{ "PredefinedMetricType":"ASGTotalCPUUtilization" }, "PredefinedScalingMetricSpecification":{ "PredefinedMetricType":"ASGCPUUtilization" }, "TargetValue":50 } ], ... }

    有关更多信息,请参阅 PredictiveScalingPredefinedScalingMetricAmazon EC2 Auto Scaling API 参考中的。

    With custom metrics
    { "MetricSpecifications":[ { "CustomizedLoadMetricSpecification":{ "MetricDataQueries":[ { "Id":"load_metric", "MetricStat":{ "Metric":{ "MetricName":"MyLoadMetric", "Namespace":"MyNameSpace", "Dimensions":[ { "Name":"MyOptionalMetricDimensionName", "Value":"MyOptionalMetricDimensionValue" } ] }, "Stat":"Sum" } } ] }, "CustomizedScalingMetricSpecification":{ "MetricDataQueries":[ { "Id":"scaling_metric", "MetricStat":{ "Metric":{ "MetricName":"MyUtilizationMetric", "Namespace":"MyNameSpace", "Dimensions":[ { "Name":"MyOptionalMetricDimensionName", "Value":"MyOptionalMetricDimensionValue" } ] }, "Stat":"Average" } } ] }, "TargetValue":50 } ], ... }

    有关更多信息,请参阅 PredictiveScalingCustomizedScalingMetricAmazon EC2 Auto Scaling API 参考中的。

  4. 要仅进行预测,请添加值为Mode的属性ForecastOnly。在完成预测性缩放迁移并确保预测准确可靠之后,您可以更改模式以允许扩展。有关更多信息,请参阅 步骤 7:重新激活预测扩展

    { "MetricSpecifications":[ ... ], "Mode":"ForecastOnly", ... }

    有关更多信息,请参阅 PredictiveScalingConfigurationAmazon EC2 Auto Scaling API 参考中的。

  5. 如果您的扩展计划中存在该ScheduledActionBufferTime属性,则将其值复制到预测性扩展策略中的SchedulingBufferTime属性中。

    { "MetricSpecifications":[ ... ], "Mode":"ForecastOnly", "SchedulingBufferTime":300, ... }

    有关更多信息,请参阅 PredictiveScalingConfigurationAmazon EC2 Auto Scaling API 参考中的。

  6. 如果扩展计划中存在PredictiveScalingMaxCapacityBehaviorPredictiveScalingMaxCapacityBuffer属性,则可以在预测性扩展策略中配置MaxCapacityBreachBehaviorMaxCapacityBuffer属性。这些属性定义了当预测容量接近或超过为 Auto Scaling 组指定的最大容量时应发生的情况。

    警告

    如果将该MaxCapacityBreachBehavior属性设置为IncreaseMaxCapacity,则启动的实例数可能会超过预期值,除非您监控和管理增加的最大容量。增加的最大容量将变为 Auto Scaling 组新的正常最大容量,直到您手动对其进行更新。最大容量不会自动减少到原始的最大容量。

    { "MetricSpecifications":[ ... ], "Mode":"ForecastOnly", "SchedulingBufferTime":300, "MaxCapacityBreachBehavior": "IncreaseMaxCapacity", "MaxCapacityBuffer": 10 }

    有关更多信息,请参阅 PredictiveScalingConfigurationAmazon EC2 Auto Scaling API 参考中的。

  7. 使用唯一名称保存 JSON 文件。记下文件名。在下一步中,当你重新激活预测性扩展策略时,你需要它,然后在迁移过程结束时再次需要它。有关更多信息,请参阅 步骤 7:重新激活预测扩展

  8. 保存 JSON 文件后,运行put-scaling-policy命令。在以下示例中,将每个用户输入占位符替换为您自己的信息。

    aws autoscaling put-scaling-policy --policy-name my-predictive-scaling-policy \ --auto-scaling-group-name my-asg --policy-type PredictiveScaling \ --predictive-scaling-configuration file://my-predictive-scaling-config.json

    如果成功,此命令将返回策略的 Amazon Resource Name (ARN)。

    { "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-predictive-scaling-policy", "Alarms": [] }
  9. 对于要迁移到基于 Amazon EC2 自动扩展的预测性扩展策略的每个负载指标规范,重复这些步骤。

步骤 3:查看预测性扩展策略生成的预测

如果您不使用预测缩放,请跳过以下步骤。

在您创建预测性扩展策略后不久就会提供预测。在 Amazon EC2 Auto Scaling 生成预测后,您可以通过 Amazon EC2 Auto Scaling 控制台查看策略的预测并根据需要进行调整。

查看预测性扩展策略的预测
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Auto Scaling Groups,然后从列表中选择您的 Auto Scaling 组的名称。

  3. 自动扩展选项卡的预测性扩展策略中,选择您的策略。

  4. 监控部分中,您可以根据实际值查看策略对过去和未来负载和容量的预测。

    有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的查看预测性扩展监控图表

  5. 对您创建的每个预测性扩展策略重复这些步骤。

步骤 4:准备删除扩展计划

对于任何具有现有目标跟踪扩展配置的资源,请执行以下操作,以便在删除扩展计划之前从扩展计划中收集所需的任何其他信息。

要描述扩展计划中的扩展策略信息,请使用describe-scaling-plan-resources命令。在以下示例命令中,my-scaling-plan用您自己的信息替换。

aws autoscaling-plans describe-scaling-plan-resources \ --scaling-plan-name my-scaling-plan \ --scaling-plan-version 1

查看输出并确认您要迁移所述的扩展策略。使用此信息在中创建新的 Amazon EC2 Auto Scaling 和基于应用程序自动扩展的目标跟踪扩展策略。步骤 6:重新激活动态缩放

步骤 5:删除扩展计划

在创建新的目标跟踪扩展策略之前,必须删除扩展计划才能删除其创建的扩展策略。

要删除您的扩展计划,请使用delete-scaling-plan命令。在以下示例命令中,my-scaling-plan用您自己的信息替换。

aws autoscaling-plans delete-scaling-plan \ --scaling-plan-name my-scaling-plan \ --scaling-plan-version 1

删除扩展计划后,动态伸缩将停用。因此,如果流量或工作负载突然激增,则每个可扩展资源的可用容量不会自行增加。作为预防措施,您可能需要在短期内手动增加可扩展资源的容量。

增加 Auto Scaling 组的容量
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Auto Scaling Groups,然后从列表中选择您的 Auto Scaling 组的名称。

  3. Details(详细信息)选项卡上,选择 Group details(组详细信息)、Edit (编辑)

  4. 对于所需容量,请增加所需容量。

  5. 完成后,选择 “更新”。

将 Aurora 副本添加到数据库集群
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择数据库,然后选择您的数据库集群。

  3. 确保集群和主实例都处于可用状态。

  4. 选择操作添加读者

  5. 添加读取器页面上,为您的新 Aurora 副本指定选项。

  6. 选择 “添加阅读器”。

增加 DynamoDB 表或全局二级索引的预配置读取和写入容量
  1. https://console.aws.amazon.com/dynamodb/ 打开 DynamoDB 控制台。

  2. 在导航窗格中,选择 T ables,然后从列表中选择表的名称。

  3. 在 “其他设置” 选项卡上,选择 “读/写容量”、“编辑”。

  4. 编辑读/写容量页面上,对于读取容量预配置容量单位,增加表的预配置读取容量。

  5. (可选)如果您希望全局二级索引使用与基表相同的读取容量设置,请选中 “对所有全局二级索引使用相同的读取容量设置” 复选框。

  6. 对于写入容量,即预置容量单位,请增加表的预配置写入容量。

  7. (可选)如果您希望全局二级索引使用与基表相同的写入容量设置,请选中 “对所有全局二级索引使用相同的写入容量设置” 复选框。

  8. 如果您在步骤 5 或 7 中选中复选框,请向下滚动页面以更新所有全局二级索引的读取和写入容量。

  9. 选择保存更改以继续。

增加您的 Amazon ECS 服务的运行任务数
  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. 在导航窗格中,选择 Clusters,然后从列表中选择您的集群名称。

  3. 在 “服务” 部分中,选中服务旁边的复选框,然后选择 “更新”。

  4. 所需任务中,输入要为该服务运行的任务数。

  5. 选择更新

增加 Spot 队列的容量
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择竞价请求,然后选择您的竞价型队列请求。

  3. 依次选择 Actions (操作)Modify target capacity (修改目标容量)

  4. 修改目标容量中,输入新的目标容量和按需实例部分。

  5. 选择提交

步骤 6:重新激活动态缩放

通过创建目标跟踪扩展策略来重新激活动态扩展。

在为 Auto Scaling 组创建目标跟踪扩展策略时,可以将其直接添加到该组中。在为其他可扩展资源创建目标跟踪扩展策略时,首先要将该资源注册为可扩展目标,然后向可扩展目标添加目标跟踪扩展策略。

为 Auto Scaling 群组创建目标跟踪扩展策略

为 Auto Scaling 组创建目标跟踪扩展策略
  1. 在 JSON 文件中,CustomizedMetricSpecification使用扩展计划中的等效设置创建PredefinedMetricSpecification或。

    以下是目标跟踪配置的示例。在这些示例中,用您自己的信息替换每个用户输入的占位符

    With predefined metrics
    { "TargetValue": 50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ASGAverageCPUUtilization" } }

    有关更多信息,请参阅 PredefinedMetricSpecificationAmazon EC2 Auto Scaling API 参考中的。

    With custom metrics
    { "TargetValue": 100.0, "CustomizedMetricSpecification": { "MetricName": "MyBacklogPerInstance", "Namespace": "MyNamespace", "Dimensions": [{ "Name": "MyOptionalMetricDimensionName", "Value": "MyOptionalMetricDimensionValue" }], "Statistic": "Average", "Unit": "None" } }

    有关更多信息,请参阅 CustomizedMetricSpecificationAmazon EC2 Auto Scaling API 参考中的。

  2. 要创建扩展策略,请使用put-scaling-policy命令以及您在上一步中创建的 JSON 文件。在以下示例中,将每个用户输入占位符替换为您自己的信息。

    aws autoscaling put-scaling-policy --policy-name my-target-tracking-scaling-policy \ --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \ --target-tracking-configuration file://config.json
  3. 对于要迁移到基于 Amazon EC2 Auto Scaling 的目标跟踪扩展策略的每个基于扩展计划的扩展策略,重复此过程。

为其他可扩展资源创建目标跟踪扩展策略

接下来,通过执行以下配置任务,为其他可扩展资源创建目标跟踪扩展策略。

  • 使用 Application Auto Scaling 服务注册用于自动缩放的可缩放目标。

  • 在可扩展目标上添加目标跟踪扩缩策略。

为其他可扩展资源创建目标跟踪扩展策略
  1. 使用register-scalable-target命令将资源注册为可扩展目标并定义扩展策略的扩展限制。

    在以下示例中,将每个用户输入占位符替换为您自己的信息。对于命令选项,请提供以下信息:

    • --service-namespace— 目标服务的命名空间(例如,ecs)。要获取服务命名空间,请参阅参考资料。RegisterScalableTarget

    • --scalable-dimension— 与目标资源关联的可扩展维度(例如ecs:service:DesiredCount)。要获得可缩放的维度,请参阅RegisterScalableTarget参考资料。

    • --resource-id— 目标资源的资源 ID(例如,service/my-cluster/my-service)。有关特定资源 ID 的语法和示例的信息,请参阅RegisterScalableTarget参考资料。

    aws application-autoscaling register-scalable-target --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --min-capacity 1 --max-capacity 10

    如果成功,该命令会返回可扩展目标的 ARN。

    { "ScalableTargetARN": "arn:aws:application-autoscaling:region:account-id:scalable-target/1234abcd56ab78cd901ef1234567890ab123" }
  2. 在 JSON 文件中,CustomizedMetricSpecification使用扩展计划中的等效设置创建PredefinedMetricSpecification或。

    以下是目标跟踪配置的示例。

    With predefined metrics
    { "TargetValue": 70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ECSServiceAverageCPUUtilization" } }

    有关更多信息,请参阅《App licati PredefinedMetricSpecificationon Auto Scaling API 参考》中的。

    With custom metrics
    { "TargetValue": 70.0, "CustomizedMetricSpecification": { "MetricName": "MyUtilizationMetric", "Namespace": "MyNamespace", "Dimensions": [{ "Name": "MyOptionalMetricDimensionName", "Value": "MyOptionalMetricDimensionValue" }], "Statistic": "Average", "Unit": "Percent" } }

    有关更多信息,请参阅《App licati CustomizedMetricSpecificationon Auto Scaling API 参考》中的。

  3. 要创建扩展策略,请使用put-scaling-policy命令以及您在上一步中创建的 JSON 文件。

    aws application-autoscaling put-scaling-policy --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --policy-name my-target-tracking-scaling-policy --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration file://config.json
  4. 对于要迁移到基于应用程序 Auto Scaling 的目标跟踪扩展策略的每个基于扩展计划的扩展策略,重复此过程。

步骤 7:重新激活预测扩展

如果您不使用预测扩展,请跳过此步骤。

通过将预测缩放切换到预测和缩放来重新激活预测性扩展。

要进行此更改,请更新您在中创建的 JSON 文件,步骤 2:创建预测性扩展策略并将该Mode选项的值更改ForecastAndScale为,如下例所示:

"Mode":"ForecastAndScale"

然后,使用put-scaling-policy命令更新每个预测性扩展策略。在此示例中,用您自己的信息替换每个用户输入的占位符

aws autoscaling put-scaling-policy --policy-name my-predictive-scaling-policy \ --auto-scaling-group-name my-asg --policy-type PredictiveScaling \ --predictive-scaling-configuration file://my-predictive-scaling-config.json

或者,您可以在 Amazon EC2 Auto Scaling 控制台中进行此更改,方法是打开基于预测设置的比例。有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的 Amazon EC2 Auto Scaling 的预测性扩展

Amazon EC2 Auto Scaling 参考迁移目标跟踪扩展策略

为了便于参考,下表列出了扩展计划中的所有目标跟踪配置属性及其在 Amazon EC2 Auto Scaling PutScalingPolicy API 操作中的相应属性。

扩展计划源属性 亚马逊 EC2 Auto Scaling 目标属性
PolicyName PolicyName
PolicyType PolicyType
TargetTrackingConfiguration.CustomizedScalingMetricSpecification.Dimensions.Name TargetTrackingConfiguration.CustomizedMetricSpecification.Dimensions.Name
TargetTrackingConfiguration.CustomizedScalingMetricSpecification.Dimensions.Value TargetTrackingConfiguration.CustomizedMetricSpecification.Dimensions.Value
TargetTrackingConfiguration.CustomizedScalingMetricSpecification.MetricName TargetTrackingConfiguration.CustomizedMetricSpecification.MetricName
TargetTrackingConfiguration.CustomizedScalingMetricSpecification.Namespace TargetTrackingConfiguration.CustomizedMetricSpecification.Namespace
TargetTrackingConfiguration.CustomizedScalingMetricSpecification.Statistic TargetTrackingConfiguration.CustomizedMetricSpecification.Statistic
TargetTrackingConfiguration.CustomizedScalingMetricSpecification.Unit TargetTrackingConfiguration.CustomizedMetricSpecification.Unit
TargetTrackingConfiguration.DisableScaleIn TargetTrackingConfiguration.DisableScaleIn
TargetTrackingConfiguration.EstimatedInstanceWarmup TargetTrackingConfiguration.EstimatedInstanceWarmup¹
TargetTrackingConfiguration.PredefinedScalingMetricSpecification.PredefinedScalingMetricType TargetTrackingConfiguration.PredefinedMetricSpecification.PredefinedMetricType
TargetTrackingConfiguration.PredefinedScalingMetricSpecification.ResourceLabel TargetTrackingConfiguration.PredefinedMetricSpecification.ResourceLabel
TargetTrackingConfiguration.ScaleInCooldown Not available
TargetTrackingConfiguration.ScaleOutCooldown Not available
TargetTrackingConfiguration.TargetValue TargetTrackingConfiguration.TargetValue

¹ 实例预热是 Auto Scaling 组的一项功能,它有助于确保新启动的实例在将其使用数据提供给扩展指标之前准备好接收流量。当实例仍在预热时,Amazon EC2 Auto Scaling 会减慢向组中添加或删除实例的过程。我们建议您使用 Auto Scaling 组的默认实例预热设置来确保所有实例启动都使用相同的实例预热时间,而不是为扩展策略指定预热时间。有关更多信息,请参阅《Amazon EC2 Auto Scaling 用户指南》中的设置 Auto Scaling 组的原定设置实例预热

用于迁移目标跟踪扩展策略的 Auto Scaling 参考

为了便于参考,下表列出了扩展计划中的所有目标跟踪配置属性及其在 Application Auto Scaling PutScalingPolicy API 操作中的相应属性。

扩展计划源属性 Application Auto Scaling 目标属性
PolicyName PolicyName
PolicyType PolicyType
TargetTrackingConfiguration.CustomizedScalingMetricSpecification.Dimensions.Name TargetTrackingScalingPolicyConfiguration.CustomizedMetricSpecification.Dimensions.Name
TargetTrackingConfiguration.CustomizedScalingMetricSpecification.Dimensions.Value TargetTrackingScalingPolicyConfiguration.CustomizedMetricSpecification.Dimensions.Value
TargetTrackingConfiguration.CustomizedScalingMetricSpecification.MetricName TargetTrackingScalingPolicyConfiguration.CustomizedMetricSpecification.MetricName
TargetTrackingConfiguration.CustomizedScalingMetricSpecification.Namespace TargetTrackingScalingPolicyConfiguration.CustomizedMetricSpecification.Namespace
TargetTrackingConfiguration.CustomizedScalingMetricSpecification.Statistic TargetTrackingScalingPolicyConfiguration.CustomizedMetricSpecification.Statistic
TargetTrackingConfiguration.CustomizedScalingMetricSpecification.Unit TargetTrackingScalingPolicyConfiguration.CustomizedMetricSpecification.Unit
TargetTrackingConfiguration.DisableScaleIn TargetTrackingScalingPolicyConfiguration.DisableScaleIn
TargetTrackingConfiguration.EstimatedInstanceWarmup Not available
TargetTrackingConfiguration.PredefinedScalingMetricSpecification.PredefinedScalingMetricType TargetTrackingScalingPolicyConfiguration.PredefinedMetricSpecification.PredefinedMetricType
TargetTrackingConfiguration.PredefinedScalingMetricSpecification.ResourceLabel TargetTrackingScalingPolicyConfiguration.PredefinedMetricSpecification.ResourceLabel
TargetTrackingConfiguration.ScaleInCooldown¹ TargetTrackingScalingPolicyConfiguration.ScaleInCooldown
TargetTrackingConfiguration.ScaleOutCooldown¹ TargetTrackingScalingPolicyConfiguration.ScaleOutCooldown
TargetTrackingConfiguration.TargetValue TargetTrackingScalingPolicyConfiguration.TargetValue

¹ 当您的可扩展资源横向扩展(增加容量)和向内扩展(减少容量)时,Application Auto Scaling 会使用冷却时间来减慢扩展速度。有关更多信息,请参阅《App lication Auto Scaling 用户指南》中的定义冷却时间

其他信息

要了解如何通过控制台创建新的预测性扩展策略,请参阅以下主题:

要了解如何使用控制台创建新的目标跟踪扩展策略,请参阅以下主题: