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

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

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

注意

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

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

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

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

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

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

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

    • 負載 – 可準確代表應用程式完整負載,且是應用程式最重要擴展方面的指標。

    • 擴展指標 – 最能預測多少使用率最適合應用程式的指標。

  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 請求計數

    如果選擇了自訂指標對,則從負載指標擴展指標清單中選擇個別指標。

  12. 目標使用率欄位中,輸入 Amazon ECS 應維護之任務的百分比目標值。服務自動擴展功能會橫向擴充容量,直到平均使用率達到目標使用率,或達到所指定的任務數量上限。

  13. 選擇建立擴展政策

按如下所示使用 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-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": [] }