根據 Cloud Monitoring 指標自動調度資源,可讓您根據應用程式提供的測量值調整所需的容量。當您根據指標自動調度資源時,自動配置器會在指標值增加時建立 VM,並在值減少時刪除 VM。
舉例來說,您可以定義每位使用者需要的 VM 數量、延遲時間,或是 Pub/Sub 訂閱中的訊息數量。您可以使用 Monitoring 服務提供的內建指標,或是從應用程式匯出的自訂指標。
本文說明如何根據 Monitoring 指標自動調度代管執行個體群組 (MIG)。
您也可以根據CPU 使用率、負載平衡服務規模或排程,自動調度 MIG。
事前準備
- 閱讀自動配置器基本概念。
- 請參閱自動調度資源設定中使用的監控指標概念。
- 如果您想根據 Ops Agent 指標自動調度資源,請安裝 Ops Agent。
-
如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要在本機開發環境中執行程式碼或範例,您可以選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
For more information, see Authenticate for using REST in the Google Cloud authentication documentation.
-
限制
根據 Monitoring 指標執行資源調度時,須遵守所有自動配置器的限制,以及下列限制:
- 您可以根據每個 MIG 最多 5 個監控指標設定自動調度資源。
- 您只能根據具有
INT64
或DOUBLE
值類型的指標自動調度資源。但不支援其他值類型。 - 在自動調度資源政策中,您無法設定相同的指標多次。
根據 Monitoring 指標設定自動調度資源
您可以透過兩種方式使用監控指標值進行自動調度資源:
使用率目標:如果您希望自動配置器將指標維持在特定值,請設定使用率目標。當指標值高於目標值時,自動配置器會建立 VM,當指標值低於目標值時,則會刪除 VM。這對於網路流量、記憶體/磁碟使用量或應用程式的平均延遲時間等指標很有幫助。下圖顯示自動配置器會依據某項指標值新增及移除 VM,以維持指定的使用率目標。
單一執行個體指派:如要根據可指派給每個 VM 的工作量來自動調度資源,請設定單一執行個體指派。您指定的單一執行個體指派代表您預期每個 VM 處理的工作量。自動配置器會將指標值除以單一執行個體指派值,藉此計算所需的 VM 數量。舉例來說,如果指標值等於 100,且單一執行個體指派值為 5,自動配置器就會在 MIG 中建立 20 個 VM。這類指標可反映工作量,例如 Pub/Sub 佇列長度或批次工作計數。單一執行個體指派不適用於來自各個 VM 的指標。下圖顯示透過單一執行個體指派政策執行資源調度時,指標值與 VM 數量之間的比例關係。
自動調度資源,將指標維持在目標值
如要將指標維持在目標值,請指定使用率目標。當指標值高於目標時,自動配置器會建立 VM,當指標值低於目標時,則會刪除 VM。
如果指標來自 MIG 中的每個 VM,自動配置器會取用 MIG 中所有 VM 的平均指標值,並與使用率目標進行比較。舉例來說,如果您想使用提供 VM 上 TCP 連線數量的
tcp_connections
指標 進行自動調度,自動配置器會取得 MIG 中所有 VM 的 TCP 連線平均數量,然後與目標進行比較。如果您使用來自 VM 的這類指標,MIG 就無法縮減至0
,因為自動配置器至少需要一個 VM 才能發布指標值。如果指標適用於整個 MIG,且並非來自 MIG 中的 VM,則自動配置器會將指標值與使用率目標進行比較。舉例來說,您可以使用用於評估應用程式延遲時間的自訂指標。
如果指標有多個值,請套用篩選器,以便使用指標中的個別值進行自動調度。如要進一步瞭解指標篩選器和其他可在設定中使用的欄位,請參閱「監控指標概念」。
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
如果您沒有代管執行個體群組,請建立一個群組。或者,按一下清單中的 MIG 名稱,開啟該執行個體群組頁面。
按一下 [編輯]。
如果沒有自動調度資源設定:
- 在「Autoscaling」(自動調度資源) 下方,按一下「Configure autoscaling」(設定自動調度資源功能)。
- 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
在「Autoscaling」(自動調度資源) 下方的「Autoscaling signals」(自動調度資源信號) 部分,如果有 Cloud Monitoring 指標信號,您可以點選該信號進行編輯,或是點選「Add a signal」(新增信號) 新增信號。
將「信號類型」設為「Cloud Monitoring 指標」。
按一下「設定」。在隨即開啟的「Resource and metric」(資源和指標) 窗格中,執行下列操作:
- 按一下「選取指標」。
- 選取要用於自動調度資源的指標。您可以根據任何關鍵字篩選指標,例如記憶體、位元組、磁碟。
- 按一下 [套用]。這個窗格會顯示圖表,顯示所選指標的資料。
如要使用指標中的特定資料,請按照下列方式新增標籤篩選器:
- 在「篩選器」部分,按一下「新增篩選器」。
- 選取「標籤」並輸入「值」。
- 按一下 [完成]。圖表會重新整理,顯示經過篩選的指標值。
如要查看將用於自動調度 MIG 的指標匯總值,請切換「Show aggregation in chart」(在圖表中顯示匯總資料) 按鈕。圖表會重新整理,顯示匯總值。
在「自動調度資源的指標目標選項」部分,選取「使用率目標」。
請提供下列資訊:
- 使用率目標:指定自動配置器必須維持的值。這必須是正數。例如,24.5 和 100 都是可接受的值。
- Utilization target type:選取與指標的測量種類對應的目標類型。如要進行準確比較,如果使用率目標是以秒為單位測量,請使用「Delta / 秒」做為目標類型。同樣地,請以分鐘為單位,使用 Delta / min 做為使用率目標。
- Gauge:自動配置器會計算在最後幾分鐘收集的資料平均值,並將這個值與使用率目標進行比較。
- Delta / 分鐘:自動配置器會計算每分鐘的平均成長率,並將這個值與使用率目標比較。
- 變化幅度 / 秒:自動配置器會計算每秒的平均成長率,並將這個值與使用率目標比較。
設定完指標後,按一下「選取」。
- 按一下「選取指標」。
查看指標詳細資料,然後按一下「完成」。
按一下「儲存」即可完成設定。
gcloud
如要設定依據監控指標的自動調度資源,請使用 set-autoscaling
指令。
使用下列指令,根據設有利用率目標的監控指標自動調度資源。
gcloud compute instance-groups managed set-autoscaling MIG_NAME \ --max-num-replicas=MAX_INSTANCES \ --min-num-replicas=MIN_INSTANCES \ --update-stackdriver-metric=METRIC_URL \ --stackdriver-metric-utilization-target=TARGET_VALUE \ --stackdriver-metric-utilization-target-type=TARGET_TYPE
如果指標有多個值,且您想使用個別值進行自動調度,請使用下列指令中的 --stackdriver-metric-filter
標記。
gcloud compute instance-groups managed set-autoscaling MIG_NAME \ --max-num-replicas=MAX_INSTANCES \ --min-num-replicas=MIN_INSTANCES \ --update-stackdriver-metric=METRIC_URL \ --stackdriver-metric-utilization-target=TARGET_VALUE \ --stackdriver-metric-utilization-target-type=TARGET_TYPE \ --stackdriver-metric-filter="METRIC_FILTER"
更改下列內容:
MIG_NAME
:要新增自動配置器的 MIG。MAX_INSTANCES
:MIG 可用的 VM 數量上限。MIN_INSTANCES
:MIG 需要的 VM 最小數量。METRIC_URL
:Monitoring 指標的無通訊協定網址。例如:compute.googleapis.com/instance/uptime
。如果您使用自訂指標,該指標必須符合自訂指標規定。TARGET_VALUE
:自動配置器嘗試維持的指標值。TARGET_TYPE
:指標的值類型。gauge
:自動配置器會計算在最後幾分鐘收集的資料平均值,並將這個值與使用率目標進行比較。delta-per-minute
自動配置器會計算每分鐘的平均成長率,並將這個值與使用率目標比較。delta-per-second
自動配置器會計算每秒的平均成長率,並將這個值與使用率目標比較。如要進行準確比較,如果您以秒為單位設定使用率目標,請使用delta-per-second
做為目標類型。同樣地,請以秒為單位,用delta-per-minute
做為使用量目標。
METRIC_FILTER
:套用篩選器,以便使用具有多個值的指標中的個別值,並指定要監控的資源類型。如果您使用來自每個 VM 的指標,則不必指定受控資源類型,因為系統會預設使用gce_instance
。如要使用其他指標,請在篩選器運算式中使用resource.type
,指定要監控的資源。如要進一步瞭解指標篩選器,請參閱「監控指標概念」。
如要查看 gcloud CLI 可用指令和標記的完整清單,請參閱 gcloud
參考資料。
REST
如要針對區域性 MIG 依據 Monitoring 指標設定自動調度資源,請使用 autoscalers
資源;如果是地區性 MIG,請使用 regionAutoscalers
資源。
請發出下列呼叫,根據設有使用率目標的監控指標,自動調度區域性 MIG。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers { "name": "AUTOSCALER_NAME", "target": "zones/ZONE/instanceGroupManagers/MIG_NAME", "autoscalingPolicy": { "maxNumReplicas": MAX_INSTANCES, "minNumReplicas": MIN_INSTANCES, "customMetricUtilizations": [ { "metric": "METRIC_URL", "utilizationTarget": TARGET_VALUE, "utilizationTargetType": TARGET_TYPE } ], } }
如果指標有多個值,且您想使用個別值進行自動調度,請使用下列 API 呼叫中提供的 filter
參數。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers { "name": "AUTOSCALER_NAME", "target": "zones/ZONE/instanceGroupManagers/MIG_NAME", "autoscalingPolicy": { "maxNumReplicas": MAX_INSTANCES, "minNumReplicas": MIN_INSTANCES, "customMetricUtilizations": [ { "metric": "METRIC_URL", "utilizationTarget": TARGET_VALUE, "utilizationTargetType": TARGET_TYPE, "filter": "METRIC_FILTER" } ], } }
更改下列內容:
PROJECT_ID
:您的專案 ID。ZONE
:MIG 所在區域。AUTOSCALER_NAME
:自動配置器的名稱。MIG_NAME
:要新增自動配置器的 MIG。MAX_INSTANCES
:MIG 可用的 VM 數量上限。MIN_INSTANCES
:MIG 需要的 VM 最小數量。METRIC_URL
:Monitoring 指標的無通訊協定網址。例如:compute.googleapis.com/instance/uptime
。如果您使用自訂指標,該指標必須符合自訂指標規定。TARGET_VALUE
:自動配置器嘗試維持的指標值。TARGET_TYPE
:指標的值類型。GAUGE
:自動配置器會計算在最後幾分鐘收集的資料平均值,並將這個值與使用率目標進行比較。DELTA_PER_MINUTE
自動配置器會計算每分鐘的平均成長率,並將這個值與使用率目標比較。DELTA_PER_SECOND
自動配置器會計算每秒的平均成長率,並將這個值與使用率目標比較。如果您要以秒為單位設定使用率目標以進行準確比較,請使用DELTA_PER_SECOND
做為目標類型。同樣地,請以秒為單位,用DELTA_PER_MINUTE
做為使用量目標。
METRIC_FILTER
:套用篩選器,以便使用含有多個值的指標中的個別值,並指定要監控的資源類型。如果您使用來自每個 VM 的指標,則不必指定受控資源類型,因為系統會預設使用gce_instance
。針對其他指標,您必須使用resource.type
選取器指定要監控的資源。如要進一步瞭解指標篩選器,請參閱「監控指標概念」。
根據 MIG 中各個 VM 可執行的工作量,自動調度資源
如果您想根據 MIG 中每個 VM 可用的作業量來自動調度資源,請指定單一執行個體指派。您設定的單一執行個體指派值,表示您預期每個 VM 處理的工作量。自動配置器會將指標值除以單一執行個體指派值,藉此計算所需的 VM 數量。
如果指標值為 0
,表示 MIG 沒有待完成的工作。如果 MIG 的執行個體數量下限設為 0
,而指標值降至 0
,則 MIG 會縮減至 0
,直到指標值增加為止。
如果指標有多個值,請套用篩選器,以便使用指標中的個別值進行自動調度。如要進一步瞭解指標篩選器和其他可在設定中使用的欄位,請參閱「監控指標概念」。
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
如果您沒有代管執行個體群組,請建立一個群組。或者,在清單中按一下 MIG 名稱,開啟該執行個體群組頁面。
按一下 [編輯]。
如果沒有自動調度資源設定:
- 在「Autoscaling」(自動調度資源) 下方,按一下「Configure autoscaling」(設定自動調度資源功能)。
- 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
在「Autoscaling」下方的「Autoscaling signals」部分,如果有監控指標信號,您可以點選該信號進行編輯,或是點選「Add a signal」新增指標。
將「信號類型」設為「Cloud Monitoring 指標」。
按一下「設定」。在隨即開啟的「Resource and metric」(資源和指標) 窗格中,執行下列操作:
- 按一下「選取指標」。
- 選取要用於自動調度資源的指標。您可以根據任何關鍵字篩選指標,例如記憶體、位元組、磁碟。
- 按一下 [套用]。這個窗格會顯示圖表,顯示所選指標的資料。
如要使用指標中的特定資料,請按照下列方式新增標籤篩選器:
- 在「篩選器」部分,按一下「新增篩選器」。
- 選取「標籤」並輸入「值」。
- 按一下 [完成]。圖表會重新整理,顯示篩選後的指標值。
如要查看將用於自動調度 MIG 的指標匯總值,請切換「Show aggregation in chart」(在圖表中顯示匯總資料) 按鈕。圖表會重新整理,顯示匯總值。
在「Metric target options for autoscaling」(自動調度資源的指標目標選項) 區段中,選取「Single VM instance assignment」(單一 VM 執行個體指派)。
提供「Single instance assignment」(單一執行個體指派) 值,表示要指派給 MIG 中每個 VM 的工作量。
設定完指標後,按一下「選取」。
- 按一下「選取指標」。
查看指標詳細資料,然後按一下「完成」。
按一下「儲存」即可完成設定。
gcloud
如要設定依據監控指標的自動調度資源,請使用 set-autoscaling
指令。
在指令中指定 --stackdriver-metric-single-instance-assignment
標記,指出您預期群組中每個 VM 處理的工作量。
下列指令會根據各個 VM 的工作指派建立自動配置器。
gcloud compute instance-groups managed set-autoscaling MIG_NAME \ --max-num-replicas=MAX_INSTANCES \ --min-num-replicas=MIN_INSTANCES \ --update-stackdriver-metric=METRIC_URL \ --stackdriver-metric-filter="METRIC_FILTER" \ --stackdriver-metric-single-instance-assignment=INSTANCE_ASSIGNMENT
更改下列內容:
MIG_NAME
:您要新增自動配置器的 MIG 名稱。MAX_INSTANCES
:MIG 可用的 VM 數量上限。MIN_INSTANCES
:MIG 需要的 VM 最小數量。METRIC_URL
:Monitoring 指標的無通訊協定網址。例如:compute.googleapis.com/instance_group/size
。如果您使用自訂指標,該指標必須符合自訂指標規定。METRIC_FILTER
:套用篩選器,以便使用含有多個值的指標中的個別值,並指定要監控的資源類型。如要進一步瞭解指標篩選器,請參閱監控指標概念。INSTANCE_ASSIGNMENT
:要指派給 MIG 中每個 VM 執行個體的工作量。
REST
如要針對區域性 MIG 依據 Monitoring 指標設定自動調度資源,請使用 autoscalers
資源;如果是地區性 MIG,請使用 regionAutoscalers
資源。
使用 singleInstanceAssignment
參數指定您預期每個 VM 處理的工作量。
舉例來說,請發出下列呼叫,建立自動配置器,以便根據執行個體指派來調度區域性 MIG。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers { "name": "AUTOSCALER_NAME", "target": "zones/ZONE/instanceGroupManagers/MIG_NAME", "autoscalingPolicy": { "maxNumReplicas": MAX_INSTANCES, "minNumReplicas": MIN_INSTANCES, "customMetricUtilizations": [ { "metric": "METRIC_URL", "filter": "METRIC_FILTER", "singleInstanceAssignment": INSTANCE_ASSIGNMENT } ], } }
更改下列內容:
PROJECT_ID
:您的專案 ID。ZONE
:MIG 所在的可用區。AUTOSCALER_NAME
:自動配置器的名稱。MIG_NAME
:您要新增自動配置器的 MIG 名稱。MAX_INSTANCES
:MIG 可用的 VM 數量上限。MIN_INSTANCES
:MIG 需要的 VM 最小數量。METRIC_URL
:Monitoring 指標的無通訊協定網址。例如:compute.googleapis.com/instance_group/size
。如果您使用自訂指標,該指標必須符合自訂指標規定。METRIC_FILTER
:套用篩選器,以便使用含有多個值的指標中的個別值,並指定要監控的資源類型。如要進一步瞭解指標篩選器,請參閱監控指標概念。INSTANCE_ASSIGNMENT
:要指派給 MIG 中每個 VM 執行個體的工作量。
依據指標自動調度資源的範例
本節提供一些用於自動調度資源的指標範例。如需指標的完整清單,請參閱 Google Cloud 指標。
依據自訂指標自動調度資源
在某些情況下,提供相關信號的指標並非代表可用工作總量或適用於群組的其他資源,而是平均值、百分位數或其他統計屬性。在這個範例中,假設您根據群組的平均處理延遲時間進行調整。
假設下列設定:
- 已指派名為
our-instance-group
的可用區 MIG 來執行特定工作。該群組位於區域us-central1-a
中。 - 您擁有 Monitoring 自訂指標,可匯出您想維持在特定層級的值。針對這個範例,假設指標表示指派給群組之處理查詢的平均延遲時間。
- 已為自訂指標命名:
custom.googleapis.com/example_average_latency
。 - 自訂指標擁有一個標籤,且鍵名為
group_name
,值等於 MIG 名稱our-instance-group
。 - 自訂指標會針對全球監控資源匯出資料,也就是說,它不會與任何特定 VM 相關聯。
- 已為自訂指標命名:
您已決定當指標值高於某個特定值時,需要將更多的 VM 新增至群組來處理負載,而當它低於這個值時,可以釋出部分資源。您希望自動配置器以與指標高於或低於目標的程度成正比的比率,逐步新增或移除 VM。在這個範例中,假設您已判斷目標值為 250 delta/sec
。
您可以使用 250
的使用率目標,為群組設定自動調度資源,而這個目標表示自動配置器會嘗試維持的指標值變化率:
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下 MIG 名稱,開啟執行個體群組總覽頁面。
按一下 [編輯]。
如果沒有自動調度資源設定:
- 在「Autoscaling」(自動調度資源) 下方,按一下「Configure autoscaling」(設定自動調度資源功能)。
- 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
在「自動調度資源」下方的「自動調度資源信號」部分,按一下「新增信號」。
將「信號類型」設為「Cloud Monitoring 指標」。
按一下「設定」。「資源和指標」窗格隨即開啟。
- 按一下「選取指標」。
- 依序前往「全域」>「自訂指標」,選擇指標。
- 按一下 [套用]。
- 在「篩選器」專區中,執行下列操作:
- 按一下 [新增篩選器]。
- 在「標籤」下拉式選單中,選取
group_name
。 - 在「Value」欄位中輸入
our-instance-group
。 - 按一下 [完成]。圖表會重新整理,顯示從指標篩選出的值。
- 在「自動調度資源的指標目標選項」部分,執行以下操作:
- 選取「使用率目標」。
- 輸入使用率目標值 250。
- 將使用率目標類型設為「Delta / sec」。
- 設定指標後,按一下「選取」。
- 按一下「選取指標」。
查看指標詳細資料,然後按一下「完成」。
完成後,按一下「儲存」。
gcloud
gcloud compute instance-groups managed set-autoscaling our-instance-group \ --zone=us-central1-a \ --max-num-replicas=50 \ --min-num-replicas=0 \ --update-stackdriver-metric=custom.googleapis.com/example_average_latency \ --stackdriver-metric-filter="metric.labels.group_name = \"our-instance-group\" AND resource.type = \"global\"" \ --stackdriver-metric-utilization-target=250 \ --stackdriver-metric-utilization-target-type=delta-per-second
REST
POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/autoscalers { "name": "our-instance-group-autoscaler", "target": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instanceGroupManagers/our-instance-group", "autoscalingPolicy": { "maxNumReplicas": 50, "minNumReplicas": 0, "customMetricUtilizations": [ { "filter": "metric.labels.group_name=\"our-instance-group\" AND resource.type = \"global\"", "utilizationTargetType": "delta-per-second", "utilizationTarget": 250.0, "metric": "custom.googleapis.com/example_average_latency" } ] } }
根據 Pub/Sub 中的未確認訊息自動調整資源
如要依據 Pub/Sub 訂閱中未確認的訊息設定自動調度資源,請使用 pubsub
提供的 subscription/num_undelivered_messages
指標,並依 subscription ID
篩選。
subscription/num_undelivered_messages
指標會匯出訂閱項目中的訊息總數,包括正在處理但尚未確認的訊息。我們不建議使用不包含處理中訊息的指標,因為在仍有工作進行時,這類指標可能會降至 0,導致自動調整大小功能縮放,並可能中斷實際工作。
如果您沒有訂閱項目,可以在設定自動調度資源功能前,建立擷取、推送或 BigQuery 訂閱項目。
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下 MIG 名稱,開啟執行個體群組總覽頁面。
按一下 [編輯]。
如果沒有自動調度資源設定:
- 在「Autoscaling」(自動調度資源) 下方,按一下「Configure autoscaling」(設定自動調度資源功能)。
- 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
在「Autoscaling signals」部分中,按一下「Add a signal」。
將「Signal type」設為「Cloud Pub/Sub queue」。
在「要指派給各個 VM 的訊息數量」欄位中,指定您預期每個 VM 要處理的未確認訊息數量。
按一下 [完成]。
完成後,按一下「儲存」。
gcloud
gcloud compute instance-groups managed set-autoscaling MIG_NAME \ --max-num-replicas=MAX_INSTANCES \ --min-num-replicas=MIN_INSTANCES \ --update-stackdriver-metric=pubsub.googleapis.com/subscription/num_undelivered_messages \ --stackdriver-metric-filter="resource.type=\"pubsub_subscription\" AND resource.labels.subscription_id=\"SUBSCRIPTION_ID\"" \ --stackdriver-metric-single-instance-assignment=NUMBER_OF_MESSAGES_TO_ASSIGN_TO_EACH_VM
REST
如要為區域 MIG 設定自動調度資源,請使用 autoscalers
資源,如果是地區 MIG,請使用 regionAutoscalers
資源。
舉例來說,請發出下列呼叫,為區域 MIG 建立自動配置器。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers { "name": "AUTOSCALER_NAME", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME", "autoscalingPolicy": { "maxNumReplicas": MAX_INSTANCES, "minNumReplicas": MIN_INSTANCES, "customMetricUtilizations": [ { "singleInstanceAssignment": NUMBER_OF_MESSAGES_TO_ASSIGN_TO_EACH_VM, "filter": "resource.type = \"pubsub_subscription\" AND resource.labels.subscription_id=\"SUBSCRIPTION_ID\"", "metric": "pubsub.googleapis.com/subscription/num_undelivered_messages" } ] } }
根據連入網路流量自動調度資源
如要根據 MIG 中 VM 的傳入網路流量設定自動調度資源,請使用 compute
提供的 instance/network/received_bytes_count
指標。
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下 MIG 名稱,開啟執行個體群組總覽頁面。
按一下 [編輯]。
如果沒有自動調度資源設定:
- 在「Autoscaling」(自動調度資源) 下方,按一下「Configure autoscaling」(設定自動調度資源功能)。
- 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
在「自動調度資源」下方的「自動調度資源信號」部分,按一下「新增信號」。
將「信號類型」設為「Cloud Monitoring 指標」。
按一下「設定」。「資源和指標」窗格隨即開啟。
- 按一下「選取指標」。
- 依序選取「VM 執行個體」>「執行個體」>「已接收的位元組」(
compute.googleapis.com/instance/network/received_bytes_count
)。 - 按一下 [套用]。
- 依序選取「VM 執行個體」>「執行個體」>「已接收的位元組」(
- 在「自動調度資源的指標目標選項」部分,執行以下操作:
- 確認已選取「Utilization target」(使用率目標)。
- 輸入使用率目標值。
- 設定使用率目標類型。
- 設定指標後,按一下「選取」。
- 按一下「選取指標」。
查看指標詳細資料,然後按一下「完成」。
完成後,按一下「儲存」。
gcloud
gcloud compute instance-groups managed set-autoscaling MIG_NAME \ --max-num-replicas=MAX_INSTANCES \ --min-num-replicas=MIN_INSTANCES \ --update-stackdriver-metric=compute.googleapis.com/instance/network/received_bytes_count \ --stackdriver-metric-utilization-target=TARGET_VALUE \ --stackdriver-metric-utilization-target-type=TARGET_TYPE
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers { "name": "AUTOSCALER_NAME", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME", "autoscalingPolicy": { "maxNumReplicas": MAX_INSTANCES, "minNumReplicas": MIN_INSTANCES, "customMetricUtilizations": [ { "utilizationTargetType": "TARGET_TYPE", "utilizationTarget": TARGET_VALUE, "metric": "compute.googleapis.com/instance/network/received_bytes_count" } ] } }
根據記憶體用量自動調度資源
如要依據已用記憶體百分比設定自動調度資源,請指定 memory 作業代理程式指標提供的 percent_used
指標。您應依 state
篩選指標,只使用 used
記憶體狀態。如果您未指定篩選器,自動調整器會將標示為 buffered
、cached
、free
、slab
和 used
的所有記憶體狀態的記憶體用量加總。
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下 MIG 名稱,開啟執行個體群組總覽頁面。
在執行個體群組總覽頁面上,按一下「編輯」。
如果沒有自動調度資源設定:
- 在「Autoscaling」(自動調度資源) 下方,按一下「Configure autoscaling」(設定自動調度資源功能)。
- 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
在「自動調度資源」下方的「自動調度資源信號」部分,按一下「新增信號」。
將「信號類型」設為「Cloud Monitoring 指標」。
按一下「設定」。「資源和指標」窗格隨即開啟。
- 按一下「選取指標」。
- 依序選取「VM 執行個體」>「記憶體」>「記憶體使用率」(
compute.googleapis.com/instance/memory/percent_used
)。 - 按一下 [套用]。
- 依序選取「VM 執行個體」>「記憶體」>「記憶體使用率」(
- 在「篩選器」專區中,執行下列操作:
- 按一下 [新增篩選器]。
- 在「Label」下拉式選單中,選擇「state」指標標籤。
- 在「Value」欄位中,輸入「used」。
- 按一下 [完成]。
- 在「自動調度資源的指標目標選項」部分,執行以下操作:
- 確認已選取「Utilization target」(使用率目標)。
- 輸入使用率目標值。
- 將使用率目標類型設為「量測儀」。
- 設定指標後,按一下「選取」。
- 按一下「選取指標」。
查看指標詳細資料,然後按一下「完成」。
完成後,按一下「儲存」。
gcloud
gcloud compute instance-groups managed set-autoscaling MIG_NAME \ --max-num-replicas=MAX_INSTANCES \ --min-num-replicas=MIN_INSTANCES \ --update-stackdriver-metric=agent.googleapis.com/memory/percent_used \ --stackdriver-metric-filter="metric.labels.state = \"used\"" --stackdriver-metric-utilization-target-type=gauge \ --stackdriver-metric-utilization-target=TARGET_VALUE \
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers { "name": "AUTOSCALER_NAME", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME", "autoscalingPolicy": { "maxNumReplicas": MAX_INSTANCES, "minNumReplicas": MIN_INSTANCES, "customMetricUtilizations": [ { "filter": "metric.labels.state=\"used\"", "utilizationTargetType": "GAUGE", "utilizationTarget": TARGET_VALUE, "metric": "agent.googleapis.com/memory/percent_used" } ] } }
根據磁碟 I/O 自動調度資源
如要依據磁碟 I/O 作業的總數設定自動調度資源,請使用 disk Ops Agent 指標提供的 operation_count
指標。如果您想根據讀取或寫入作業進行縮放,請使用 direction
標籤篩選指標。同樣地,如要根據特定裝置中的磁碟作業進行縮放,請在指標篩選器中使用 device
標籤。
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下 MIG 名稱,開啟執行個體群組總覽頁面。
在執行個體群組總覽頁面上,按一下「編輯」。
如果沒有自動調度資源設定:
- 在「Autoscaling」(自動調度資源) 下方,按一下「Configure autoscaling」(設定自動調度資源功能)。
- 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
在「自動調度資源」下方的「自動調度資源信號」部分,按一下「新增信號」。
將「信號類型」設為「Cloud Monitoring 指標」。
按一下「設定」。「資源和指標」窗格隨即開啟。
- 按一下「選取指標」。
- 依序選取「VM 執行個體」>「磁碟」>「磁碟作業」圖示 (
agent.googleapis.com/disk/operation_count
)。 - 按一下 [套用]。
- 依序選取「VM 執行個體」>「磁碟」>「磁碟作業」圖示 (
- 在「自動調度資源的指標目標選項」部分,執行以下操作:
- 確認已選取「Utilization target」(使用率目標)。
- 輸入使用率目標值。
- 設定使用率目標類型。
- 設定指標後,按一下「選取」。
- 按一下「選取指標」。
查看指標詳細資料,然後按一下「完成」。
完成後,按一下「儲存」。
gcloud
gcloud compute instance-groups managed set-autoscaling MIG_NAME \ --max-num-replicas=MAX_INSTANCES \ --min-num-replicas=MIN_INSTANCES \ --update-stackdriver-metric=agent.googleapis.com/disk/operation_count \ --stackdriver-metric-utilization-target=TARGET_VALUE \ --stackdriver-metric-utilization-target-type=TARGET_TYPE
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers { "name": "AUTOSCALER_NAME", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME", "autoscalingPolicy": { "maxNumReplicas": MAX_INSTANCES, "minNumReplicas": MIN_INSTANCES, "customMetricUtilizations": [ { "utilizationTargetType": "TARGET_TYPE", "utilizationTarget": TARGET_VALUE, "metric": "agent.googleapis.com/disk/operation_count" } ] } }
根據另一個 MIG 的大小自動調整資源配置
您可以根據同一個專案中其他 MIG 的大小,自動調度 MIG。舉例來說,您可以建立多層應用程式,其中前端 MIG 會根據負載平衡器自動調度資源,而後端 MIG 會根據前端自動調度資源。使用單一執行個體指派,定義每個前端 VM 需要多少個後端 VM。如果每 4 個前端 VM 需要 1 個後端 VM,請在後端 MIG 中將單一執行個體指派設為 4。
如要根據另一個 MIG (MIG_2) 的大小自動調度 MIG (MIG_1),請使用 compute
提供的 instance_group/size
指標。
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下 MIG 名稱,開啟執行個體群組總覽頁面。
在執行個體群組總覽頁面上,按一下「編輯」。
如果沒有自動調度資源設定:
- 在「Autoscaling」(自動調度資源) 下方,按一下「Configure autoscaling」(設定自動調度資源功能)。
- 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
在「自動調度資源」下方的「自動調度資源信號」部分,按一下「新增信號」。
將「信號類型」設為「Cloud Monitoring 指標」。
按一下「設定」。「資源和指標」窗格隨即開啟。
- 按一下「選取指標」
- 依序選取「Instance Group」>「Instance_group」>「Instance group size」(
compute.googleapis.com/instance_group/size
)。 - 按一下 [套用]。
- 依序選取「Instance Group」>「Instance_group」>「Instance group size」(
- 在「篩選器」專區中,執行下列操作:
- 按一下 [新增篩選器]。
- 在「Label」下拉式選單中,選擇「instance_group_name」資源標籤。
- 在「Value」欄位中,輸入要根據哪個 MIG 自動調度資源的 MIG 名稱 (MIG_2)。
- 按一下 [完成]。
- 在「自動調度資源的指標目標選項」部分,執行以下操作:
- 選取「單一 VM 執行個體指派」。
- 如果您想在 MIG_2 中的每 4 個 VM 中,保留目前 MIG (MIG_1) 中的 1 個 VM,請在「單一 VM 執行個體指派」欄位中輸入
4
。
- 設定指標後,按一下「選取」。
- 按一下「選取指標」
查看指標詳細資料,然後按一下「完成」。
完成後,按一下「儲存」。
gcloud
gcloud compute instance-groups managed set-autoscaling MIG_1 \ --max-num-replicas=MAX_INSTANCES \ --min-num-replicas=MIN_INSTANCES \ --update-stackdriver-metric=compute.googleapis.com/instance_group/size \ --stackdriver-metric-filter="resource.type = \"instance_group\" AND resource.labels.location = \"ZONE|REGION\" AND resource.labels.instance_group_name = \"MIG_2\"" \ --stackdriver-metric-single-instance-assignment=4
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers { "name": "AUTOSCALER_NAME", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_1", "autoscalingPolicy": { "maxNumReplicas": MAX_INSTANCES, "minNumReplicas": MIN_INSTANCES, "customMetricUtilizations": [ { "singleInstanceAssignment": 4, "filter": "resource.type = \"instance_group\" and resource.labels.location = \"ZONE|REGION\" AND resource.labels.instance_group_name = \"MIG_2\"", "metric": "compute.googleapis.com/instance_group/size" } ] } }
監控指標概念
本節簡要說明監控指標概念,您在根據監控指標設定自動調度資源時,需要瞭解這些概念。
指標 ID 或指標網址:指標名稱,格式為不含通訊協定的網址。您可以在指標清單中找到內建指標的網址。
舉例來說,提供未確認訊息數量的 Pub/Sub 指標網址為
pubsub.googleapis.com/subscription/num_undelivered_messages
。受控資源類型:指標值的來源。您可以從指標清單中找到指標的受控資源類型。
舉例來說,
pubsub.googleapis.com/subscription/num_undelivered_messages
指標的受控資源類型為pubsub_subscription
。如要進一步瞭解各個受控資源類型,請參閱「受控資源類型」。指標篩選器:如果指標有多個值,篩選器可讓自動調整器從可能的指標值組中找出特定指標值。使用指標和受控資源類型中定義的標籤來篩選值。如要使用不同的篩選器探索指標值,請在指標瀏覽器中試試。
舉例來說,下圖顯示
pubsub.googleapis.com/subscription/num_undelivered_messages
指標,可提供所有可用訂閱項目中的未確認訊息數量。圖表中的每條線都代表一個訂閱項目。如未指定篩選器,自動配置器會從所有訂閱項目中取得指標值的總和。如要依單一訂閱項目自動調整資源,請在為
pubsub_subscription
定義的subscription_id
標籤上套用篩選器。下圖顯示套用篩選器後的單一訂閱項目。
指標篩選需求
如果您使用含有多個值的指標 (使用標籤分類),可以套用篩選器,根據指標中的特定值自動調度資源。如果篩選器傳回多個值,系統會將這些值加在一起。為獲得最佳結果,請建立十分精確的篩選器,以傳回單一值。
指標的自動配置器篩選功能與 Monitoring 篩選器語法相容。篩選器必須符合下列規定:
- 您必須以雙引號括住篩選器的值。
- 您必須使用直接相等性比較運算子 (
=
)。 您必須使用
AND
運算子來彙整不同的篩選條件。例如
--stackdriver-metric-filter="resource.type=\"pubsub_subscription\" AND resource.labels.subscription_id=\"our-subscription\""
。您必須使用直接值。您無法在篩選器中使用萬用字元或函式。
例如,您無法使用
resource.labels.zone = starts_with("us-")
。您無法使用儲存受控資源中繼資料的資源中繼資料標籤。
如需指標標籤和受控資源標籤的完整參考資料,請參閱指標清單和受控資源清單。
自訂指標規定
如要使用自訂指標,您必須先建立與其中一個受控資源類型相關聯的自訂指標。
用於自動調度資源的自訂指標必須具備下列屬性:
- 如果自動調度資源設定會使用群組中每個 VM 的資料,請在 MIG 中設定執行個體,讓每個 VM 匯出自訂指標。每個 VM 匯出的值必須與
gce_instance
受控資源相關聯,且這個資源包含下列標籤:zone
,且具有執行個體所在區域的名稱。instance_id
,具有指派給 VM 的唯一數值 ID 值。
- 指標至少必須每 60 秒匯出資料一次。如果匯出資料的頻率低於 60 秒,自動配置器就能更快地回應負載變更。如果匯出資料的間隔時間超過 60 秒,自動配置器可能無法足夠快速地回應負載變更。
- 指標必須匯出
INT64
或DOUBLE
值類型的資料。
如要瞭解如何建立自訂指標,請參閱使用自訂指標。
後續步驟
- 瞭解如何管理自動配置器。
- 瞭解自動配置器如何做出決策。
- 瞭解如何使用多個自動調度資源信號來調度群組。