如果您使用代管執行個體群組 (MIG),請參閱這份文件,瞭解如何建立、設定及刪除 MIG 的自動調度資源。
事前準備
-
如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 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.
-
建立自動配置器
隨著您想要使用的自動調度資源政策不同,建立自動配置器的方式也會略有差異。如需建立自動配置器的操作說明,請參閱:
取得自動配置器相關資訊
如要取得特定自動配置器的詳細資訊,請使用主控台、gcloud compute instance-groups managed describe
子指令,或區域或地區自動配置器 REST 資源的 get
方法。
主控台
- 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
- 在清單中按一下 MIG 名稱,開啟該群組的總覽頁面。
- 按一下 [Details] (詳細資料) 即可查看群組的詳細資料,包括群組的自動調度資源設定。
gcloud
使用 instance-groups managed describe
指令:
gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME
如果群組已附加自動配置器,這個指令會傳回自動配置器的詳細資料:
... autoscaler: autoscalingPolicy: coolDownPeriodSec: 60 cpuUtilization: utilizationTarget: 0.6 maxNumReplicas: 20 minNumReplicas: 10 mode: ON scaleInControl: timeWindowSec: 300 maxScaledInReplicas: fixed: 3 calculated: 3 ...
REST
請使用 instanceGroupManagers.get
方法。如果是區域 MIG,請將 zones/ZONE
替換為 regions/REGION
。
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME
如果群組已連結自動配置器,請求會傳回自動配置器資源的連結。
200 OK { ... "status": { ... "autoscaler": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/autoscalers/example-group" }, }
如要擷取自動配置器資源的詳細資料,請針對區域 MIG 使用 autoscalers.get
方法,針對區域 MIG 使用 regionAutoscalers.get
方法。
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/example-autoscaler
200 OK { "kind": "compute#autoscaler", "id": "8744945839459481093", "creationTimestamp": "2018-09-28T13:02:50.553-07:00", "name": "example-group", "target": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/instanceGroupManagers/example-group", "autoscalingPolicy": { "minNumReplicas": 10, "maxNumReplicas": 20, "mode": "ON", "scaleInControl": { "timeWindowSec": 60, "maxScaledInReplicas": { "calculated": 3, "percent": 15 } }, "coolDownPeriodSec": 60, "cpuUtilization": { "utilizationTarget": 0.6 } }, "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c", "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/autoscalers/example-group", "status": "ACTIVE" }
更新自動配置器
更新自動配置器後,變更可能需要一段時間才會生效,新的自動配置器設定可能需要數分鐘,才會反映在系統上。
主控台
- 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
- 在清單中按一下 MIG 名稱,開啟該群組的總覽頁面。
- 按一下「編輯」即可查看及更新群組目前的設定,包括群組的自動調度資源設定。
- 完成時請按一下 [Save] (儲存)。
gcloud
gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \ --max-num-replicas MAX_NUM ...
如需建立自動配置器的操作說明,請參閱「建立自動配置器」。
REST
如要更新自動配置器資源,請針對區域 MIG 使用 autoscalers.patch
方法,針對區域 MIG 使用 regionAutoscalers.patch
方法。提供要求主體,並在其中包含新的設定。
PATCH https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/autoscalers/example-autoscaler { "autoscalingPolicy": { "maxNumReplicas": 20 } }
200 OK { "kind": "compute#operation", "id": "4244494732310423322", "name": "operation-1556912627871-58800f8216ed7-74ab1720-7d360603", "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f", "operationType": "compute.autoscalers.patch", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/autoscalers/example-autoscaler", "targetId": "340775527929467142", "status": "RUNNING", ... }
執行任何會修改資料的要求時,系統均會傳回 zoneOperations 或 regionOperations 資源,您可查詢作業來檢查變更的狀態。
使用預測式自動調度資源功能
預測式自動調度資源功能會使用歷來資料,在預期負載出現前擴展群組。工作負載必須符合下列條件,才能發揮最佳效能:
- 應用程式初始化需要很長的時間,例如設定的初始化期間超過 2 分鐘。
- 工作負載會隨著每日或每週週期而變化。
詳情請參閱「根據預測值調整資源調度」。
關閉或限制自動配置器
關閉自動配置器來暫時避免自動配置器為 MIG 進行資源調度,或限制自動配置器,使其只能為 MIG 進行向外擴充的資源調度。要進行下列作業時,這項功能非常實用:
- 在不受資源規模擴增干擾的情況下調查 VM 執行個體。
- 重新設定 MIG 的多個屬性,且進行部分重新設定期間,系統不會觸發資源調度動作。
- 維持 MIG 容量,以便在將工作負載重新導向至新的 MIG 時,可快速復原。
- 稍後再啟用預測式自動調度資源功能。預測式自動調度資源功能需要自動調度資源政策,才能開始收集負載記錄,以做為預測的依據。即使自動調度器的模式設為
OFF
,也會偵測這項記錄。
如果重新啟用自動配置器,自動配置器會自動恢復正常運作狀態。
請按照本節提供的操作說明設定自動配置器的模式。可用的模式如下:
- 關閉:暫時停用自動調度資源功能。使用此模式可防止系統自動變更 MIG 的大小。自動調度資源設定會保持不變,以供日後重新啟用自動調度資源功能。
- 僅向外擴充:將自動調度資源限制為僅限新增 VM 執行個體。使用此模式可避免群組縮小,並讓群組可在負載增加時佈建額外的 VM。
- 開啟:根據政策啟用所有自動調度資源作業。
主控台
- 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
- 在清單中按一下 MIG 名稱,開啟該群組的總覽頁面。
- 按一下「編輯」即可查看群組目前的設定,包括群組的自動調度資源設定。
- 在「Autoscaling」(自動調度資源) 下,設定「Autoscaling mode」(自動調度資源模式) 來停用或限制自動調度資源,或重新開啟自動配置器。
- 完成時請按一下 [Save] (儲存)。
gcloud
如要停用、限制或重新啟用自動配置器,請使用 update-autoscaling
指令搭配 --mode
旗標。
gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \ --mode MODE
更改下列內容:
MODE
:off
會停用自動配置器,但會保持其設定only-scale-out
會將自動配置器限制為只能新增 VM 執行個體on
會根據本身的政策重新啟用所有自動配置器活動
REST
如要更新自動配置器資源的模式,請針對區域 MIG 使用 autoscalers.patch
方法,針對區域 MIG 使用 regionAutoscalers.patch
方法。提供要求主體,並在其中包含 autoscalingPolicy.mode
屬性。
PATCH https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1-f/autoscalers?autoscaler=my-autoscaler { "autoscalingPolicy": { "mode":"MODE" } }
更改下列內容:
MODE
:OFF
會停用自動配置器,但會保持其設定ONLY_SCALE_OUT
會將自動配置器限制為只能新增執行個體ON
會根據本身的政策重新啟用所有自動配置器活動
將自動調度資源模式設為 ONLY_SCALE_OUT
時,自動配置器的行為如下:
- 無論負載減少或自動配置器設定有所變更,自動配置器都不會降低 MIG 的
targetSize
值。 - 如果您手動變更區域性 MIG 的目標大小,當手動提供的大小小於自動配置器建議的大小時,自動配置器會覆寫該大小。
- 您無法手動變更地區 MIG 的目標大小。
- 如果您將
autoscalingPolicy.maxNumReplicas
欄位設為低於群組目前targetSize
值的值,而自動配置器的模式設為ONLY_SCALE_OUT
,自動配置器就不會減少群組中的執行個體數量。如常,自動配置器會持續重新計算群組的建議大小,並可能會降低群組的建議大小,以符合新的上限,但群組不會縮放。 autoscalers.status
欄位會回報警告:「Autoscaling 處於受限模式運作:ONLY_SCALE_OUT。」
將自動配置器的模式設為 OFF
時,自動配置器的行為如下:
- 自動調度資源不會根據負載或自動調度資源設定的變更,變更 MIG 的
targetSize
值。如常,自動配置器會持續重新計算群組的建議大小,並可能會降低群組的建議大小,以符合新的最大值,但不會縮減群組。 - 您可以手動變更可用區或區域性 MIG 的目標大小。自動調度資源政策的
minNumReplicas
和maxNumReplicas
值不會影響您設定的大小。 - 如果您為啟用主動式執行個體重新分配功能的區域 MIG 關閉自動調度資源功能,且 MIG 在各區域的執行個體分布不均,則群組會主動刪除或建立區域中的執行個體,以重新建立均勻分布的狀態。
autoscalers.status
欄位會回報警告:「Autoscaling operates in a restricted mode: OFF.」(自動調度資源功能處於限制模式:關閉)。
控管自動配置器的縮減率
如果您的工作負載需要數分鐘才能啟動,請設定縮減資源配置的控制功能,藉此降低資源配置驟降事件引發的回應延遲和服務中斷風險。具體來說,如果您預期負載量下降後,負載量會很快暴增,可以限制縮放率。限制縮放率,可避免自動調度器減少 MIG 大小時,移除的工作負載比可容許的數量還多。
設定縮減控制項
您可以選擇設定縮減控制項。根據預設,系統不會設定縮放控制項。未設定時,自動配置器仍會依賴預設的穩定機制。也就是說,它會將建議大小維持在穩定期內觀察到的峰值負載所需的等級。
主控台
如要為自動調度資源的 MIG 設定縮減控制項,請按照下列步驟操作:
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下自動調度 MIG 的名稱,開啟該群組的總覽頁面。
按一下「編輯」即可查看群組目前的設定,包括群組的自動調度資源設定。
在「Autoscaling」(自動調度資源) 下方,按一下「Scale-in controls」(縮減控制項),然後選取「Enable scale-in controls」(啟用縮減控制項)。
在「不要超過下列值」下方,指定一次可從群組移除的執行個體數量或百分比上限。
在「Over the course of」(期間) 下方,指定可從群組移除執行個體的頻率。
按一下 [儲存]。
gcloud
您可以在建立自動配置器或更新自動配置器時,設定縮減控制項。
建立自動配置器時設定縮減控制項
為 MIG 建立自動配置器時,請使用 --scale-in-control
標記搭配 gcloud
compute instance-groups managed set-autoscaling
指令,設定縮放控制項。舉例來說,您可以使用下列指令,為 example-group
設定自動調度資源功能:
gcloud compute instance-groups managed set-autoscaling INSTANCE_GROUP_NAME \ --target-cpu-utilization 0.6 \ --max-num-replicas 50 \ --scale-in-control max-scaled-in-replicas=MAX_SCALE_IN_REPLICAS,time-window=TIME_WINDOW
更新自動配置器時設定縮放控制項
使用 --scale-in-control
旗標搭配 gcloud compute instance-groups managed update-autoscaling
指令,更新 MIG 現有自動調整器中的縮放控制項。舉例來說,您可以使用下列指令,在 example-group
現有的自動調度資源設定中設定縮減控制項:
gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \ --scale-in-control max-scaled-in-replicas=MAX_SCALE_IN_REPLICAS,time-window=TIME_WINDOW
更改下列內容:
INSTANCE_GROUP_NAME
:要更新的 MIG 名稱。MAX_SCALE_IN_REPLICAS
:從指定的尾隨時間視窗中,可從尖峰大小扣除的 VM 數量上限。指定的 VM 執行個體數量可一次全部縮放,因此您的服務應可一次失去這麼多 VM。您可以指定 VM 數量或百分比。使用%
符號表示百分比,例如:50%
。TIME_WINDOW
:從中擷取峰值大小的延遲時間視窗。自動調整資源的數量不會超過這個尾隨時間視窗中,從峰值大小計算出的允許複本數量上限。請以秒為單位指定這項值,範圍為 [60, 3600]。
舉例來說,假設您將時間範圍設為 1800 秒 (30 分鐘)。計算 MIG 目前的建議大小時,自動配置器會使用以下邏輯:
- 取過去 30 分鐘的尖峰大小 (例如 100 個 VM)
- 以
max-scaled-in-replicas
為例 (例如 10 部 VM) - 將建議大小的下限設為:峰值大小減去
max-scaled-in-replicas
(100 - 10 = 90 部虛擬機器)
REST
在區域或地區自動調度資源資源中,設定 autoscalingPolicy.scaleInControl
結構體中的 maxScaledInReplicas
和 timeWindowSec
欄位,即可設定縮放控制項。這些欄位沒有預設值,您必須為這兩個欄位提供值。
您可以在建立自動配置器或更新自動配置器時,設定縮減控制項。
建立自動配置器時設定縮減控制項
如果是區域 MIG,請使用 autoscalers.insert
方法。如果是區域 MIG,請使用 regionAutoscalers.insert
方法。
POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers { "name": "AUTOSCALER_NAME", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME", "autoscalingPolicy": { "minNumReplicas": 1, "maxNumReplicas": 5, "coolDownPeriodSec": 60, "cpuUtilization": { "utilizationTarget": 0.8 }, "scaleInControl": { "maxScaledInReplicas": { "fixed": MAX_SCALE_IN_REPLICAS }, "timeWindowSec": TIME_WINDOW } } }
如要進一步瞭解如何建立自動配置器,請參閱下列文章:
更新自動配置器時設定縮放控制項
如果是區域 MIG,請使用 autoscalers.patch
方法。如果是區域 MIG,請使用 regionAutoscalers.patch
方法。
PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers?autoscaler=AUTOSCALER_NAME { "autoscalingPolicy": { "minNumReplicas": 1, "maxNumReplicas": 5, "coolDownPeriodSec": 60, "cpuUtilization": { "utilizationTarget": 0.8 }, "scaleInControl": { "maxScaledInReplicas": { "fixed": MAX_SCALE_IN_REPLICAS }, "timeWindowSec": TIME_WINDOW } } }
更改下列內容:
AUTOSCALER_NAME
:要建立的自動調整器名稱。您可以依據要使用的 MIG 為自動配置器命名,也可以使用其他名稱。INSTANCE_GROUP_NAME
:要新增自動配置器的 MIG 名稱。如果是區域 MIG,請將zones/ZONE
替換為regions/REGION
。MAX_SCALE_IN_REPLICAS
:從指定的後續時間範圍中,從建議的最高目標大小扣除的 VM 數量上限。指定的 VM 執行個體數量可一次全部縮放,因此您的服務應可承受一次失去這麼多 VM 的情況。您可以指定 VM 數量或百分比。使用maxScaledInReplicas.percentage
指定百分比值。TIME_WINDOW
:從中擷取建議峰值大小的尾隨時間視窗。自動調整功能不會將副本數量調整為超過此尾隨時間間隔期間所採用的建議峰值大小上限。以秒為單位指定此值,範圍為 [60, 3600] 之間,例如:1800
。
舉例來說,假設您將時間範圍設為 1800 秒 (30 分鐘)。計算 MIG 目前的建議大小時,自動配置器會使用以下邏輯:
- 取過去 30 分鐘的尖峰大小 (例如 100 個 VM)
- 以
max-scaled-in-replicas
為例 (例如 10 部 VM) - 將建議大小的下限設為:峰值大小減去
max-scaled-in-replicas
(100 - 10 = 90 部虛擬機器)
如要進一步瞭解縮減控制項的運作方式,請參閱「瞭解自動配置器決策」。
取得向內縮減控制項的目前設定
如要取得縮放控制項的目前設定,請參閱「取得自動配置器的相關資訊」。
移除縮減控制項
您可以移除縮放控制項,使用 Google Cloud CLI 或 Compute Engine API 解除縮放作業的時間和規模限制。
在沒有縮放控制項的情況下,自動調度資源功能仍會依賴預設的穩定機制。具體來說,它會維持建議大小,以便在穩定期間提供可滿足尖峰負載的服務。
主控台
如要移除自動調度 MIG 的縮減控制項,請按照下列步驟操作:
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下自動調度 MIG 的名稱,開啟該群組的總覽頁面。
按一下「編輯」即可查看群組目前的設定,包括群組的自動調度資源設定。
在「Autoscaling」(自動調度資源) 下方,按一下「Scale-in controls」(縮減控制項),然後取消勾選「Enable scale-in controls」(啟用縮減控制項) 核取方塊。
按一下 [儲存]。
gcloud
使用 --clear-scale-in-control
旗標搭配 gcloud compute instance-groups managed update-autoscaling
指令,即可移除縮放控制項。舉例來說,您可以使用下列指令,從 example-group
的自動調度資源設定中移除縮減控制項:
gcloud compute instance-groups managed update-autoscaling example-group \ --clear-scale-in-control
REST
如要移除縮放控制項,請針對區域性 MIG 使用 autoscalers.patch
方法,或針對區域性 MIG 使用 regionAutoscalers.patch
方法,並為縮放控制項提供空白設定。
PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME { "autoscalingPolicy": { "scaleInControl": null } }
更改下列內容:
AUTOSCALER_NAME
:要更新的自動調整器名稱。如要取得現有自動配置器及其目標 MIG 的清單,請使用autoscalers.aggregatedList
方法。
刪除自動配置器
您可以永久刪除自動配置器資源及其記錄。如果您想要暫時停止自動調度資源並保留自動配置器資源及其設定和記錄,請改為停用自動配置器。
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下 MIG 名稱,開啟該群組的總覽頁面。
按一下「編輯」即可查看群組目前的設定,包括群組的自動調度資源設定。
在「Autoscaling」(自動調度資源) 下,從「Autoscaling mode」(自動調度資源模式) 下拉式清單中選取「Delete autoscaling configuration」(刪除自動調度資源設定) ,即可停止自動配置器並刪除其設定。
完成時請按一下 [Save] (儲存)。
gcloud
使用 stop-autoscaling
指令來停止自動配置器,並刪除其設定。
gcloud compute instance-groups managed stop-autoscaling INSTANCE_GROUP_NAME
停止自動配置器會將其從 MIG 中刪除。如要重新啟動自動配置器,則必須使用 set-autoscaling
指令重新建立自動配置器。
如果您使用 gcloud CLI 刪除 MIG,所有連結至 MIG 的自動配置器也會遭到刪除。
REST
如要停止自動配置器並刪除其設定,請針對區域性 MIG 使用 autoscalers.delete
方法,或針對區域性 MIG 使用 regionAutoscalers.delete
方法。
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/AUTOSCALER_NAME
意見回饋
我們想瞭解您的用途、難題和自動調度的相關意見。歡迎透過 mig-discuss@google.com 與我們的團隊分享意見。
後續步驟
- 瞭解自動配置器如何做出決策。
- 瞭解如何使用多個自動調度資源信號來調度群組。