New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
如何在 Fargate 上設定 Amazon ECS Service Auto Scaling?
我想在 AWS Fargate 上設定 Amazon Elastic Container Service (Amazon ECS) Service Auto Scaling。
簡短描述
若要增加或減少任務計數,請在 Fargate 上整合 Amazon ECS 與 Amazon CloudWatch 警報和 AWS 應用程式自動擴展。然後,您可以使用 CloudWatch 指標來設定您的 CloudWatch 警報。
當 CloudWatch 警報啟動自動擴展功能時,應用程式自動擴展會使用已設定的擴展政策來判斷新計數。然後,應用程式自動擴展會使用新的計數值,向 Amazon ECS 進行 UpdateService API 呼叫。Amazon ECS 服務排程器會啟動或關閉任務以符合新的計數。您的擴展活動會保持在 InProgress 狀態,直到新計數和執行中計數相同為止。
解決方法
**注意事項:**存取 Service Auto Scaling 設定的 AWS Identity and Access Management (IAM) 使用者必須擁有支援動態擴展之服務的適當許可。如需詳細資訊,請參閱 IAM permissions required for service auto scaling。
Amazon ECS 主控台
若要在 Fargate 上設定 Amazon ECS Service Auto Scaling,請使用 Amazon ECS 主控台來設定 Service Auto Scaling。然後,將擴展政策新增至服務。
設定 Service Auto Scaling
在 Amazon ECS 主控台中建立或更新服務時,請在 Service Auto Scaling 下方完成下列步驟:
- 選擇使用 Service Auto Scaling 選項。
- 在任務數量下限,輸入您希望 Service Auto Scaling 使用的任務數量下限。
- 在任務數量上限,輸入您希望 Service Auto Scaling 使用的任務作數量上限。
**注意事項:**任務的最小和最大數量是您服務的硬性限制。
將擴展政策新增至服務
根據您的需求,選擇目標追蹤政策或步驟擴展政策:
- 目標追蹤政策: 完成目標追蹤擴展政策中使用 Amazon ECS 主控台為您的 Amazon ECS 服務設定目標擴展政策下方的步驟。
- 步驟擴展政策: 完成步驟擴展政策中使用 Amazon ECS 主控台為您的 Amazon ECS 服務設定步驟擴展政策下方的步驟。
AWS CLI
**注意事項:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時發生錯誤,請參閱 Troubleshoot AWS CLI errors。此外,請確定您使用的是最新的 AWS CLI 版本。
若要在 Fargate 上設定 Amazon ECS Service Auto Scaling,請使用 AWS CLI 來設定 Service Auto Scaling。然後,建立目標追蹤或步驟擴展政策,以根據您設定的值進行擴展。
設定 Service Auto Scaling
如要使用「應用程式自動擴展」功能,將您的 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 指標在橫向擴充冷卻期間開始縮減,但橫向擴充活動已完成,則會執行縮減活動。
相關資訊
相關內容
- 已提問 4 個月前lg...
- 已提問 4 個月前lg...
- AWS 官方已更新 3 年前
- AWS 官方已更新 1 個月前
- AWS 官方已更新 4 年前
- AWS 官方已更新 2 個月前