代管執行個體群組 (MIG) 提供自動調度資源功能,可根據負載的增減,自動在 MIG 中新增或刪除虛擬機器 (VM) 執行個體。自動調度資源服務可協助應用程式緩解流量增加的問題,並在資源需求降低時節省成本。您只需要定義自動調度資源政策,自動配置器就會根據測得的負載和您設定的選項,自動調整資源配置。
自動調度資源功能會在負載增加時,在 MIG 中新增其他 VM (向外擴充),並在 VM 需求減少時移除 VM (向內擴充)。
必要條件
自動調度器會使用 Compute Engine 服務代理程式,在群組中新增及移除執行個體。啟用 Compute Engine API 時, Google Cloud 會自動建立這個服務帳戶,以及其與 Compute Engine 服務代理程式角色之間的 IAM 政策繫結。
如果專案缺少這個帳戶 (例如您已移除),可以手動新增:
主控台
前往 Google Cloud 控制台的「IAM」(身分與存取權管理) 頁面。
點選「授予存取權」。
在「New principals」(新增主體) 欄位中輸入
service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
。選取「Compute Engine 服務代理人」角色。
按一下 [儲存]。
gcloud
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role roles/compute.serviceAgent
基礎知識
自動調度資源功能牽涉到下列基本概念和服務。
代管執行個體群組
自動調度資源是代管執行個體群組 (MIG) 的功能。代管執行個體群組是透過常用執行個體範本建立的一組虛擬機器 (VM) 執行個體。自動調度器會根據群組的自動調度資源政策,在代管執行個體群組中新增或刪除執行個體。雖然 Compute Engine 同時具有代管和非代管執行個體群組,但只有代管執行個體群組可以與自動調度器搭配使用。
如要瞭解代管執行個體群組與非代管執行個體群組之間的差異,請參閱執行個體群組一文。
如要瞭解如何建立代管執行個體群組,請參閱建立代管執行個體群組。
自動調度資源政策
為群組定義自動調度資源政策時,您會指定一或多個信號,供自動調度器用來調度群組資源。在政策中設定多個信號時,自動調度器會為每個信號計算建議的 VM 數量,並將群組的建議大小設為最大數量。
自動調度資源政策一律至少要有一個調度信號。在 MIG 中啟用自動調度資源時,自動調度器預設會新增 CPU 使用率信號。您可以編輯這項預設信號,或是在政策中移除及新增其他信號。
以下各節將根據目標用量指標和時間表,分別概述信號。
目標使用率指標
您可以根據下列一或多項指標自動調度資源,這些指標反映了執行個體群組的負載:
- 平均 CPU 使用率
- HTTP 負載平衡服務規模
- Cloud Monitoring 指標
自動調度器會根據所選使用率指標持續收集使用率資訊,並將實際使用率與您想要的目標使用率進行比較,然後根據這項資訊判斷群組是否需要移除執行個體 (縮減) 或新增執行個體 (擴充)。
目標使用率是指您想讓虛擬機器 (VM) 執行個體維持的等級。舉例來說,如果您要根據 CPU 使用率調度資源,可以將目標使用率設為 75%,這樣自動配置器就會將指定執行個體群組的 CPU 使用率維持在 75% 或 75% 附近。每項指標的使用率解讀方式會因自動調度資源政策而有所不同。
如果您根據下列任一項目自動調度資源,MIG 就無法縮減為零個執行個體:
- 平均 CPU 使用率
- HTTP 負載平衡服務規模
- 監控來自 MIG 中每個執行個體的指標
不過,如果將執行個體數量下限 (autoscalingPolicy.minNumReplicas
) 設為 0
,您就能在縮減至零個執行個體時使用其他 Monitoring 指標。
如要進一步瞭解如何根據目標使用率指標調度資源,請參閱下列頁面:
排程
您可以運用排程式自動調度資源功能,為預期負載分配容量。每個執行個體群組最多可有 128 個資源調度時間表。 請為每個縮放時間表指定下列項目:
- 容量:所需 VM 執行個體數量下限
- 排程:開始時間、持續時間和重複頻率 (例如一次、每天、每週或每月)
每個縮放排程都會從開始時間起生效,並持續設定的時長。在這段期間,自動調度器會調度群組,確保執行個體數量至少達到調度排程定義的數量。
使用排程時,如果符合下列所有條件,MIG 可以縮減至零個執行個體:
- 執行個體數量的最小值 (
autoscalingPolicy.minNumReplicas
) 設為0
。 - 自動調度資源政策不含任何有效時間表。
- 自動調度資源政策不含以目標使用率指標為依據的信號,因此無法縮減至零個執行個體。
詳情請參閱根據時間表執行資源調度。
初始化期間
初始化期間 (舊稱「等待期」) 是指應用程式在 VM 執行個體上完成初始化所需的時間。應用程式在執行個體上初始化時,執行個體的使用量資料可能無法反映正常情況。因此,自動調度器會以以下方式,在初始化期間做出調度決策:
- 在縮減決策方面,自動調度器會考量所有執行個體的使用量資料,即使執行個體仍在初始化期間也一樣。如果所有執行個體的平均使用率低於目標使用率,自動配置器就會建議移除執行個體。
- 在決定向外擴充時,自動調度器會忽略仍在初始化期間的執行個體用量資料。
- 如果啟用預測模式,初始化期間會通知預測式自動調度器在預期負載出現前,進一步擴充資源,以便在負載出現時初始化應用程式。舉例來說,如果將初始化期間設為 300 秒,預測式自動調度器就會在預測負載出現前 5 分鐘建立 VM。
預設的初始化週期為 60 秒。實際初始化時間會因多項因素而異,建議您測試應用程式的初始化時間。如要這麼做,請建立執行個體,並從執行個體變成 RUNNING
到應用程式準備就緒為止,計時啟動程序。
如果您設定的初始化時間值遠長於執行個體初始化所需的時間,自動調度資源功能可能會忽略合理的使用率資料,並低估群組所需的大小,導致向外擴充作業延遲。
穩定期
CPU 使用率等自動調度資源信號不太穩定,可能會快速變化。隨著負載起伏,自動調度器需要穩定信號,避免持續刪除及建立 VM。自動調度器會在穩定期內,維持足夠的 VM 容量,以因應觀察到的尖峰負載,藉此穩定信號。
穩定期等於 10 分鐘或您設定的初始化時間,以較長者為準。自動調度器必須刪除 VM 時,只會使用穩定期來決定縮減資源。
負載減少時,自動調度器不會立即刪除 VM,自動調度器會在穩定期內持續監控容量需求,並在容量足以應付尖峰負載時,才會刪除 VM。這看似是縮減資源的調度發生延遲,但實際上是自動調度資源的內建功能。
如果應用程式在新 VM 上初始化所需的時間超過 10 分鐘,自動調度資源功能就會使用初始化期間,而非預設的 10 分鐘穩定期,等待 VM 刪除。這可確保自動調度器在決定刪除 VM 時,會考量恢復服務容量所需的時間。
負載增加時,自動調度器不會使用穩定期,而是立即建立足夠的 VM 來滿足需求。
自動調度資源模式
如需在不受自動配置器作業干擾的情況下調查或設定群組,可暫時關閉或限制自動調度資源活動。即使關閉或限制自動配置器,系統也會保留自動配置器的設定,且會在再次開啟自動配置器或解除限制時,繼續進行所有自動調度資源活動。
預測式自動調度資源
如果您啟用預測式自動調度資源功能,以最佳化 MIG 的可用性,自動調度器會根據歷史資料預測未來的負載,並在預測負載前調度 MIG 資源,確保負載出現時,新執行個體已準備就緒。
如果工作負載符合下列條件,預測式自動調度資源功能就能發揮最佳效果:
- 應用程式需要很長時間才能初始化,例如您設定的初始化期間超過 2 分鐘。
- 工作負載會隨著每日或每週週期而有規律地變化。
詳情請參閱根據預測結果執行資源調度。
向內縮減控制項
如果工作負載需要數分鐘才能啟動 (例如,因為安裝工作耗時),您可以設定縮減資源配置的控制功能,藉此降低資源配置驟降事件引發的回應延遲風險。具體來說,如果您預期負載會在下降後不久出現尖峰,可以限制縮減率,避免自動調度資源功能縮減的 MIG 大小超過工作負載可容忍的 VM 執行個體數量。
如果應用程式的初始化速度夠快,可因應擴充作業的負載尖峰,就不必設定縮減資源配置的控制功能。
如要設定縮減控制項,請在自動調度資源政策中設定下列屬性。
允許的降幅上限。 工作負載在指定後續時間範圍內可承受的 VM 執行個體損失數量 (以尖峰大小為準)。使用這個參數可限制群組縮減的幅度,以便在更多執行個體開始提供服務前,仍能處理可能的負載尖峰。您設定的最大允許縮減幅度越小,群組縮減所需的時間就越長。
後續時間範圍。 自動調度器監控工作負載所需尖峰大小的歷史記錄。自動配置器不會將大小縮減至低於這個期間觀察到的尖峰大小減去允許縮減上限的值。您可以使用這個參數定義自動配置器應等待多久,再移除執行個體 (如允許的最大縮減量所定義)。如果後方時間範圍較長,自動配置器會考量更多歷史尖峰,因此縮減規模時會更保守且穩定。
詳情請參閱「設定縮減控制項」和「瞭解自動調度資源決策」。
建議大小
建議群組大小是自動調度器建議代管執行個體群組應維持的 VM 數量,這是根據過去 10 分鐘觀察到的尖峰負載而定。最近 10 分鐘稱為「穩定期」。建議大小會不斷重新計算。如果您設定的自動調度資源政策包含縮減控制項,建議大小會受到縮減控制項限制。
限制
下列執行個體群組無法使用自動調度資源功能,因為自動調度器無法根據需求建立或刪除 VM:
- 非代管執行個體群組
- 具有有狀態設定的 MIG
- 已關閉 VM 修復功能的 MIG
- 目標分配型態為
ANY
或ANY_SINGLE_ZONE
的區域性 MIG
開啟自動調度資源功能時,無法建立具有特定名稱的 VM 執行個體。
請勿將 Compute Engine 自動調度資源功能用於 Google Kubernetes Engine 擁有的 MIG。針對 Google Kubernetes Engine 群組,請改為使用叢集自動調度資源功能。如果不確定 MIG 是否屬於 GKE 叢集,請在 MIG 名稱中尋找
gke
前置字串,例如:gke-test-1-3-default-pool-eadji9ah
。
自動修復期間會發生什麼情況
自動調度資源的運作方式與自動修復無關。如果您為群組設定了自動修復功能,且執行個體未通過健康狀態檢查,則 MIG 會嘗試重新建立執行個體。當 MIG 重新建立執行個體時,群組中執行的執行個體數量可能會低於為群組指定的執行個體數量下限 (autoscalingPolicy.minNumReplicas
)。
定價
設定自動調度資源政策不會產生額外費用。自動調度器會動態新增或刪除 VM 執行個體,因此您只需支付 MIG 使用的資源費用。您可以透過自動調度資源政策設定執行個體數量下限和上限,控管資源費用。 如需 Compute Engine 定價資訊,請參閱「定價」。
後續步驟
- 瞭解區域性 MIG 的自動調度資源機制。
- 如果您目前沒有 MIG,請參閱如何建立代管執行個體群組。
建立自動配置器,根據下列項目調整規模:
管理自動配置器,例如取得相關資訊、設定縮減控制項,或暫時限制自動配置器。