本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用高解析度指標加快自動擴展速度
根據預設,Amazon ECS 會以 60 秒解析度發佈 CPUUtilization和 MemoryUtilization指標。您可以設定 20 秒的解析度,以加快服務自動擴展的速度。
下列高解析度預先定義的指標可用於目標追蹤擴展政策:
| PredefinedMetricType | 說明 |
|---|---|
ECSServiceAverageCPUUtilizationHighResolution |
20 秒解析度的平均 CPU 使用率 |
ECSServiceAverageMemoryUtilizationHighResolution |
20 秒解析度的平均記憶體使用率 |
使用高解析度指標建立新的服務,以加快自動擴展速度
-
在叢集頁面上,選擇您要在其中建立服務的叢集。
-
在服務區段中,選擇建立。
-
在建立服務表單的監控組態區段中,選擇新增指標組態。
-
針對指標名稱,選取您想要以高解析度收集的指標。選擇
CPUUtilization或MemoryUtilization。 -
針對解析度 (秒),選取 20。
-
(選用) 若要以高解析度新增兩個指標,請再次選擇新增指標組態,並為其他指標重複前兩個步驟。
-
在服務自動擴展區段中,選擇使用服務自動擴展。
-
在任務數量下限欄位中,輸入供服務自動擴展功能使用的任務數量下限。所需的計數不會低於此計數。
-
在任務數量上限中,輸入供服務自動擴展功能使用的任務數量上限。所需的計數不會高於此計數。
-
針對 Scaling policy type (擴展政策類型),選擇 Target tracking (目標追蹤)。
-
針對指標類型,選取對應的高解析度指標。例如,
ECSServiceAverageCPUUtilizationHighResolution如果您CPUUtilization設定為 20 秒解析度,或者ECSServiceAverageMemoryUtilizationHighResolution如果您MemoryUtilization設定為 20 秒解析度,請選擇 。 -
針對目標值,輸入目標使用率百分比。服務自動擴展會擴展您的容量,直到平均使用率達到目標值,或達到您指定的任務數量上限為止。
-
在其他設定下,設定下列項目:
-
在橫向擴充冷卻時間欄位中,輸入等待上一個橫向擴充活動生效的時間 (以秒為單位)。
-
在縮減冷卻時間欄位中,輸入一個縮減活動完成之後、另一個縮減活動開始之前的時間 (以秒為單位)。
-
-
選擇建立以建立服務。
-
使用 create-service 命令建立具有監控組態的服務。
aws ecs create-service --regionus-east-1\ --clustermy-cluster\ --service-namemy-service\ --task-definitionmy-app:1\ --desired-count 2 \ --monitoring "metricConfigurations=[{metricNames=[CPUUtilization,MemoryUtilization],resolutionSeconds=20}]" -
使用 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-capacity1\ --max-capacity10\ --regionus-east-1 -
使用 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-namemy-highres-cpu-policy\ --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration '{ "TargetValue":50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution" } }' \ --regionus-east-1 -
驗證政策是否使用 describe-scaling-policies 命令建立。
aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --regionus-east-1
更新現有服務以使用高解析度指標,以加快自動擴展速度
更新現有服務以使用高解析度指標來加快服務自動擴展速度,這需要兩個步驟。您必須先更新監控解析度,這會觸發服務部署。部署成功完成且所有任務發出 20 秒解析度的指標後,您就可以設定高解析度擴展政策。
重要
如果您的服務先前使用 60 秒指標解析度,只有在您將服務更新為使用 20 秒指標解析度且服務部署完成之後,才能在 Amazon ECS 主控台上使用適用於擴展政策的高解析度指標。
步驟 1:更新監控解決方案
-
在叢集頁面上,選擇包含您要更新之服務的叢集。
-
在服務區段中,選取服務,然後選擇更新。
-
在更新服務表單的監控組態區段中,選擇新增指標組態。
-
針對指標名稱,選取您想要以高解析度收集的指標。選擇
CPUUtilization或MemoryUtilization。 -
針對解析度 (秒),選取 20。
-
(選用) 若要以高解析度新增兩個指標,請再次選擇新增指標組態,並為其他指標重複前兩個步驟。
-
選擇更新以提交變更。這會觸發服務部署。
-
等待部署完成。您可以在部署索引標籤的服務詳細資訊頁面上監控進度。
注意
高解析度擴展指標選項會在服務自動擴展區段中呈現灰色,直到部署成功且所有任務都以 20 秒解析度發出。
步驟 2:設定高解析度擴展政策
部署完成後,請使用下列其中一種方法設定擴展政策:
- 選項 A:服務詳細資訊頁面
-
-
在服務詳細資訊頁面上,選擇服務自動擴展索引標籤。
-
選擇建立擴展政策 (或編輯現有政策)。
-
針對 Scaling policy type (擴展政策類型),選擇 Target tracking (目標追蹤)。
-
針對指標類型,選取高解析度指標。例如
ECSServiceAverageCPUUtilizationHighResolution或ECSServiceAverageMemoryUtilizationHighResolution。 -
針對目標值,輸入目標使用率百分比。
-
在其他設定下,設定下列項目:
-
在橫向擴充冷卻時間欄位中,輸入等待上一個橫向擴充活動生效的時間 (以秒為單位)。
-
在縮減冷卻時間欄位中,輸入一個縮減活動完成之後、另一個縮減活動開始之前的時間 (以秒為單位)。
-
-
選擇建立擴展政策。
-
- 選項 B:更新服務表單
-
-
在服務詳細資訊頁面上,選擇更新。
-
在服務自動擴展區段中,選擇使用服務自動擴展 (如果尚未啟用)。
-
針對任務數量下限,輸入下限。
-
針對任務數量上限,輸入上限。
-
針對 Scaling policy type (擴展政策類型),選擇 Target tracking (目標追蹤)。
-
對於指標類型,選取高解析度指標 (現在在部署完成後啟用)。
-
針對目標值,輸入目標使用率百分比。
-
在其他設定下,設定橫向擴展冷卻時間和橫向擴展冷卻時間。
-
選擇更新以提交變更。
-
步驟 1:更新監控解決方案
-
使用 update-service 命令以監控組態更新服務。
aws ecs update-service --regionus-east-1\ --clustermy-cluster\ --servicemy-service\ --monitoring "metricConfigurations=[{metricNames=[CPUUtilization,MemoryUtilization],resolutionSeconds=20}]" -
等待部署完成。您可以使用 describe-services 命令監控進度,並檢查部署狀態。
aws ecs describe-services --regionus-east-1\ --clustermy-cluster\ --servicesmy-service -
部署完成後,請描述 服務修訂,確認監控組態處於作用中狀態。從
describe-services輸出取得作用中的服務修訂版 ARN,然後執行:aws ecs describe-service-revisions --regionus-east-1\ --service-revision-arnsarn:aws:ecs:us-east-1:012345678910:service-revision/my-cluster/my-service/1234567890123456789確認監控組態出現在回應中:
{ "serviceRevisions": [ { ... "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-capacity1\ --max-capacity10\ --regionus-east-1 -
使用 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-namemy-highres-cpu-policy\ --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration '{ "TargetValue":50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution" } }' \ --regionus-east-1 -
確認已建立政策:
aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --regionus-east-1
驗證更快速的服務自動擴展
第 1 部分:驗證高解析度指標是否正在發佈
-
導覽至 CloudWatch 主控台。
-
在導覽窗格中,選擇指標,然後選擇所有指標。
-
選擇 AWS/ECS 命名空間。
-
選擇 ClusterName、ServiceName。
-
尋找您服務的
CPUUtilization和MemoryUtilization指標。 -
將期間設定為 20 秒。您應該會每隔 20 秒看到資料點,確認高解析度指標處於作用中狀態。
第 2 部分:驗證擴展政策是否使用高解析度指標
-
在服務詳細資訊頁面上,選擇服務自動擴展索引標籤。
-
檢視現有的擴展政策,並確認指標已設定為高解析度變體 (
ECSServiceAverageCPUUtilizationHighResolution或ECSServiceAverageMemoryUtilizationHighResolution)。 -
或者,使用 CLI 進行驗證:
aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --regionus-east-1確認回應
PredefinedMetricType中的 設定為高解析度指標。
考量事項
-
監控組態變更會建立新的服務修訂,並需要服務部署。在部署完成且所有任務都以 20 秒解析度發出之前,高解析度擴展指標無法使用。
-
使用 Application Load Balancer 和 Network Load Balancer 的服務支援高解析度指標。不支援在沒有目標群組的情況下使用 Classic Load Balancer 的服務。
-
使用
CODE_DEPLOY或EXTERNAL部署控制器類型的服務不支援高解析度指標。 -
您可以使用 檢視服務的監控組態
DescribeServiceRevisions。監控組態不會在CreateService或UpdateService回應中傳回。