Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何在 Fargate 上設定 Amazon ECS Service Auto Scaling?
我想在 AWS Fargate 上設定 Amazon Elastic Container Service (Amazon ECS) Service Auto Scaling。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
當 Amazon CloudWatch 警示啟動自動擴展時,Application Auto Scaling 將使用您的擴展政策來決定新的所需數量。然後,Application Auto Scaling 會使用 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 console (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 註冊為 Application Auto Scaling 的可擴展目標:
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 替換為您的區域。Application Auto Scaling 會根據您的目標值建立 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 替換為您的區域。
Application Auto Scaling 會在擴展活動期間封鎖所有縮減活動,直到擴展完成為止。如果未達到您設定的數量,Amazon ECS 將使 InProgress 擴展活動逾時。逾時的原因包括影像或網路問題。如果 CloudWatch 指標在擴展冷卻時間內縮減,並且擴展活動完成,則 Application Auto Scaling 將執行縮減活動。
相關資訊
- 語言
- 中文 (繁體)

相關內容
- 已提問 2 年前
- 已提問 3 年前
