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

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

使用 Application Auto Scaling 创建步进缩放策略 Amazon CLI

此示例使用 Amazon CLI 命令为 Amazon ECS 服务创建分步扩展策略。对于不同的可扩展目标,请在 --service-namespace 中指定其命名空间,在 --scalable-dimension 中指定其可扩展维度,并在 --resource-id 中指定其资源 ID。

使用时 Amazon CLI,请记住您的命令在 Amazon Web Services 区域 配置文件中运行。如果您想要在不同的区域中运行命令,可以为配置文件更改默认区域,或者与命令一起使用 --region 参数。

步骤 1:注册可扩展目标

如果您尚未注册,请注册可扩展目标。使用register-scalable-target命令将目标服务中的特定资源注册为可扩展目标。以下示例使用 Application Auto Scaling 注册 Amazon ECS 服务。Application Auto Scaling 可扩展任务的数量,最少 2 个任务,最多 10 个任务。将每个 user input placeholder 替换为您自己的信息。

Linux、macOS 或 Unix

aws application-autoscaling register-scalable-target --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/my-cluster/my-service \ --min-capacity 2 --max-capacity 10

Windows

aws application-autoscaling register-scalable-target --service-namespace ecs ^ --scalable-dimension ecs:service:DesiredCount ^ --resource-id service/my-cluster/my-service ^ --min-capacity 2 --max-capacity 10
输出

如果成功,该命令会返回可扩展目标的 ARN。下面是示例输出。

{ "ScalableTargetARN": "arn:aws:application-autoscaling:region:account-id:scalable-target/1234abcd56ab78cd901ef1234567890ab123" }

步骤 2:创建步进扩展策略

要为可扩展目标创建步进扩展策略,可以使用以下示例来协助您入门。

Scale out
为横向扩展创建步进扩展策略(增加容量)
  1. 使用以下 cat 命令在主目录的名为 config.json 的 JSON 文件中存储步进扩展策略配置。以下是一个配置示例,其调整类型为PercentChangeInCapacity,该配置根据以下步骤调整(假设 CloudWatch 警报阈值为 70)来增加可扩展目标的容量:

    • 当指标的值大于或等于 70 但小于 85 时,将容量增加 10%

    • 当指标的值大于或等于 85 但小于 95 时,将容量增加 20%

    • 当指标的值大于或等于 95 时,将容量增加 30%

    $ cat ~/config.json { "AdjustmentType": "PercentChangeInCapacity", "MetricAggregationType": "Average", "Cooldown": 60, "MinAdjustmentMagnitude": 1, "StepAdjustments": [ { "MetricIntervalLowerBound": 0.0, "MetricIntervalUpperBound": 15.0, "ScalingAdjustment": 10 }, { "MetricIntervalLowerBound": 15.0, "MetricIntervalUpperBound": 25.0, "ScalingAdjustment": 20 }, { "MetricIntervalLowerBound": 25.0, "ScalingAdjustment": 30 } ] }

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

  2. 使用以下put-scaling-policy命令以及您创建config.json的文件来创建名为的扩展策略my-step-scaling-policy

    Linux、macOS 或 Unix

    aws application-autoscaling put-scaling-policy --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/my-cluster/my-service \ --policy-name my-step-scaling-policy --policy-type StepScaling \ --step-scaling-policy-configuration file://config.json

    Windows

    aws application-autoscaling put-scaling-policy --service-namespace ecs ^ --scalable-dimension ecs:service:DesiredCount ^ --resource-id service/my-cluster/my-service ^ --policy-name my-step-scaling-policy --policy-type StepScaling ^ --step-scaling-policy-configuration file://config.json
    输出

    输出包括作为策略唯一名称的 ARN。你需要它来为你的策略创建 CloudWatch 警报。下面是示例输出。

    { "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787:resource/ecs/service/my-cluster/my-service:policyName/my-step-scaling-policy" }
Scale in
为横向缩减创建步进扩展策略(减少容量)
  1. 使用以下 cat 命令在主目录的名为 config.json 的 JSON 文件中存储步进扩展策略配置。以下是一个配置示例,其调整类型为ChangeInCapacity,根据以下步骤调整(假设 CloudWatch 警报阈值为 50),该配置会降低可扩展目标的容量:

    • 当指标的值小于或等于 50 但大于 40 时,将容量减少 1

    • 当指标的值小于或等于 40 但大于 30 时,将容量减少 2

    • 当指标的值小于或等于 30 时,将容量减少 3

    $ cat ~/config.json { "AdjustmentType": "ChangeInCapacity", "MetricAggregationType": "Average", "Cooldown": 60, "StepAdjustments": [ { "MetricIntervalUpperBound": 0.0, "MetricIntervalLowerBound": -10.0, "ScalingAdjustment": -1 }, { "MetricIntervalUpperBound": -10.0, "MetricIntervalLowerBound": -20.0, "ScalingAdjustment": -2 }, { "MetricIntervalUpperBound": -20.0, "ScalingAdjustment": -3 } ] }

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

  2. 使用以下put-scaling-policy命令以及您创建config.json的文件来创建名为的扩展策略my-step-scaling-policy

    Linux、macOS 或 Unix

    aws application-autoscaling put-scaling-policy --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/my-cluster/my-service \ --policy-name my-step-scaling-policy --policy-type StepScaling \ --step-scaling-policy-configuration file://config.json

    Windows

    aws application-autoscaling put-scaling-policy --service-namespace ecs ^ --scalable-dimension ecs:service:DesiredCount ^ --resource-id service/my-cluster/my-service ^ --policy-name my-step-scaling-policy --policy-type StepScaling ^ --step-scaling-policy-configuration file://config.json
    输出

    输出包括作为策略唯一名称的 ARN。您需要此 ARN 来为您的策略创建 CloudWatch 警报。下面是示例输出。

    { "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787:resource/ecs/service/my-cluster/my-service:policyName/my-step-scaling-policy" }

步骤 3:创建调用扩展策略的警报

最后,使用以下 CloudWatch put-metric-alarm命令创建警报,以便与步进缩放策略一起使用。在本示例中,您将根据平均 CPU 利用率发出警报。如果警报在至少两个连续 60 秒的评估期间达到 70% 的阈值,则它将被配置为处于 ALARM 状态。要指定其他 CloudWatch 指标或使用您自己的自定义指标,请在中指定其名称,在中--metric-name指定其命名空间--namespace

Linux、macOS 或 Unix

aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service \ --metric-name CPUUtilization --namespace AWS/ECS --statistic Average \ --period 60 --evaluation-periods 2 --threshold 70 \ --comparison-operator GreaterThanOrEqualToThreshold \ --dimensions Name=ClusterName,Value=default Name=ServiceName,Value=sample-app-service \ --alarm-actions PolicyARN

Windows

aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service ^ --metric-name CPUUtilization --namespace AWS/ECS --statistic Average ^ --period 60 --evaluation-periods 2 --threshold 70 ^ --comparison-operator GreaterThanOrEqualToThreshold ^ --dimensions Name=ClusterName,Value=default Name=ServiceName,Value=sample-app-service ^ --alarm-actions PolicyARN