為 Amazon ECS 服務自動擴展建立預測性擴展政策
建立預測性擴展政策,以便 Amazon ECS 根據歷史資料增加或減少服務執行的任務數量。
注意
新服務需要提供至少 24 小時的資料,才能產生預測結果。
-
除了建立與更新服務所需的標準 IAM 許可外,您還需要其他許可。如需更多詳細資訊,請參閱 Amazon ECS 服務自動擴展所需的 IAM 許可。
-
決定用於政策的指標。下列指標可供使用:
-
ECSServiceAverageCPUUtilization – 服務應使用的平均 CPU 使用率。
-
ECSServiceAverageMemoryUtilization – 服務應使用的平均記憶體使用率。
-
ALBRequestCountPerTarget – 任務理想情況下,任務每分鐘應接收的平均請求數。
您也可以使用自訂指標。需要定義下列值:
-
負載 – 可準確代表應用程式完整負載,且是應用程式最重要擴展方面的指標。
-
擴展指標 – 最能預測多少使用率最適合應用程式的指標。
-
開啟主控台,網址為 https://console.aws.amazon.com/ecs/v2
。 -
在叢集頁面上,選擇叢集。
-
在「叢集詳細資訊」頁面上的服務區段中,選擇所需服務。
服務資訊頁面隨即顯示。
-
選擇服務自動擴展,然後選擇設定任務數量。
-
在 Amazon ECS 服務任務計數下,選擇使用自動擴展。
任務計數區段隨即顯示。
-
在任務數量下限欄位中,輸入供服務自動擴展功能使用的任務數量下限。所需的計數不會低於此計數。
-
在上限欄位中,輸入供服務自動擴展功能使用的任務數量上限。所需的計數不會高於此計數。
-
選擇儲存。
政策頁面隨即顯示。
-
-
選擇建立擴展政策。
建立政策頁面隨即顯示。
-
在擴展政策類型欄位中選擇預測性擴展。
-
針對 Policy name (政策名稱),輸入政策的名稱。
-
在指標對欄位中,從選項清單中選擇指標。
如果選擇了 Application Load Balancer request count per target (每個目標的 Application Load Balancer 請求計數),則在 Target group (目標群組) 中選擇目標群組。只有將 Application Load Balancer 目標群組連接至服務後,才支援每個目標的 Application Load Balancer 請求計數。
如果選擇了自訂指標對,則從負載指標與擴展指標清單中選擇個別指標。
-
在目標使用率欄位中,輸入 Amazon ECS 應維護之任務的百分比目標值。服務自動擴展功能會橫向擴充容量,直到平均使用率達到目標使用率,或達到所指定的任務數量上限。
-
選擇建立擴展政策。
按如下所示使用 AWS CLI,為 Amazon ECS 服務設定預測性擴展政策。將每個使用者輸入預留位置替換為自己的資訊。
如需有關可指定之 CloudWatch 指標的詳細資訊,請參閱 Amazon EC2 Auto Scaling API Reference 中的 PredictiveScalingMetricSpecification。
範例 1:具有預先定義記憶體的預測性擴展政策。
以下是具有預先定義記憶體組態的政策範例。
cat policy.json { "MetricSpecifications": [ { "TargetValue":40, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ECSServiceMemoryUtilization" } } ], "SchedulingBufferTime":3600, "MaxCapacityBreachBehavior": "HonorMaxCapacity", "Mode": "ForecastOnly" }
下列範例示範了透過執行帶有指定組態檔案的 put-scaling-policy 命令來建立政策。
aws application-autoscaling put-scaling-policy \ --service-namespaceecs\ --regionus-east-1\ --policy-namepredictive-scaling-policy-example\ --resource-idservice/MyCluster/test\ --policy-type PredictiveScaling \ --scalable-dimension ecs:service:DesiredCount \ --predictive-scaling-policy-configuration file://policy.json
如果成功,此命令會傳回政策的 ARN。
{
"PolicyARN": "arn:aws:autoscaling:us-east-1:012345678912:scalingPolicy:d1d72dfe-5fd3-464f-83cf-824f16cb88b7:resource/ecs/service/MyCluster/test:policyName/predictive-scaling-policy-example",
"Alarms": []
}
範例 2:具有預先定義 CPU 的預測性擴展政策。
以下是具有預先定義 CPU 組態的政策範例。
cat policy.json { "MetricSpecifications": [ { "TargetValue":0.00000004, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ECSServiceCPUUtilization" } } ], "SchedulingBufferTime":3600, "MaxCapacityBreachBehavior": "HonorMaxCapacity", "Mode": "ForecastOnly" }
下列範例示範了透過執行帶有指定組態檔案的 put-scaling-policy 命令來建立政策。
aws aas put-scaling-policy \ --service-namespaceecs\ --regionus-east-1\ --policy-namepredictive-scaling-policy-example\ --resource-idservice/MyCluster/test\ --policy-type PredictiveScaling \ --scalable-dimension ecs:service:DesiredCount \ --predictive-scaling-policy-configuration file://policy.json
如果成功,此命令會傳回政策的 ARN。
{
"PolicyARN": "arn:aws:autoscaling:us-east-1:012345678912:scalingPolicy:d1d72dfe-5fd3-464f-83cf-824f16cb88b7:resource/ecs/service/MyCluster/test:policyName/predictive-scaling-policy-example",
"Alarms": []
}