View a markdown version of this page

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

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

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

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

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

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

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

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

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

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

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

  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. 針對指標名稱,選取您想要以高解析度收集的指標。選擇 CPUUtilizationMemoryUtilization

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

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

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

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

    注意

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

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

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

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

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

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

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

  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. 尋找您服務的 CPUUtilizationMemoryUtilization指標。

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

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

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

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

  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_DEPLOYEXTERNAL 部署控制器類型的服務不支援高解析度指標。

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