自動調度資源功能會自動為代管執行個體群組 (MIG) 新增或移除 VM (擴充或縮減)。本文件說明自動配置器如何決定何時要調度 MIG。
自動配置器如何計算建議大小,以及對目標大小造成的影響
為 MIG 設定自動配置器後,自動配置器會持續監控群組,並將群組的建議大小設為在穩定期內,為處理尖峰負載所需的虛擬機器 (VM) 執行個體數量。
建議的大小會受到您在自動調度資源政策中設定的執行個體數量下限和上限限制。
如果自動調度資源政策包含縮減控制項,則建議的大小會受到縮減控制項的進一步限制。
如果您啟用預測式自動調度資源功能,自動配置器會使用過去的 CPU 使用率模式來預測未來的負載,並根據預測結果設定群組的建議大小。
MIG 對自動配置器建議大小的回應,取決於您如何設定自動配置器的 mode
:
ON
。MIG 會將目標大小設為建議大小,然後 Compute Engine 會自動擴展 MIG,以符合目標大小。ONLY_SCALE_OUT
。MIG 的目標大小只能隨著建議大小的增加而增加。OFF
。目標大小不會受到建議大小的影響。不過,系統仍會計算建議大小。
如果刪除自動配置器設定,系統就不會計算建議的大小。
目標與實際使用率指標之間的差距
使用自動調度資源政策搭配以指標為依據的信號時,您可能會發現,執行個體群組越小,執行個體群組的實際使用率與目標使用率之間的差距似乎就越大。這是因為自動配置器在解讀使用率資料,並判斷所要新增或移除的執行個體數量時,都會採取保守的做法,而將未滿一個執行個體的部分進位到下一個執行個體數,或捨去到上一個執行個體數。這樣可避免自動配置器新增的資源量不足,或是移除過多的資源。
例如,若您將使用率目標設為 0.7,而應用程式超過了使用率目標,則自動配置器可能會判斷若新增 1.5 個虛擬機器 (VM) 執行個體,即可將使用率降低至接近 0.7。由於無法新增 1.5 個 VM 執行個體,因此自動配置器會將要新增的執行個體數量進位,而新增兩個執行個體。如此可能會使平均 CPU 使用率降到低於 0.7,但可確保有充足的資源可支撐應用程式。
同樣地,若自動配置器判斷移除 1.5 個 VM 執行個體會讓使用率增加至接近 0.7,就僅會移除一個虛擬機器。
在具有較多 VM 執行個體的大型群組中,使用率是由大量的執行個體分攤,因此新增或移除 VM 執行個體較不會造成實際使用率和目標使用率之間有如此大的差距。
如果您使用以時間表為準的自動調度資源功能搭配其他自動調度資源信號,則有效時間表可能需要比使用率需求更多的 VM。在這些情況下,自動調度資源排程會決定建議的執行個體群組大小,因此實際使用率會低於目標使用率。
資源調度延遲
設定自動調度資源時,您會指定初始化期間,這會反映 VM 初始化所需的時間長度。只有在未初始化的執行個體平均使用率高於目標使用率時,自動配置器才會建議擴展。
如果您設定的初始化期間值遠遠超過執行個體初始化所需的時間,自動配置器可能會忽略合法的使用率資料,並低估群組所需的大小。
資源調度延遲
為了擴大規模,自動配置器會根據最近 10 分鐘的尖峰負載,或您設定的初始化期間 (以較長者為準),計算群組的建議目標大小。這段時間稱為穩定期。
觀察穩定期間的用量可協助自動配置器進行以下事項:
- 確保從執行個體群組收集到用量資訊是穩定的。
- 避免自動配置器不斷過度新增或移除執行個體。
- 判斷是否只需使用較小規模的群組即可支援穩定化期間的尖峰負載,並安全地移除執行個體。
- 如果應用程式在新的 VM 上初始化所需的時間超過 10 分鐘,群組會將初始化期間用作穩定期間。這可確保自動配置器決定刪除 VM 時,會考量恢復服務容量所需的時間。
穩定期看似是縮減資源時發生延遲,但實際上是自動調度資源的內建功能。如果代管執行個體群組中新增了執行個體,穩定期也能確保執行個體在可刪除前,完成初始化期間或至少執行 10 分鐘。
判斷是否要縮減群組資源時,系統會忽略新執行個體的初始化期間。
連線排除導致延遲
如果群組屬於後端服務的一部分,且該服務已啟用連線排除,在連線排除持續時間過後,最長可能需要等待 60 秒才能移除或刪除 VM 執行個體。
向內縮減控制項
設定自動配置器縮放控制項時,您可以控制縮放的速度。自動配置器的調度速度絕不會超過您設定的速度:
- 負載減少時,自動配置器會將群組大小維持在 (穩定期) 中觀察到的峰值負載所需的等級。無論是否有縮放控制項,這項功能的運作方式都相同。
- 沒有縮減控制項的自動配置器只會保留足夠的執行個體,以便處理最近觀察到的負載。在穩定期過後,自動調整器會在單一步驟中移除所有不必要的執行個體。負載突然下降時,可能會導致執行個體群組大小大幅減少。
- 具有縮減控制項的自動調度器會限制在設定時間內可移除的 VM 執行個體數量 (此處為 20 分鐘內的 10 個 VM)。這會降低執行個體減少率。
- 當負載出現新尖峰時,自動配置器會新增執行個體來處理負載。不過,由於初始化時間過長,新 VM 尚未準備好提供負載。透過內縮控制項,我們保留了先前的容量,讓現有 VM 可處理尖峰需求。
您可以透過在後續時間窗格內設定自動配置器的最大允許縮減數量,控制縮減速率,具體做法如下:
- 允許的最大減少數量 (
maxScaledInReplicas
:VM 執行個體的數量或百分比)。在指定的後續時間範圍內,工作負載可容許遺失的執行個體數量 (從群組的最高容量計算)。使用這個參數限制群組可調整的程度,以便在更多執行個體開始提供服務前,仍能提供可能的負載尖峰服務。允許的最大縮小比例越低,縮放速度就越慢。 - 尾隨時間視窗 (
timeWindowSec
:秒)。負載尖峰可能會在負載暫時下降的期間發生,而您不希望群組大小超出允許的最大縮減上限。使用這個參數定義時間範圍,自動調度器會在這個範圍內尋找足以負荷歷史負載的峰值大小。自動配置器不會將大小調整為低於從尾隨時間視窗觀察到的尖峰大小減去最大允許縮減幅度的值。延後時間視窗越長,自動配置器會考量更多歷史最高負載,因此可進行更保守且穩定的資源調度。
設定縮減控制項時,自動配置器會將縮減作業限制為從後續時間視窗中觀察到的峰值大小,以允許的最大縮減量為上限。調整器會執行以下步驟:
- 持續監控在後續時間範圍內觀察到的歷史峰值大小。
- 使用允許的最大縮減量來計算受限的縮小大小 (峰值大小:
maxScaledInReplicas
) - 將群組的建議大小設為受限的縮放大小。舉例來說,如果自動配置器將執行個體群組的大小調整為 20 個 VM,但縮減限制只允許縮減至 40 個 VM,則建議的大小會設為 40 個 VM。
有了縮減控制項,自動配置器會在設定的後續時間視窗內,持續監控執行個體群組的最高峰值大小,以便找出足以處理歷來負載的大小。自動配置器不會超出從觀察到的峰值大小計算出的最大允許縮減量:
舉例來說,在上圖中,縮放控制項已設為在 30 分鐘的延後時間視窗中,最多允許減少 20 個 VM:
- 負載減少時,自動配置器會移除 20 個 VM,這是在縮減控制項中設定的最大允許減少數量。
- 隨著負載上升和下降,自動配置器會持續監控過去 30 分鐘的延遲時間視窗,以便提供足以處理歷史負載的尖峰大小。這個峰值大小會用於限制縮放率的縮放控制項。如果在過去 30 分鐘內,尖峰大小為 70 個 VM,且允許的最大減少數量設為 20 個 VM,則自動配置器可縮減至 50 個 VM。如果目前的大小為 65 個 VM,自動配置器只能移除 15 個 VM。
- 隨著負載減少,自動配置器會繼續移除 VM 執行個體,但會將移除率限制在過去 30 分鐘內所測得的尖峰執行個體群組大小的 20 個 VM 上限。
群組大小的最大允許減少數量可能會一次減少,因此您應設定最大允許減少數量,讓應用程式能夠一次減少這麼多個執行個體。使用允許的最大減少參數,指出應用程式可容許的服務容量減少幅度。
限制自動調度資源可移除的 VM 執行個體數量,並增加觀察的後續時間視窗,可改善負載激增和初始化時間過長的應用程式可用性。具體來說,執行個體群組大小不會因負載大幅下降而突然下降,而是會隨著時間的推移逐漸減少。如果在進行縮放後不久就出現負載暴增,剩餘的 VM 數量仍應可在容許範圍內吸收這波暴增。此外,您必須啟動較少的 VM,才能充分處理尖峰流量。
您可以設定縮減控制項,針對區域和區域性 MIG 進行自動調度資源。兩種情況的設定都相同。縮放控制項適用於任何群組大小。
向內縮減控制項與自動配置器穩定性
設定縮減控制項並不代表要關閉自動調度器內建的穩定機制。自動配置器一律會維持執行個體群組大小,以便在穩定期期間提供可滿足尖峰負載的等級。縮減控制項提供額外機制,可用來控制調整執行個體群組大小的速度。
內建自動配置器: 穩定期 |
向內縮減控制項: 尾隨時間範圍 |
|
---|---|---|
是否可設定? | 否,不可設定 | 是,可設定 |
監控的內容 | 監控過去 10 分鐘或初始化期間的峰值負載 (以較長者為準)。 | 監控執行個體群組在前一個期間的尖峰大小,時間範圍由尾隨時間視窗設定 |
這有什麼幫助? | 確保執行個體群組大小足以支援最近 10 分鐘或初始化期間 (以較長者為準) 觀察到的尖峰負載。 | 確保在指定時間範圍內處理負載尖峰時,執行個體群組大小不會因 VM 執行個體過多而縮減,以便工作負載能予以容許。 |
使用自動配置器模式的向內縮減控制項
當 MIG 未自動調度,而您想要啟用自動調度資源時,有兩種類似但略有差異的情況。這取決於您是第一次設定自動調度資源,還是已設定自動調度資源,但暫時限制或關閉。
首次設定自動配置器
如果您有非自動調度資源的 MIG,並從頭設定自動調度資源,自動配置器會使用目前的 MIG 大小做為起點。在縮減資源前,自動配置器會使用穩定期,然後使用縮減控制項來限制縮減率:
變更自動配置器模式
您可以使用自動調度資源模式,暫時關閉或限制自動調度資源活動。即使關閉或限制自動配置器,系統也會保留自動配置器的設定,且會在自動配置器關閉或受限時,繼續執行背景計算。在關閉或受限模式下,自動配置器會在背景計算時考量縮放控制項。再次開啟自動調度資源或解除限制時,所有自動調度資源活動都會使用最新的計算值繼續進行:
- 開啟的自動配置器會照常運作 (在本例中,會使用縮減控制項)。
- 關閉自動配置器後,系統仍會根據負載計算建議的執行個體群組大小。自動配置器的計算仍會考量縮放控制項。不過,自動配置器關閉時不會套用大小計算作業,執行個體群組大小會維持不變,直到自動配置器再次開啟為止。
- 再次開啟自動配置器時,系統會立即套用先前計算的大小。這樣一來,系統就能更快縮放至正確大小。重新啟用自動配置器可能會導致資源調度突然增加 (此處從 80 個 VM 執行個體增加到 40 個)。這是安全的做法,因為背景計算作業已考量縮放控制項。
預測式自動調度資源
如要瞭解預測式自動調度資源功能,包括運作方式,請參閱「根據預測結果調度資源」。
準備停止執行個體
自動配置器縮減資源時,會判定要刪除的 VM 執行個體數量。自動配置器會根據多項因素,為要刪除的 VM 執行個體排定優先順序,其中包括:
- 因任何原因而未執行的 VM。
- 正在進行或已排定進行中斷性變更的 VM,例如重新整理、重新啟動或取代。
- 尚未更新為預期的執行個體範本版本的 VM。
- 自動調度資源信號最低的 VM。舉例來說,如果您將 MIG 設為根據 CPU 使用率調度資源,且群組需要調降,則自動配置器會嘗試移除 CPU 使用率最低的 VM。
停止執行個體前,請先確認這些執行個體是否需執行特定工作,例如關閉所有現有的連線、安全地關閉所有應用程式或應用程式伺服器、上傳記錄檔等等。您可以使用關閉指令碼,指示執行個體執行這些工作。系統會在發出停止要求直到實際停止執行個體前的短暫期間內,盡可能執行關閉指令碼。在這段期間,Compute Engine 會嘗試執行關閉指令碼,以執行您在指令碼中指定的所有工作。
若您是對代管執行個體群組使用負載平衡,這種做法尤其實用。若執行個體健康狀態不良,則負載平衡器可能需要花點時間才會辨識出執行個體處於不良健康狀態,因此負載平衡器會持續向執行個體傳送新要求。而透過關閉指令碼,執行個體就能在關閉時回報其處於不良的健康狀態,如此一來負載平衡器即可停止傳送流量至執行個體。如要進一步瞭解負載平衡健康狀態檢查,請參閱健康狀態檢查總覽。
如要進一步瞭解關閉指令碼,請參閱關閉指令碼的相關說明。
如要進一步瞭解執行個體的關閉作業,請參閱說明文件中關於停止或刪除執行個體的說明。
監控自動調度資源圖表和記錄
Compute Engine 提供多種圖表和記錄,方便您隨時監控代管執行個體群組的行為。
您可以在 Google Cloud 控制台中存取圖表和記錄。
- 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
- 按一下要查看的代管執行個體群組名稱。
- 在代管執行個體群組頁面上,選取「監控」分頁標籤。
監控圖表會顯示下列指標的變化:
- 群組大小
- 自動配置器使用率
- CPU 使用率
- 磁碟 I/O (位元組數)
- 磁碟 I/O (作業數)
- 網路位元組數
- 網路封包數
每個圖表標題旁的工具提示會提供顯示指標的額外背景詳細資料。
頁面底部會顯示「Logs」面板,您可以在其中查看代管執行個體群組的事件記錄清單。如要查看記錄,請按一下展開箭頭。
所有圖表和記錄都會綁定至單一時間範圍,您可以使用時間範圍選擇器自訂這項資訊。只要按住並拖曳任何圖表,即可放大特定事件,並分析所選時間範圍內的圖表和記錄。
監控預測式自動調度資源功能
Compute Engine 提供圖表,可用來監控自動配置器的預測結果。如要查看這張圖表,請按一下第一張圖表中的「群組大小」標題,然後選取「預測型自動調度資源」。
如果已啟用自動調度資源功能,您可以查看自動配置器預測如何決定執行個體群組的大小。即使未啟用自動調度資源功能,您仍可查看自動配置器預測結果,並據此決定群組大小。
請參閱下列資訊,瞭解這張圖表。
- 藍線表示位於代管執行個體群組中的執行個體數量。
- 綠色線條代表自動調整器預測的執行個體數量。
- 如果綠線的的位置低於藍線,表示具有大量的可用容量,且 VM 執行個體的使用量可能過低。
- 如果綠線的的位置高於藍線,表示剩餘的容量極少,甚至無可用容量,請新增更多執行個體至執行個體群組。
- 紅色虛線橫向線代表執行個體群組允許的執行個體數量下限和上限。
檢視狀態訊息
若自動配置器在執行資源調度時遇到問題,會傳回警告或錯誤訊息。您可使用以下兩種方式之一來查看這些狀態訊息。
在「Instance groups」(執行個體群組) 頁面上查看狀態訊息
您可以直接在 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面上查看狀態訊息。
- 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
請尋找具有警告圖示的執行個體群組。
例如:
將滑鼠游標懸停在狀態圖示上,即可查看狀態訊息的詳細資料。
在「Instance group」(執行個體群組) 總覽頁面上查看狀態訊息
直接前往特定執行個體群組的總覽頁面,即可查看相關狀態訊息。
- 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
- 按一下要查看其狀態訊息的執行個體群組。
- 在執行個體群組頁面上,查看執行個體群組名稱下方的狀態訊息。
常見的傳回狀態訊息
若自動配置器在執行資源調度時遇到問題,會傳回警告或錯誤訊息。以下是一些常見的傳回訊息及其含意。
All instances in the instance group are unhealthy (not in RUNNING state). If this is an error, check the instances.
- 這個執行個體群組中的所有執行個體皆處於非
RUNNING
狀態。如果是刻意這樣做,您可忽略此訊息。若並非刻意,請對執行個體群組進行疑難排解。 The number of instances has reached the maxNumReplicas. The autoscaler cannot add more instances.
- 您在建立自動配置器時,指定了執行個體群組所能擁有的執行個體數量上限。自動配置器正在嘗試將執行個體群組向外擴充,以符合需求,但已達到
maxNumReplicas
。如要瞭解如何將maxNumReplicas
更新為更大的數字,請參閱更新自動配置器。 The monitoring metric that was specified does not exist or does not have the required labels. Check the metric.
您目前是使用 Cloud Monitoring 指標來自動調度資源,但您提供的指標不存在、缺少必要的標籤,或是 Compute Engine 服務代理程式無法存取。
- 端看您使用的是標準指標還是自訂指標,所需的標籤也會不同。詳情請參閱根據 Monitoring 指標執行資源調度的說明文件。
- 確認 Compute Engine 服務代理人是否具備
compute.serviceAgent
IAM 角色。如要新增此功能,請參閱「自動配置器的必要條件」。
- 確認 Compute Engine 服務代理人是否具備
Quota for some resources is exceeded. Increase the quota or delete resources to free up more quota.
Autoscaling does not work with an HTTP/S load balancer configured for maxRate.
執行個體群組正以
maxRate
設定在執行負載平衡作業,但自動配置器不支援這種模式。請變更設定或停用自動調度資源功能。如要進一步瞭解maxRate
,請參閱負載平衡說明文件中的限制與規範相關說明。The autoscaler is configured to scale based on a load balancing signal but the instance group has not received any queries from the load balancer. Check that the load balancing configuration is working.
執行個體群組處於達到負載平衡的狀態,但沒有查詢流入該群組。此服務可能正處於閒置期,所以不須擔憂。不過,這項訊息也可能是由於錯誤設定所造成。舉例來說,自動調度資源的執行個體群組可能是多個負載平衡器的目標,但設定不受支援。如需完整的規範清單,請參閱負載平衡說明文件中的限制與規範。