瞭解自動調度資源決策

自動調度資源功能會自動在代管執行個體群組 (MIG) 中新增 VM (水平擴展) 或移除 VM (水平縮減)。本文說明自動配置器如何判斷何時要調度 MIG 的資源。

為 MIG 設定自動調度器時,自動調度器會持續監控群組,並計算建議大小,也就是服務所觀察到的負載所需的 VM 數量。然後,MIG 會根據這項建議設定群組的目標大小

自動配置器會根據下列因素不斷重新計算建議大小:

  • 根據預設,自動調度器會將建議大小設為可處理穩定期內觀察到的尖峰負載。
  • 如果啟用預測式自動調度資源,自動配置器會根據過去的 CPU 使用率預測未來的負載,並根據預測結果設定建議大小。

您可以前往 Google Cloud 控制台查看「群組大小」圖表,瞭解建議的大小。如果您使用 Google Cloud CLI 或 Compute Engine API,請取得自動調度器資訊,並在輸出內容中尋找 recommendedSize 欄位。

最終建議大小須符合下列限制:

  • 執行個體數量下限和上限:大小必須在自動調度資源政策設定的界限內。
  • 縮減控制項:如果您已在自動調度資源政策中設定縮減控制項,自動配置器會限制建議大小一次可減少的幅度,避免容量突然下降。

對目標大小的影響

MIG 對建議大小的回應取決於自動配置器的mode

  • ON:MIG 會將目標大小設為建議大小,並據此調整群組大小。
  • ONLY_SCALE_OUT:只有在建議大小增加時,目標大小才會增加。即使建議大小減少,目標大小也不會減少。
  • OFF:目標大小維持不變。自動配置器仍會在背景計算建議大小,但不會套用至目標大小。

刪除自動調度器設定後,自動調度器就會停止計算建議大小。

目標與實際使用率指標之間的差距

使用以指標為準的信號自動調度資源政策時,您可能會發現執行個體群組越小,執行個體群組的實際使用率與目標使用率之間的差距似乎就越大。這是因為自動配置器在解讀使用率資料,並判斷所要新增或移除的執行個體數量時,都會採取保守的做法,而將未滿一個執行個體的部分進位到下一個執行個體數,或捨去到上一個執行個體數。這麼做可避免自動配置器新增的資源數量不足,或移除過多資源。

舉例來說,如果將使用率目標設為 0.7,而應用程式超過了使用率目標,自動配置器可能會判斷若新增 1.5 個虛擬機器 (VM) 執行個體,即可將使用率降低至接近 0.7。由於無法新增 1.5 個 VM 執行個體,因此自動配置器會將要新增的執行個體數量進位,而新增兩個執行個體。如此可能會使平均 CPU 使用率降到低於 0.7,但可確保資源充足可支援應用程式。

同樣地,若自動配置器判斷移除 1.5 個 VM 執行個體會讓使用率增加至接近 0.7,就僅會移除一個虛擬機器。

在具有較多 VM 執行個體的大型群組中,使用率是由大量的執行個體分攤,因此新增或移除 VM 執行個體較不會造成實際使用率和目標使用率之間有如此大的差距。

如果您搭配使用排程型自動調度資源與其他自動調度資源信號,有效排程可能需要比使用率需求更多的 VM。在這些情況下,實際使用率會低於目標使用率,因為自動調度資源時間表會決定執行個體群組的建議大小。

擴充資源時的延遲

設定自動調度資源時,您會指定初始化期間,反映 VM 初始化所需的時間長度。只有在非初始化執行個體的平均使用率大於目標使用率時,自動配置器才會建議水平擴展。

如果您設定的初始化期間值遠長於執行個體初始化所需的時間,自動調度資源可能會忽略合理的使用率資料,並低估群組所需的大小。

擴充資源時的延遲

為了縮減規模,自動配置器會根據穩定期的尖峰負載來計算群組的建議目標大小。

觀察穩定期內的使用狀況,可協助自動配置器進行以下事項:

  • 確保從執行個體群組收集到用量資訊是穩定的。
  • 避免自動配置器不斷過度新增或移除執行個體。
  • 判斷是否只需使用較小規模的群組即可支援穩定期內的尖峰負載,並安全地移除執行個體。

穩定期看似是擴充資源時發生延遲,但實際上是自動調度資源的內建功能。此外,如果代管執行個體群組中新增了執行個體,穩定期可確保執行個體在可刪除前,會執行穩定期長度。

判斷是否要水平縮減群組資源時,系統會忽略新執行個體的初始化期

連線排除導致延遲

如果群組屬於後端服務的一部分,且該服務已啟用連線排除,在連線排除持續時間過後,最長可能需要等待 60 秒才能移除或刪除 VM 執行個體。

向內縮減控制項

設定自動配置器縮減控制項時,您可以控制縮減速度。自動配置器縮減速度絕不會超過您設定的速率:

自動調度器 (有和沒有向內縮減控制項)。

  1. 負載下降時,自動調度器會將群組大小維持在 (穩定期) 觀察到的尖峰負載所需的水準。無論有無縮減控制項,這項機制都適用。
  2. 如果自動調度器沒有縮減控制項,只會保留處理近期觀察到的負載所需的執行個體數量。穩定期過後,自動調整程式會一次移除所有不需要的執行個體。如果負載突然下降,執行個體群組大小可能會大幅縮減。
  3. 自動調度器搭配縮減控制項,可限制在設定的時間範圍內可移除的 VM 執行個體數量 (這裡是在 20 分鐘內移除 10 個 VM)。這會減緩執行個體減少的速度。
  4. 負載突然增加時,自動調度器會新增執行個體來處理負載。不過,由於初始化時間較長,新的 VM 無法立即處理負載。有了縮減控制項,系統會保留先前的容量,讓現有 VM 處理負載尖峰。

您可以設定自動配置器的允許縮減上限,藉此控管後續時間範圍內的縮減率,具體做法如下:

  • 允許的縮減幅度上限 (maxScaledInReplicas:虛擬機器執行個體數量或百分比)。工作負載在指定後續時間範圍內可承受的執行個體損失數量 (以群組尖峰大小為準)。使用這個參數限制群組的縮減幅度,確保在更多執行個體開始提供服務前,您仍能處理可能的負載尖峰。允許的最大縮減幅度越低,水平縮減速度就越慢。
  • 後續時間範圍 (timeWindowSec:秒)。在這段時間內,負載尖峰很可能接在暫時下降之後,且您不希望群組大小縮減超過允許的最大縮減幅度。請使用這個參數定義時間範圍,自動調度程式會在這段時間內尋找足以處理歷來負載的尖峰大小。自動調度程式不會將大小縮減至低於後續時間範圍內觀察到的尖峰大小減去允許的最大縮減幅度。後續時間範圍越長,自動調度程式會考量更多歷來尖峰負載,因此縮減幅度會越保守且穩定。

設定縮減控制項後,自動配置器會將縮減作業限制在後續時間範圍內觀察到的尖峰大小,並允許縮減至該大小。自動調整程式會執行下列步驟:

  1. 持續監控在後續時間範圍內觀察到的歷史尖峰大小。
  2. 使用允許的最大縮減量,計算受限的縮減大小 (尖峰大小:maxScaledInReplicas)
  3. 將群組的建議大小設為受限的縮減大小。舉例來說,如果自動調度器會將執行個體群組大小調整為 20 個 VM,但縮減限制只允許縮減至 40 個 VM,則建議大小會設為 40 個 VM。

有了縮減控制項,自動配置器會持續監控設定的後方時間範圍內,執行個體群組的尖峰大小,找出足以處理歷來負載的大小。自動調度器不會水平縮減超過從觀察到的尖峰大小測得的允許縮減上限:

自動調度器搭配向內縮減控制項。

舉例來說,在上圖中,縮減控制項設定為在 30 分鐘的後方時間視窗中,最多可減少 20 部 VM:

  1. 負載減少時,自動調度資源功能會移除 20 部 VM,這是在縮減控制項中設定的允許縮減上限。
  2. 隨著負載起伏,自動配置器會持續監控過去 30 分鐘的追蹤時間範圍,找出足以處理歷來負載的尖峰大小。這個尖峰大小會做為縮減控制項的基準,以限制縮減率。如果過去 30 分鐘的尖峰大小為 70 部 VM,且允許的最大縮減量設為 20 部 VM,自動配置器可水平縮減至 50 部 VM。如果目前的 VM 數量為 65 個,自動調整大小工具只能移除 15 個 VM。
  3. 負載減少時,自動調度器會繼續移除 VM 執行個體,但會將速率限制為最多 20 個 VM,這是根據過去 30 分鐘內測得的尖峰執行個體群組大小而定。

群組大小最多可一次減少這麼多,因此您應設定允許的最大縮減量,確保應用程式能承受一次失去這麼多執行個體。使用允許的最大縮減量參數,指出應用程式可容忍的服務容量縮減量。

限制自動調度資源可移除的 VM 執行個體數量,並增加觀察到的後方時間視窗,應可提高負載尖峰和初始化時間較長的應用程式可用性。具體來說,執行個體群組大小不會因負載大幅下降而驟減,而是會隨著時間逐漸減少。如果縮減後不久負載就暴增,剩餘的 VM 數量仍應能在容許範圍內吸收暴增的負載。此外,您必須啟動較少的 VM,才能充分因應尖峰流量。

您可以為區域和地區代管執行個體群組的自動調度資源功能設定縮減控制項。這兩種情況的設定方式相同。縮放控制項適用於任何群組大小。

向內縮減控制項與自動調度器穩定性

設定縮減控制項並不代表要關閉自動調度資源功能的穩定機制。自動調度資源功能一律會將執行個體群組大小維持在穩定期間觀察到的尖峰負載所需水準。縮減控制項則提供額外機制,可控制執行個體群組大小的調整速度。

穩定期 向內縮減控制項:
尾隨時間範圍
可設定嗎? 是,可設定 是,可設定
監控的內容 監控前一個時間範圍的尖峰負載,該時間範圍由穩定期設定。 監控前一段時間內執行個體群組的尖峰大小,時間範圍由後方時間視窗設定。
這有什麼幫助? 確保執行個體群組大小足以處理穩定期內觀測到的尖峰負載。 確保在指定時間範圍內處理負載尖峰時,執行個體群組縮減的 VM 執行個體數量不會超過工作負載可容許的範圍。

自動調度模式的縮減控制選項

如果 MIG 未自動調度資源,且您想開啟自動調度資源功能,則有兩種類似但略有不同的情況。這取決於您是否首次設定自動調度資源,或是已設定自動調度資源,但暫時受到限制或關閉

首次設定自動調度資源功能

如果您有非自動調度資源的 MIG,並從頭設定自動調度資源,自動調度器會將目前的 MIG 大小做為起點。在縮減規模之前,自動調度器會先使用穩定期,然後使用縮減規模控制項來限制縮減規模率:

首次設定自動配置器。

變更自動調度資源模式

使用自動調度資源模式,您可以暫時關閉或限制自動調度資源活動。自動配置器的設定會保留,且自動配置器在關閉或受限時,會繼續執行背景計算。自動配置器在關閉或受限模式下,會將縮減控制項納入背景計算。當您再次開啟自動調度資源或解除限制時,所有自動調度資源活動都會使用最新的計算結果繼續執行:

繼續使用自動調度器,包括向內縮減控制項。

  1. 自動調度器開啟時,會照常運作 (在本例中,會使用向內縮減控制項)。
  2. 自動調度資源功能關閉時,系統仍會根據負載計算建議的執行個體群組大小,且計算時仍會考量縮減控制項。不過,自動調度資源功能關閉時,系統不會套用大小計算結果,執行個體群組大小會維持不變,直到自動調度資源功能再次開啟為止。
  3. 再次開啟自動配置器時,系統會立即套用先前計算的大小。這樣就能更快縮放至正確大小。重新啟用自動配置器可能會導致水平縮減 (這裡從 80 個 VM 執行個體縮減至 40 個)。這是安全的做法,因為背景計算已將縮放控制項納入考量。

將 MIG 自動調度至零個執行個體

自動配置器可根據 minNumReplicas 欄位、自動調度資源信號和您在自動調度政策中設定的排程,將 MIG 水平縮減至零個執行個體。

自動配置器將 MIG 水平縮減為零的條件

所有下列條件都符合時,自動調度器可將 MIG 水平縮減至零個執行個體:

  • 執行個體數量下限 (autoscalingPolicy.minNumReplicas) 設為 0

  • 沒有需要超過零個執行個體的有效排程。

  • 自動調度資源政策不得使用任何依附於執行中執行個體的指標,如果政策包含這些指標,自動配置器就必須取得群組中至少一個執行個體的信號,且群組不會水平縮減至零個執行個體。

    • 平均 CPU 使用率
    • HTTP 負載平衡服務規模
    • 從 MIG 中的每個執行個體收集的 Cloud Monitoring 指標

即使自動調度資源政策包含從 MIG 中每個執行個體收集的指標,您也可以手動將 MIG 大小調整為零個執行個體。如要手動調整 MIG 大小,請參閱「手動設定 MIG 大小」。

自動配置器從零水平擴展 MIG 的條件

當 MIG 的目標大小為零時 (由自動配置器設定或手動調整大小),只有在資源調度信號或有效排程需要超過零個執行個體時,自動配置器才能水平擴展 MIG。

如果政策中唯一的資源調度信號是根據從每個執行個體收集的指標,則 MIG 無法從零開始水平擴展,因為群組中沒有執行個體可產生指標。在這種情況下,如要增加 MIG 的目標大小,您必須手動設定 MIG 的大小

預測式自動調度資源

如要瞭解預測式自動調度資源功能,包括運作方式,請參閱「根據預測結果調度資源」一文。

自動調度器準備停止執行個體

自動調度器縮減 MIG 時,MIG 會決定要刪除哪些 VM 執行個體。MIG 會根據多項因素,優先刪除 VM 執行個體。如要進一步瞭解這些因素,請參閱「影響 VM 執行個體刪除作業的因素」。

停止執行個體前,請先確認這些執行個體是否需執行特定工作,例如關閉所有現有的連線、安全地關閉所有應用程式或應用程式伺服器、上傳記錄檔等等。您可使用關閉指令碼,指示執行個體來執行這些工作。系統會在發出停止要求直到實際停止執行個體前的短暫期間內,盡可能執行關閉指令碼。在這段期間,Compute Engine 會嘗試執行關閉指令碼,以執行您在指令碼中指定的所有工作。

若您是對代管執行個體群組使用負載平衡,這種做法尤其實用。若執行個體健康狀態不良,則負載平衡器可能需要花點時間才會辨識出執行個體處於不良健康狀態,因此負載平衡器會持續向執行個體傳送新要求。有了關機指令碼,執行個體就能在關機時回報健康狀態不良,負載平衡器也會停止將流量傳送至該執行個體。如要進一步瞭解負載平衡健康狀態檢查,請參閱「健康狀態檢查總覽」。

如要進一步瞭解關閉指令碼,請參閱關閉指令碼的相關說明。

如要進一步瞭解執行個體的關閉作業,請參閱說明文件中關於停止刪除執行個體的說明。

監控自動調度資源圖表和記錄

Compute Engine 提供多種圖表和記錄,方便您隨時監控代管執行個體群組的行為。

您可以在 Google Cloud 控制台存取圖表和記錄。

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 按一下要查看的代管執行個體群組名稱。

  3. 在代管執行個體群組頁面上,選取「監控」分頁標籤。

    「監控」分頁會顯示下列圖表和記錄:

    • 圖表會顯示下列指標的變化:

      • 群組大小
      • 自動配置器使用率
      • CPU 使用率
      • 磁碟 I/O (位元組數)
      • 磁碟 I/O (作業數)
      • 網路位元組數
      • 網路封包數

      如要查看圖表中顯示指標的其他背景詳細資料,請將指標懸停在該圖表標題旁的「說明」圖示上。

    • 頁面底部的「記錄」面板會顯示代管執行個體群組的事件記錄清單。如要查看記錄,請在這個面板上點選 keyboard_capslock「切換『記錄』面板」圖示。

    所有圖表和記錄都綁定單一時間範圍。您可以分析特定事件或特定時間範圍的圖表和記錄,方法如下:

    • 如要放大特定事件,請在任一圖表上拖曳。記錄面板也會重新整理,顯示圖表上所選時間範圍的記錄。

    • 如要查看特定時間範圍內的圖表和記錄,請使用時間範圍選取器。

監控群組大小

「群組大小」圖表可讓您監控 MIG 中執行的執行個體數量。在這個圖表中,「執行個體」線條代表執行的執行個體數量。

如果已設定自動調度,圖表也會顯示下列大小:

  • 已設定的下限:您在自動調度資源政策中設定的執行個體數量下限 (minNumReplicas)。
  • 設定的上限大小:您在自動調度政策中設定的執行個體數量上限 (maxNumReplicas)。
  • 建議大小:自動配置器計算出的建議目標大小。

如要進一步瞭解自動調度資源政策,請參閱「自動調度執行個體群組資源」一文。

監控自動調度資源事件

「群組大小」圖表包含「群組大小事件」時間軸。這條時間軸會顯示事件,例如自動調度器調度群組的資源。將游標懸停在時間軸中的事件方塊上,會顯示包含下列資訊的卡片:

  • 時間戳記:事件的時間戳記。

  • 事件類型和大小:水平擴展或水平縮減。事件類型旁邊會顯示事件前後的舊大小和新大小,例如 6 VMs 1 VM

  • 調度信號:觸發事件的信號,例如 CPU 使用率。

  • 信號值:縮放信號的實際值。

  • 信號目標:縮放信號的目標值。

  • 計算大小:自動配置器計算出的執行個體數量,可達到信號目標。

  • 受限於:任何限制新大小的自動調度資源設定,例如 MIG 的執行個體數量下限或上限。如果自動調整程式未對新大小套用任何限制,資訊卡就不會顯示這項詳細資料。

下圖顯示自動配置器事件時間軸範例。在本例中,資訊卡顯示水平縮減事件,群組大小從 4 個 VM 縮減為 1 個 VM。

自動調度資源事件時間軸。

圖 1:群組大小圖表,顯示事件時間軸。

視您查看的時間範圍而定,時間軸可能會將相近的事件分組。在這種情況下,圖表會顯示分組事件的數量。舉例來說,如果資訊卡顯示「5 個事件」,表示該時間範圍內發生了五個自動調度事件。如要在時間軸上將這些事件視為個別區塊,請放大圖表。您也可以點選資訊卡中的「查看事件」,查看分組事件的詳細資料。

監控預測式自動調度資源

Compute Engine 提供圖表,可監控自動配置器預測結果。如要查看這張圖表,請按一下第一個圖表中的「群組大小」標題,然後選取「預測自動調度資源」

如果已啟用自動調度資源功能,您可以查看自動配置器預測結果,瞭解如何決定執行個體群組的大小。如果未啟用自動調度資源功能,您仍可查看自動配置器預測結果,並據此決定群組大小。

請參閱下列資訊,瞭解這張圖表。

  • 藍線表示位於代管執行個體群組中的執行個體數量。
  • 綠線顯示自動調整程式預測的執行個體數量。
    • 如果綠線的的位置低於藍線,表示具有大量的可用容量,且 VM 執行個體的使用量可能過低。
    • 如果綠線的的位置高於藍線,表示剩餘的容量極少,甚至無可用容量,請新增更多執行個體至執行個體群組。
  • 水平紅虛線代表執行個體群組允許的執行個體數量下限和上限。

查看狀態訊息

若自動配置器在執行資源調度時遇到問題,會傳回警告或錯誤訊息。您可使用以下兩種方式之一來查看這些狀態訊息。

在「Instance groups」(執行個體群組) 頁面上查看狀態訊息

可直接在Google Cloud console的「Instance groups」(執行個體群組) 頁面上查看狀態訊息。

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組) 頁面

  2. 請尋找名稱前有注意圖示的執行個體群組。

    舉例來說:

    執行個體群組頁面上的狀態訊息

  3. 將游標懸停在狀態圖示上,即可查看狀態訊息的詳細資料。

在「Instance group」(執行個體群組) 總覽頁面上查看狀態訊息

直接前往特定執行個體群組的總覽頁面,即可查看相關狀態訊息。

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組) 頁面

  2. 按一下要查看其狀態訊息的執行個體群組。
  3. 在執行個體群組頁面中,查看執行個體群組名稱下方的狀態訊息。

常見的傳回狀態訊息

若自動配置器在執行資源調度時遇到問題,會傳回警告或錯誤訊息。以下是一些常見的傳回訊息及其含意。

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 服務代理程式無法存取該指標。

Quota for some resources is exceeded. Increase the quota or delete resources to free up more quota.

您可在 Google Cloud 控制台的「配額」頁面上,取得可用配額的相關資訊。

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.

執行個體群組處於達到負載平衡的狀態,但沒有查詢流入該群組。此服務可能正處於閒置期,所以不須擔憂。不過,這項訊息也可能是由於錯誤設定所造成。舉例來說,自動調度資源的執行個體群組可能是多個負載平衡器的目標,但設定不受支援。如需完整的規範清單,請參閱負載平衡說明文件中的限制與規範