如何在 Fargate 上設定 Amazon ECS 服務自動擴展?
我想在 AWS Fargate 上配置 Amazon Elastic Container Service (Amazon ECS) 服務自動擴展。
簡短說明
您可以透過在 Fargate 上整合 Amazon ECS 與 Amazon CloudWatch 警報和應用程式自動擴展來增加或減少所需的任務計數。然後,您可以使用 CloudWatch 指標來設定您的 CloudWatch 警報。
當您的 CloudWatch 警報觸發自動擴展政策時,應用程式自動擴展會根據設定的擴展政策決定所需的新計數。然後,應用程式自動擴展會使用新的期望計數值,向 Amazon ECS 進行 UpdateService API 呼叫。Amazon ECS 服務排程器會啟動或關閉任務以符合新的想要計數。您的擴展活動會保持在 InProgress 狀態,直到期望計數和執行中計數相同為止。
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確認您使用的是最新的 AWS CLI 版本。
解決方法
注意: 存取服務自動擴展設定的 IAM 使用者必須擁有支援動態擴展之服務的適當許可。如需詳細資訊,請參閱服務自動擴展所需的 IAM 許可。
為您的 Fargate 服務配置服務自動擴展
在 Amazon ECS 主控台中建立或更新服務時,請從設定自動擴展頁面選擇下列選項:
-
選擇設定服務自動擴展以調整服務期望的計數。
-
對於任務數目下限,請輸入您希望服務自動擴展使用的任務數目下限。
-
針對期望的任務數目,輸入您希望服務自動擴展使用的任務數目。
**注意:**期望的任務數必須在最小和最大任務計數的範圍內。
- 針對任務數目上限,請輸入您希望服務自動擴展使用的任務作數目上限。
**注意:**任務的最小和最大數量是您服務的硬性限制。
-
對於服務自動擴展的 IAM 角色,請選擇 ecsAutoscaleRole。
-
在自動任務擴展政策區段中,選擇自動擴展政策。
-
完成設定精靈中的其餘步驟,以建立或更新服務。
選擇擴展政策
針對目標追蹤政策:
- 您必須為指定的指標定義目標值 (臨界值)。應用程式自動擴展可建立和管理觸發擴展政策的 CloudWatch 警報。
- 您可以使用 ECSServiceAverageCPUUtilization、ECSServiceAverageMemoryUtilization 和 ALBRequestCountPerTarget 的 Amazon ECS 服務指標進行目標追蹤。
- 目標追蹤政策會根據您定義的指標和目標值來計算擴展調整 (也就是所需的任務計數)。您不需要像使用步進擴展政策那樣設定擴展動作。這是因為目標追蹤政策會視需要新增或移除容量,以便將指標保持在或接近指定的目標值。
- 您必須選擇橫向擴展和縮減的冷卻時間。
對於步進擴展政策:
- 您可以為任何指標建立或使用現有的 CloudWatch 警報以進行步進擴展。
- 您必須選擇擴展動作或步進調整,例如ScalingAdjustment、MetricIntervalUpperBound 和 MetricIntervalLowerBound。
- 您可以將擴展調整類型指定為可擴展目標目前容量的百分比,或使用絕對數字。
- 您可以建立擴展政策來處理縮減和橫向擴展活動,以增加或減少所需的任務計數。
**注意:**如需詳細資訊,請參閱步驟 5: 將您的服務設定為使用服務自動擴展。
使用 AWS CLI 設定服務自動擴展
- 使用「應用程式自動擴展」功能,將您的 Fargate 服務註冊為可擴展:
aws application-autoscaling register-scalable-target \ --service-namespace ecs --scalable-dimension ecs:service:DesiredCount \ --resource-id service/your-cluster/your-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}'
**注意:**建立目標追蹤政策時,應用程式 Auto Scaling 會建立 CloudWatch 警報,以根據您選擇的目標值 (臨界值) 來縮減和橫向擴展。
步進擴展政策:
- 使用必要的步進調整建立步進擴展政策:
aws application-autoscaling put-scaling-policy \ --service-namespace ecs --scalable-dimension ecs:service:DesiredCount \ --resource-id service/your-cluster/your-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"}'
- 將步驟 1 中的擴展政策與新的或現有的 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=your-cluster Name=ServiceName,Value=your-service-name --unit Percent \ --alarm-actions "arn:aws:autoscaling:us-east-1:xxxxxxx:scalingPolicy:xxxxxx/Test-Step-scaling-policy-ScaleOut"
- 為縮減活動建立另一個步進擴展政策和 CloudWatch 警報。
**注意:**當服務的橫向擴展活動進行中時,CloudWatch 觸發的任何縮減活動都會遭到封鎖,直到橫向擴展活動完成為止。當 Amazon ECS 不符合自動擴展設定的期望計數時,InProgress 橫向擴展活動會逾時。逾時可能有多種原因,例如影像或網路問題。如果在橫向擴展冷卻期間 CloudWatch 指標觸發縮減活動,但是橫向擴展活動已完成,則會執行縮減活動。
相關資訊
相關內容
- 已提問 10 個月前lg...
- 已提問 9 個月前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 1 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前