Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
如何在 Fargate 上配置 Amazon ECS 服务自动扩缩?
我想在 AWS Fargate 上配置 Amazon Elastic Container Service(Amazon ECS)服务自动扩缩。
简短描述
要增加或减少任务计数,请将 Fargate 上的 Amazon ECS 与 Amazon CloudWatch 告警和 AWS 应用程序自动扩缩集成。然后,您可以使用 CloudWatch 指标来配置 CloudWatch 告警。
当您的 CloudWatch 告警启动自动扩缩时,应用程序自动扩缩使用配置的扩缩策略来确定新的计数值。然后,应用程序自动扩缩使用新的计数值向 Amazon ECS 调用 UpdateService API。Amazon ECS 服务计划程序启动或关闭任务以满足新的计数值。在新的计数值和运行的计数值相同之前,您的扩缩活动将保持在 InProgress 状态。
解决方法
**注意:**访问服务自动扩缩设置的 AWS Identity and Access Management(IAM)用户必须拥有支持动态扩缩的服务的相应权限。有关更多信息,请参阅 Amazon ECS 服务自动扩缩所需的 IAM 权限。
Amazon ECS 控制台
要在 Fargate 上配置 Amazon ECS 服务自动扩缩,请使用 Amazon ECS 控制台配置服务自动扩缩。然后,将扩缩策略添加到该服务。
配置服务自动扩缩
在 Amazon ECS 控制台中创建或更新服务时,在服务自动扩缩下完成以下操作:
- 选择使用服务自动扩缩选项。
- 在最小任务数中,输入您希望服务自动扩缩使用的最小任务数。
- 在最大任务数中,输入您希望服务自动扩缩使用的最大任务数。
**注意:**最小和最大任务数是您服务的硬性限制。
向服务添加扩缩策略
根据您的要求,选择目标跟踪策略或步进扩缩策略:
- 目标跟踪政策: 完成目标跟踪扩缩策略中要使用 Amazon ECS 控制台为 Amazon ECS 服务配置目标扩缩策略下的步骤。
- 步进扩缩策略: 完成步进扩缩策略中要使用 Amazon ECS 控制台为 Amazon ECS 服务配置步进扩缩策略下的步骤。
AWS CLI
**注意:**如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请参阅 Troubleshoot AWS CLI errors。此外,确保您使用的是最新版本的 AWS CLI。
要在 Fargate 上配置 Amazon ECS 服务自动扩缩,请使用 AWS CLI 配置服务自动扩缩。然后,创建目标跟踪或步进扩缩策略,根据您设置的值进行扩缩。
配置服务自动扩缩
要将您的 Fargate 服务注册为应用程序自动扩缩的可扩缩目标,请运行以下命令:
aws application-autoscaling register-scalable-target \ --service-namespace ecs --scalable-dimension ecs:service:DesiredCount \ --resource-id service/<cluster>/<service-name> \ --min-capacity 1 --max-capacity 10 --region us-east-1
创建目标跟踪或步进扩缩策略
为可扩缩目标创建目标跟踪或步进扩缩策略。在以下示例中,您的 Fargate 服务是可扩缩目标。
目标跟踪策略:
aws application-autoscaling put-scaling-policy \ --service-namespace ecs --scalable-dimension ecs:service:DesiredCount \ --resource-id service/<cluster>/<service-name> \ --policy-name Test-target-tracking-scaling-policy --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration '{ "TargetValue": 75.0, "PredefinedMetricSpecification": {"PredefinedMetricType": "ECSServiceAverageCPUUtilization" }, "ScaleOutCooldown": 60,"ScaleInCooldown": 60}'
**注意:**创建目标跟踪策略时,应用程序自动扩缩会根据您选择的目标值创建 CloudWatch 告警以进行扩缩操作。
步进扩缩策略:
-
为您的横向扩展活动创建包含所需步骤调整的步进扩缩策略:
aws application-autoscaling put-scaling-policy \ --service-namespace ecs --scalable-dimension ecs:service:DesiredCount \ --resource-id service/<cluster>/<service-name> \ --policy-name Test-Step-scaling-policy-ScaleOut --policy-type StepScaling \ --step-scaling-policy-configuration '{"AdjustmentType": "ExactCapacity","StepAdjustments": [ { "MetricIntervalLowerBound": 20, "ScalingAdjustment": 10}, { "MetricIntervalLowerBound": 0, "MetricIntervalUpperBound": 20,"ScalingAdjustment": 5}],"Cooldown": 60, "MetricAggregationType": "Average"}'
-
将扩缩策略作为告警操作关联到 CloudWatch 告警:
aws cloudwatch put-metric-alarm \ --alarm-name Test-ScaleOut --metric-name MemoryUtilization \ --namespace AWS/ECS --statistic Average --period 60 --threshold 60 \ --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --datapoints-to-alarm 1 \ --dimensions Name=ClusterName,Value=<cluster> Name=ServiceName,Value=<service-name> --unit Percent \ --alarm-actions "arn:aws:autoscaling:us-east-1:xxxxxxx:scalingPolicy:xxxxxx/Test-Step-scaling-policy-ScaleOut"
-
重复上述步骤,为横向缩减创建第二个步骤扩缩策略和 CloudWatch 告警。
**注意:**当 CloudWatch 横向扩展时,CloudWatch 启动的所有横向缩减活动都将被冻结,直到横向扩展活动完成。当 Amazon ECS 未达到应用程序自动扩缩设置中配置好的计数值时,InProgress 横向扩展活动会超时。超时的常见原因包括映像问题或网络问题。在横向扩展处于冷却时间且某个横向扩展活动完成时,如果 CloudWatch 指标开始横向缩减,则会执行横向缩减活动。
相关信息
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 9 个月前