Global outage event
If you're experiencing issues with your AWS services, then please refer to the AWS Health Dashboard. You can find the overall status of ongoing outages, the health of AWS services, and the latest updates from AWS engineers.
如何在 Fargate 上配置 Amazon ECS 服务自动扩缩?
我想在 AWS Fargate 上配置 Amazon Elastic Container Service(Amazon ECS)服务自动扩缩。
解决方案
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
当 Amazon CloudWatch 警报启动自动扩缩时,应用程序自动扩缩会使用您的扩缩策略来确定新的预期数量。然后,应用程序自动扩缩会使用新的 desiredCount 参数值启动对 Amazon ECS 的 UpdateService API 调用。Amazon ECS 服务计划程序会启动或停止任务以匹配新的预期数量。在新的预期数量与运行数量一致之前,您的扩缩活动将保持在 InProgress 状态。
您可以使用 Amazon ECS 控制台或 AWS CLI 在 Fargate 上配置 Amazon ECS 自动扩缩。配置服务自动扩缩设置的 AWS Identity and Access Management (IAM) 用户必须拥有支持动态扩缩的服务的权限。有关详细信息,请参阅 Amazon ECS 服务自动扩缩所需的 IAM 权限。
使用 Amazon ECS 控制台
完成以下步骤:
- 打开 Amazon ECS 控制台。
- 选择 Service auto scaling(服务自动扩缩),然后选择 Use service auto scaling(使用服务自动扩缩)选项。
- 为服务自动扩缩输入以下值:
对于 Minimum number of tasks(最小任务数),输入任务的最低数量。
对于 Maximum number of tasks(最大任务数),输入任务的最高数量。
**注意:**预期数量不低于最小值或高于最大值。 - 创建目标跟踪扩缩策略,或创建步进扩缩策略以添加到 Amazon ECS。
使用 AWS CLI
运行以下 register-scalable-target 命令,以将 Fargate 注册为应用程序自动扩缩的可扩缩目标:
aws application-autoscaling register-scalable-target \ --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/CLUSTER_NAME/SERVICE_NAME \ --min-capacity 1 --max-capacity 10 --region REGION
**注意:**请将 CLUSTER_NAME 替换为您的集群,将 SERVICE_NAME 替换为您的服务,将 REGION 替换为您的 AWS 区域。
然后,运行 put-scaling-policy 命令,为作为可扩缩目标的 Fargate 创建目标跟踪扩缩策略或步进扩缩策略。在命令中,包含您创建的 JSON 文件。
目标跟踪扩缩策略的命令示例:
aws application-autoscaling put-scaling-policy \ --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/CLUSTER_NAME/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}'
**注意:**请将 CLUSTER_NAME 替换为您的集群,将 SERVICE_NAME 替换为您的服务,将 REGION 替换为您的区域。应用程序自动扩缩会根据您的目标值创建 CloudWatch 警报以触发扩缩。
步进扩缩策略的命令示例:
aws application-autoscaling put-scaling-policy \ --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/CLUSTER_NAME/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"}'
**注意:**请将 CLUSTER_NAME 替换为您的集群,将 SERVICE_NAME 替换为您的服务,将 REGION 替换为您的区域。
如果您创建了步进扩缩策略,请运行以下 put-metric-alarm 命令将您的扩缩策略添加到 CloudWatch 警报中。然后,重复上述步骤,为扩缩活动创建第二个步进扩缩策略和 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 Name=ServiceName,Value=SERVICE_NAME --unit Percent \ --alarm-actions "arn:aws:autoscaling:us-east-1:xxxxxxx:scalingPolicy:xxxxxx/Test-Step-scaling-policy-ScaleOut"
**注意:**请将 CLUSTER_NAME 替换为您的集群,将 SERVICE_NAME 替换为您的服务,将 REGION 替换为您的区域。
在横向扩展完成之前,应用程序自动扩缩会阻止横向扩展活动期间的所有横向缩减活动。如果未达到您配置的数量,Amazon ECS 会让 InProgress 横向扩展活动超时。超时原因包括映像问题或网络问题。在横向扩展处于冷却时间且横向扩展活动完成时,如果 CloudWatch 指标横向缩减,则应用程序自动扩缩会执行横向缩减活动。
相关信息
- 语言
- 中文 (简体)

