建立 Amazon ECS 服務自動擴展的預測擴展政策 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立 Amazon ECS 服務自動擴展的預測擴展政策

建立預測擴展政策,讓 Amazon ECS 根據歷史資料增加或減少服務執行的任務數量。

注意

新服務需要提供至少 24 小時的資料,才能產生預測。

  1. 除了建立和更新服務的標準 IAM 許可之外,您還需要額外的許可。如需詳細資訊,請參閱Amazon ECS 服務自動擴展所需的 IAM 許可

  2. 決定要用於政策的指標。下列指標可供使用:

    • ECSServiceAverageCPUUtilization – 服務應使用的平均 CPU 使用率。

    • ECSServiceAverageMemoryUtilization – 服務應使用的平均記憶體使用率。

    • ALBRequestCountPerTarget – 任務理想情況下每分鐘應接收的平均請求數。

    或者,您可以使用自訂指標。您需要定義下列值:

    • Load - 準確代表應用程式完全載入的指標,是應用程式最需要擴展的方面。

    • 擴展指標 - 最適合您應用程式使用率的最佳預測器。

  3. 開啟主控台,網址為 https://console.aws.amazon.com/ecs/v2

  4. 叢集頁面上,選擇叢集。

  5. 在叢集詳細資訊頁面的服務區段中,選擇服務。

    服務詳細資訊頁面隨即出現。

  6. 選擇服務自動擴展,然後選擇設定任務數量

  7. Amazon ECS 服務任務計數下,選擇使用自動擴展

    任務計數區段隨即出現。

    1. 針對任務數量下限,輸入服務自動擴展要使用的任務數量下限。所需的計數不會低於此計數。

    2. 針對最大值,輸入服務自動擴展要使用的任務數量上限。所需的計數不會高於此計數。

    3. 選擇儲存

      政策頁面隨即出現。

  8. 選擇建立擴展政策

    建立政策頁面隨即出現。

  9. 針對擴展政策類型,選擇預測擴展

  10. 針對 Policy name (政策名稱),輸入政策的名稱。

  11. 對於指標對,從選項清單中選擇您的指標。

    如果選擇了 Application Load Balancer request count per target (每個目標的 Application Load Balancer 請求計數),則在 Target group (目標群組) 中選擇目標群組。只有在您已連接服務的 Application Load Balancer 目標群組時,才支援每個目標的 Application Load Balancer 請求計數。 Application Load Balancer

    如果您選擇自訂指標對,請從載入指標擴展指標的清單中選擇個別指標。

  12. 針對目標使用率,輸入 Amazon ECS 應維護之任務百分比的目標值。服務自動擴展會擴展您的容量,直到平均使用率達到目標使用率,或達到您指定的任務數量上限為止。

  13. 選擇建立擴展政策

使用 AWS CLI 設定 Amazon ECS 服務的預測擴展政策,如下所示。將每個使用者輸入預留位置替換為自己的資訊。

如需有關您可以指定之 CloudWatch 指標的詳細資訊,請參閱《Amazon EC2 Auto Scaling API 參考》中的 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-namespace ecs \ --region us-east-1 \ --policy-name predictive-scaling-policy-example \ --resource-id service/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-namespace ecs \ --region us-east-1 \ --policy-name predictive-scaling-policy-example \ --resource-id service/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": [] }