View a markdown version of this page

使用高解析度指標加快自動擴展速度 - Amazon Elastic Container Service

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

使用高解析度指標加快自動擴展速度

根據預設,Amazon ECS 會以 60 秒解析度發佈 CPUUtilization和 MemoryUtilization指標。您可以設定 20 秒的解析度,以加快服務自動擴展的速度。

下列高解析度預先定義的指標可用於目標追蹤擴展政策:

PredefinedMetricType 說明
ECSServiceAverageCPUUtilizationHighResolution 20 秒解析度的平均 CPU 使用率
ECSServiceAverageMemoryUtilizationHighResolution 20 秒解析度的平均記憶體使用率

使用高解析度指標建立新的服務,以加快自動擴展速度

  1. 在叢集頁面上,選擇您要在其中建立服務的叢集。

  2. 在服務區段中,選擇建立。

  3. 在建立服務表單的監控組態區段中,選擇新增指標組態。

  4. 針對指標名稱,選取您要以高解析度收集的指標。選擇 CPUUtilization 或 MemoryUtilization。

  5. 針對解析度 (秒),選取 20。

  6. (選用) 若要以高解析度新增兩個指標,請再次選擇新增指標組態,並為其他指標重複前兩個步驟。

  7. 在服務自動擴展區段中,選擇使用服務自動擴展。

  8. 在任務數量下限欄位中,輸入供服務自動擴展功能使用的任務數量下限。所需的計數不會低於此計數。

  9. 在任務數量上限中,輸入供服務自動擴展功能使用的任務數量上限。所需的計數不會高於此計數。

  10. 針對 Scaling policy type (擴展政策類型),選擇 Target tracking (目標追蹤)。

  11. 針對指標類型,選取對應的高解析度指標。例如,ECSServiceAverageCPUUtilizationHighResolution如果您CPUUtilization設定為 20 秒解析度,或者ECSServiceAverageMemoryUtilizationHighResolution如果您MemoryUtilization設定為 20 秒解析度,請選擇 。

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

  13. 在其他設定下,設定下列項目:

    1. 在橫向擴充冷卻時間欄位中,輸入等待上一個橫向擴充活動生效的時間 (以秒為單位)。

    2. 在縮減冷卻時間欄位中,輸入一個縮減活動完成之後、另一個縮減活動開始之前的時間 (以秒為單位)。

  14. 選擇建立以建立服務。

  1. 使用 create-service 命令建立具有監控組態的服務。

    aws ecs create-service --region us-east-1 \ --cluster my-cluster \ --service-name my-service \ --task-definition my-app:1 \ --desired-count 2 \ --monitoring "metricConfigurations=[{metricNames=[CPUUtilization,MemoryUtilization],resolutionSeconds=20}]"
  2. 使用 register-scalable-target 命令將服務註冊為可擴展的目標。

    aws application-autoscaling register-scalable-target \ --service-namespace ecs \ --resource-id service/my-cluster/my-service \ --scalable-dimension ecs:service:DesiredCount \ --min-capacity 1 \ --max-capacity 10 \ --region us-east-1
  3. 使用 put-scaling-policy 命令建立具有高解析度預先定義指標的目標追蹤擴展政策。

    aws application-autoscaling put-scaling-policy \ --service-namespace ecs \ --resource-id service/my-cluster/my-service \ --scalable-dimension ecs:service:DesiredCount \ --policy-name my-highres-cpu-policy \ --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration '{ "TargetValue": 50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution" } }' \ --region us-east-1
  4. 驗證政策是否使用 describe-scaling-policies 命令建立。

    aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-service \ --scalable-dimension ecs:service:DesiredCount \ --region us-east-1

更新現有服務以使用高解析度指標,以加快自動擴展速度

更新現有服務以使用高解析度指標來加快服務自動擴展速度,這需要兩個步驟。您必須先更新監控解析度,這會觸發服務部署。部署成功完成且所有任務都發出 20 秒解析度的指標後,您就可以設定高解析度擴展政策。

重要

如果您的服務先前使用 60 秒指標解析度,只有在您更新服務以使用 20 秒指標解析度且服務部署完成之後,才能在 Amazon ECS 主控台上使用適用於擴展政策的高解析度指標。

步驟 1:更新監控解決方案

  1. 在叢集頁面上,選擇包含您要更新之服務的叢集。

  2. 在服務區段中,選取服務,然後選擇更新。

  3. 在更新服務表單的監控組態區段中,選擇新增指標組態。

  4. 針對指標名稱,選取您要以高解析度收集的指標。選擇 CPUUtilization 或 MemoryUtilization。

  5. 針對解析度 (秒),選取 20。

  6. (選用) 若要以高解析度新增這兩個指標,請再次選擇新增指標組態,並為其他指標重複前兩個步驟。

  7. 選擇更新以提交變更。這會觸發服務部署。

  8. 等待部署完成。您可以在部署索引標籤的服務詳細資訊頁面上監控進度。

    注意

    高解析度擴展指標選項會在服務自動擴展區段中呈現灰色,直到部署成功且所有任務都以 20 秒解析度發出。

步驟 2:設定高解析度擴展政策

部署完成後,請使用下列其中一種方法來設定擴展政策:

選項 A:服務詳細資訊頁面
  1. 在服務詳細資訊頁面上,選擇服務自動擴展索引標籤。

  2. 選擇建立擴展政策 (或編輯現有政策)。

  3. 針對 Scaling policy type (擴展政策類型),選擇 Target tracking (目標追蹤)。

  4. 針對指標類型,選取高解析度指標。例如 ECSServiceAverageCPUUtilizationHighResolution 或 ECSServiceAverageMemoryUtilizationHighResolution。

  5. 針對目標值,輸入目標使用率百分比。

  6. 在其他設定下,設定下列項目:

    1. 在橫向擴充冷卻時間欄位中,輸入等待上一個橫向擴充活動生效的時間 (以秒為單位)。

    2. 在縮減冷卻時間欄位中,輸入一個縮減活動完成之後、另一個縮減活動開始之前的時間 (以秒為單位)。

  7. 選擇建立擴展政策。

選項 B:更新服務表單
  1. 在服務詳細資訊頁面上,選擇更新。

  2. 在服務自動擴展區段中,選擇使用服務自動擴展 (如果尚未啟用)。

  3. 針對任務數量下限,輸入下限。

  4. 針對任務數量上限,輸入上限。

  5. 針對 Scaling policy type (擴展政策類型),選擇 Target tracking (目標追蹤)。

  6. 針對指標類型,選取高解析度指標 (現在在部署完成後啟用)。

  7. 針對目標值,輸入目標使用率百分比。

  8. 在其他設定下,設定向外擴展冷卻時間和向內擴展冷卻時間。

  9. 選擇更新以提交變更。

步驟 1:更新監控解決方案

  1. 使用 update-service 命令以監控組態更新服務。

    aws ecs update-service --region us-east-1 \ --cluster my-cluster \ --service my-service \ --monitoring "metricConfigurations=[{metricNames=[CPUUtilization,MemoryUtilization],resolutionSeconds=20}]"
  2. 等待部署完成。您可以使用 describe-services 命令監控進度,並檢查部署狀態。

    aws ecs describe-services --region us-east-1 \ --cluster my-cluster \ --services my-service
  3. 部署完成後,請描述 服務修訂,確認監控組態處於作用中狀態。從describe-services輸出取得作用中的服務修訂 ARN,然後執行:

    aws ecs describe-service-revisions --region us-east-1 \ --service-revision-arns arn:aws:ecs:us-east-1:012345678910:service-revision/my-cluster/my-service/1234567890123456789

    確認監控組態出現在回應中:

    { "serviceRevisions": [ { ... "monitoring": { "metricConfigurations": [ { "metricNames": ["CPUUtilization", "MemoryUtilization"], "resolutionSeconds": 20 } ] } } ] }
步驟 2:設定高解析度擴展政策

  1. 如果尚未註冊,請使用 register-scalable-target 命令將服務註冊為可擴展的目標。

    aws application-autoscaling register-scalable-target \ --service-namespace ecs \ --resource-id service/my-cluster/my-service \ --scalable-dimension ecs:service:DesiredCount \ --min-capacity 1 \ --max-capacity 10 \ --region us-east-1
  2. 使用 put-scaling-policy 命令,使用高解析度預先定義的指標建立目標追蹤擴展政策。下列範例以 50% 的 CPU 使用率為目標:

    aws application-autoscaling put-scaling-policy \ --service-namespace ecs \ --resource-id service/my-cluster/my-service \ --scalable-dimension ecs:service:DesiredCount \ --policy-name my-highres-cpu-policy \ --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration '{ "TargetValue": 50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution" } }' \ --region us-east-1
  3. 確認已建立政策:

    aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-service \ --scalable-dimension ecs:service:DesiredCount \ --region us-east-1

驗證更快速的服務自動擴展

第 1 部分:驗證高解析度指標是否正在發佈

  1. 導覽至 CloudWatch 主控台。

  2. 在導覽窗格中,選擇指標,然後選擇所有指標。

  3. 選擇 AWS/ECS 命名空間。

  4. 選擇 ClusterName、ServiceName。

  5. 尋找您服務的 CPUUtilization和 MemoryUtilization指標。

  6. 將期間設定為 20 秒。您應該會每隔 20 秒看到資料點,確認高解析度指標處於作用中狀態。

第 2 部分:驗證擴展政策是否使用高解析度指標

  1. 在服務詳細資訊頁面上,選擇服務自動擴展索引標籤。

  2. 檢視現有的擴展政策,並確認指標已設定為高解析度變體 (ECSServiceAverageCPUUtilizationHighResolution 或 ECSServiceAverageMemoryUtilizationHighResolution)。

  3. 或者,使用 CLI 驗證:

    aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-service \ --scalable-dimension ecs:service:DesiredCount \ --region us-east-1

    確認回應PredefinedMetricType中的 設定為高解析度指標。

考量事項

  • 監控組態變更會建立新的服務修訂,並需要服務部署。在部署完成且所有任務都以 20 秒解析度發出之前,高解析度擴展指標無法使用。

  • 使用 Application Load Balancer 和 Network Load Balancer 的服務支援高解析度指標。不支援使用沒有目標群組的 Classic Load Balancer 的服務。

  • 使用 CODE_DEPLOY或 EXTERNAL 部署控制器類型的服務不支援高解析度指標。

  • 您可以使用 檢視服務的監控組態DescribeServiceRevisions。在 CreateService或 UpdateService回應中不會傳回監控組態。