自動調度資源功能會自動新增 VM (向外擴充) 或移除 VM (向內擴充) 代管執行個體群組 (MIG)。本文說明自動調整器如何判斷何時要調整 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
:虛擬機器執行個體數量或百分比)。工作負載在指定後續時間範圍內可承受的執行個體損失數量 (以群組尖峰大小為準)。使用這個參數限制群組的縮減幅度,確保在更多執行個體開始提供服務前,您仍能處理可能的負載尖峰。允許的縮減幅度越小,縮減速度就越慢。 - 後方時間範圍 (
timeWindowSec
:秒)。這段時間內,負載尖峰很可能接續在暫時下降之後,因此您不希望群組大小縮減超過允許的最大縮減幅度。使用這個參數定義時間範圍,自動調度程式會在該範圍內尋找足以處理歷來負載的尖峰大小。自動配置器不會將大小縮減至低於允許的最大縮減量,而允許的最大縮減量是從後方時間範圍內觀察到的尖峰大小扣除。如果後續時間範圍較長,自動調度器會考量更多歷來尖峰負載,因此縮減資源時會更保守且穩定。
設定縮減控制項後,自動配置器會將縮減作業限制在後續時間範圍內觀察到的尖峰大小,並允許縮減至該大小。自動調整程式會執行下列步驟:
- 持續監控在後續時間範圍內觀察到的歷史尖峰大小。
- 使用允許的最大縮減量,計算受限的縮減大小 (尖峰大小:
maxScaledInReplicas
) - 將群組的建議大小設為受限的縮減大小。舉例來說,如果自動調度器會將執行個體群組大小調整為 20 個 VM,但縮減規模限制只允許縮減為 40 個 VM,則建議大小會設為 40 個 VM。
有了縮減控制項,自動配置器會持續監控設定的後方時間範圍內,執行個體群組的尖峰大小,找出足以處理歷來負載的大小。自動調度器不會縮減超過從觀察到的尖峰大小測得的允許縮減上限:
舉例來說,在上方的圖表中,縮減控制項設定為在 30 分鐘的後方時間範圍內,最多可減少 20 個 VM:
- 負載降低時,自動調度器會移除 20 部 VM,這是在縮減控制項中設定的最大允許縮減量。
- 隨著負載起伏,自動配置器會持續監控過去 30 分鐘的追蹤時間範圍,找出足以處理歷來負載的尖峰大小。這個尖峰大小會做為縮減控制項的基準,以限制縮減率。如果過去 30 分鐘的尖峰大小為 70 部 VM,且允許縮減的最大 VM 數設為 20 部,自動配置器可縮減至 50 部 VM。如果目前的 VM 數量為 65 個,自動調整器只能移除 15 個 VM。
- 負載減少時,自動調度器會繼續移除 VM 執行個體,但會將速率限制為最多 20 個 VM (以過去 30 分鐘內測得的尖峰執行個體群組大小為準)。
群組大小最多可一次縮減,因此您應設定允許縮減的最大幅度,確保應用程式能承受一次失去這麼多執行個體。使用允許的最大縮減量參數,指出應用程式可容許的服務容量縮減量。
限制自動調度資源可移除的 VM 執行個體數量,並增加觀察到的後方時間視窗,應可改善負載尖峰和初始化時間較長的應用程式可用性。具體來說,執行個體群組大小不會因負載大幅下降而突然減少,而是隨著時間逐漸減少。如果縮減規模後不久負載就暴增,剩餘的 VM 數量仍應能在容許範圍內吸收負載。此外,您必須啟動較少的 VM,才能充分因應尖峰流量。
您可以為區域和地區代管執行個體群組的自動調度資源功能設定縮減控制項。這兩種情況的設定相同。縮放控制項適用於任何群組大小。
向內縮減控制項與自動調度器穩定性
設定縮減控制項並不代表要關閉自動調度程式的內建穩定機制。自動配置器一律會將執行個體群組大小維持在可處理穩定期內觀察到的尖峰負載的程度。縮減控制項提供額外機制,可控制執行個體群組的大小調整速度。
內建自動調度器: 穩定期 |
向內縮減控制項: 尾隨時間範圍 |
|
---|---|---|
可設定嗎? | 否,無法設定 | 是,可設定 |
監控的內容 | 監控前 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 (作業數)
- 網路位元組數
- 網路封包數
每個圖表標題旁邊的工具提示,都會提供所顯示指標的額外脈絡詳細資料。
頁面底部會顯示「記錄」面板,其中列出代管執行個體群組的事件記錄。如要查看記錄,請按一下展開箭頭。
所有圖表和記錄都綁定單一時間範圍,您可以透過時間範圍選取器自訂時間範圍。在任何圖表上按住並拖曳,即可放大特定事件,並分析所選時間範圍內的圖表和記錄。
監控預測式自動調度資源功能
Compute Engine 提供圖表,可監控自動調度器預測。如要查看這張圖表,請按一下第一張圖表中的「群組大小」標題,然後選取「預測自動調度資源」。
如果已啟用自動調度資源功能,您可以查看自動調度器預測結果如何決定執行個體群組的大小。如果未啟用自動調度資源功能,您仍可查看自動調度資源預測,並根據預測結果決定群組大小。
請參閱下列資訊,瞭解這張圖表。
- 藍線表示位於代管執行個體群組中的執行個體數量。
- 綠線顯示自動調度器預測的執行個體數量。
- 如果綠線的的位置低於藍線,表示具有大量的可用容量,且 VM 執行個體的使用量可能過低。
- 如果綠線的的位置高於藍線,表示剩餘的容量極少,甚至無可用容量,請新增更多執行個體至執行個體群組。
- 水平紅虛線代表執行個體群組允許的執行個體數量下限和上限。
檢視狀態訊息
若自動配置器在執行資源調度時遇到問題,會傳回警告或錯誤訊息。您可使用以下兩種方式之一來查看這些狀態訊息。
在「Instance groups」(執行個體群組) 頁面上查看狀態訊息
可直接在Google Cloud console的「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 指標執行資源調度的說明文件。
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.
執行個體群組處於達到負載平衡的狀態,但沒有查詢流入該群組。此服務可能正處於閒置期,所以不須擔憂。不過,這項訊息也可能是由於錯誤設定所造成。舉例來說,自動調度資源的執行個體群組可能是多個負載平衡器的目標,但設定不受支援。如需完整的規範清單,請參閱負載平衡說明文件中的限制與規範。