根據預測結果調整資源


您可以為代管執行個體群組 (MIG) 設定自動調度資源功能,根據負載的增減自動新增或移除虛擬機器 (VM) 執行個體。不過,如果應用程式需要幾分鐘或更長的時間才能完成初始化,則在發生即時變化時新增執行個體,可能無法提高應用程式的容量。舉例來說,如果負載量大幅增加 (例如使用者早上起床時),在應用程式初始化新執行個體時,部分使用者可能會遇到延遲情形。

您可以使用預測式自動調度資源功能,針對初始化時間較長,且工作負載會隨著每日或每週週期變化的應用程式,縮短回應時間。

啟用預測式自動調度資源功能後,Compute Engine 會根據 MIG 的歷史資料預測未來的負載,並在預測負載發生前擴展 MIG,以便在負載發生時提供新的執行個體。如未啟用預測自動調度資源功能,自動配置器只能根據觀察到的即時負載變化,以回應方式調整群組。啟用預測式自動調度資源後,自動調度器會使用即時資料和歷來資料,涵蓋目前和預測的負載。如需更多資訊,請參閱「預測式自動調度資源的運作方式」和「確認預測式自動調度資源是否適合您的工作負載」。

事前準備

  • 如要使用本指南提供的指令列範例,請安裝 Google Cloud CLI啟動 Cloud Shell
  • 閱讀自動配置器基本概念
  • 如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 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

    1. 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.

    2. 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.

定價

預測式自動調度資源功能不收取費用。不過,如果您啟用預測性自動調整功能來提升可用性,就必須支付 MIG 使用的 Compute Engine 資源費用。

限制

  • 預測式自動調度資源功能僅適用於以 CPU 使用率做為調度指標的情況。不支援 Cloud Load Balancing 或 Cloud Monitoring 指標。
  • Compute Engine 需要 3 天的 CPU 自動調度資源記錄,才能產生預測結果。
  • 預測結果是根據每週和每日的負載模式計算而得。Compute Engine 不會預測每月、每年或一次性事件,也不會預測 10 分鐘內的負載模式。您可以使用依據排程自動調度資源,針對一次性或其他負載模式要求容量。

適合的工作負載

工作負載符合下列條件時,預測式自動調度資源功能的效果最佳:

  • 應用程式初始化需要很長的時間,例如設定的初始化期間超過 2 分鐘。
  • 工作負載會隨著每日或每週週期而變化。

如果服務需要很長的時間才能初始化,使用者在外推事件發生後,可能會遇到服務延遲情形,也就是在新的 VM 已佈建但尚未提供服務的情況下。預測式自動調度資源功能會將應用程式的初始化時間列入考量,並能在用量依預測提高前,事先向上擴充,有助於確保可用的服務執行個體數量足以達到目標使用率。

如要預覽預測式自動調度資源對群組的影響,請參閱「檢查預測式自動調度資源是否適合您的工作負載」。

啟用及停用預測式自動調度資源功能

您可以根據 CPU 使用率調度資源時,啟用預測式自動調度資源功能。如要進一步瞭解如何設定以 CPU 為基礎的自動調度資源功能,請參閱「根據 CPU 使用率執行資源調度」一文。

如果 MIG 沒有自動調度資源歷史記錄,預測演算法可能需要 3 天才能影響自動調度資源。在這段期間,群組只會根據即時資料進行調整。3 天後,群組就會開始使用預測功能進行擴充。隨著收集到的負載歷史資料越多,預測型自動調度資源功能就能更準確地瞭解負載模式,並改善預測結果。Compute Engine 最多會使用 3 週的 MIG 負載記錄,做為機器學習模型的輸入資料。

主控台

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

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

  2. 在清單中按一下現有 MIG 的名稱,開啟群組的總覽頁面。

  3. 按一下 [編輯]

  4. 如果沒有自動調度資源設定,請按一下「Autoscaling」(自動調度資源) 下方的「Configure autoscaling」(設定自動調度資源功能)

  5. 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。

  6. 指定您要讓自動配置器在這個群組中建立的執行個體數量下限與上限。

  7. 在「Autoscaling signals」區段中,如果目前沒有「CPU utilization」指標,請先新增這個指標:

    1. 按一下「新增信號」
    2. 在「信號類型」下拉式選單中,選取「CPU 使用率」
    3. 在「Target CPU utilization」(目標 CPU 使用率) 中輸入您想要的值,系統會將這個值以百分比格式處理。例如,若需 75% 的 CPU 使用率,請輸入 75
    4. 在「Predictive autoscaling」(預測式自動調度資源) 底下,選取「Optimize for availability」(針對可用性進行最佳化),即可啟用預測式自動調度資源。
      • 或者,如果您想停用預測演算法,並只使用即時自動配置器,請選取「關閉」
    5. 按一下 [完成]
  8. 在「Initialization period」(初始化期間) 下方,指定應用程式在新的執行個體上初始化所需的時間。這個設定會通知預測式自動配置器,在預期負載出現前進一步擴充,以便在負載到達時初始化應用程式。

  9. 按一下 [儲存]

gcloud

設定或更新 MIG 的自動調整器時,請加入 --cpu-utilization-predictive-method 標記,並指定下列任一值:

  • optimize-availability:啟用預測演算法
  • none (預設):停用預測演算法

如果群組尚未啟用 CPU 自動調度資源功能,您必須啟用這項功能。您可以使用 set-autoscaling 指令,從頭設定群組的自動調度資源政策。舉例來說,下列指令說明如何使用下列設定設定自動調度資源:

  • 已啟用預測式自動調度資源功能。
  • 目標 CPU 使用率為 75%。
  • 執行個體數量上限設為 20。
  • 初始化期間 (--cool-down-period) 設為 5 分鐘。這個設定會通知預測式自動調度資源功能,在預期負載出現前 5 分鐘擴展,以便在負載到達時初始化應用程式。
gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --cpu-utilization-predictive-method optimize-availability \
  --target-cpu-utilization 0.75 \
  --max-num-replicas 20 \
  --cool-down-period 300

如果已為群組啟用 CPU 自動調度資源功能,請使用 update-autoscaling 指令啟用預測演算法:

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
  --cpu-utilization-predictive-method=optimize-availability

REST

建立或更新自動配置器時,請在要求主體中加入 predictiveMethod 欄位,並使用下列其中一個值:

  • OPTIMIZE_AVAILABILITY:啟用預測演算法
  • NONE (預設):停用預測演算法

如果群組沒有現有的自動調度資源設定,請執行下列操作:

如果群組已設有自動調度資源設定,請執行下列操作:

如果群組尚未啟用 CPU 自動調度資源功能,您必須啟用這項功能。

舉例來說,下列要求會修補現有的自動配置器資源,以便啟用下列設定的 CPU 自動調度資源:

  • 已啟用預測式自動調度資源功能。
  • 目標 CPU 使用率為 75%。
  • 執行個體數量上限設為 20。
  • 初始化期間 (coolDownPeriodSec) 設為 5 分鐘。這個設定會通知預測式自動調度資源功能,在預期負載出現前 5 分鐘擴展,以便在負載到達時初始化應用程式。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers/

{
  "name": "AUTOSCALER_NAME",
  "target": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME",
  "autoscalingPolicy": {
    "cpuUtilization": {
       "utilizationTarget": 0.75,
       "predictiveMethod": "OPTIMIZE_AVAILABILITY"
     },
    "maxNumReplicas": 20,
    "coolDownPeriodSec": 300
  }
}

檢查是否已啟用預測式自動調度資源

如要查看 MIG 目前的自動調度資源設定,請參閱「取得 MIG 的屬性」。

設定預測式自動調度資源功能

如要進一步瞭解如何設定目標使用率、執行個體數量下限和上限,以及初始化期間,請參閱「根據 CPU 使用率執行資源調度」。設定這些選項後,預測型自動配置器會以與即時自動配置器相同的方式,在群組的最低和最高範圍內,維持所有執行個體的目標使用率。

使用初始化期間設定,考量應用程式初始化所需的時間。這項設定會影響預測式自動配置器在負載預測增加之前,啟動新執行個體的時間差距,以便在負載到達時,應用程式能立即提供服務。

檢查預測式自動調度資源是否適合您的工作負載

如要瞭解預測式自動調度資源是否能改善應用程式的可用性,您可以比較群組目前的 CPU 自動調度資源設定與預測式自動調度資源的效能。您不需要啟用預測式自動調度資源功能,即可進行比較。

如要進一步瞭解適合預測式自動調度資源功能的工作負載,請參閱「適合的工作負載」。

檢查是否有過載

當自動調度資源的平均 CPU 使用率超過目標時,就會超載。如要檢查自動調度資源設定是否在過去 7 天內導致 VM 超載,以及預測式自動調度資源功能是否能減少超載情況,請完成下列步驟:

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

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

  2. 按一下已設定 CPU 自動調度資源的現有 MIG。群組的總覽頁面隨即開啟。

  3. 按一下 [編輯]

  4. 在「Autoscaling」區段的「Autoscaling signals」下方,展開「CPU utilization」區段,然後點選「See if predictive autoscaling can optimize your availability」

  5. 根據過去 7 天的資料,下表顯示每個 VM 每天的使用量,以及每天有多少 VM 超載:

    • 目前的自動調度資源設定:顯示自動調度資源在過去 7 天內的運作情形,以自動調度資源的設定為準。
    • 預測式自動調度資源功能設為「針對可用性進行最佳化」:顯示如果在過去 7 天內啟用預測式自動調度資源功能,自動配置器的執行情形。

您可以使用「每日使用的 VM 數量」做為費用的代理值。舉例來說,為了減少每日 VM 過載次數,預測式自動配置器可能會提早建立 VM,並延長 VM 的執行時間,導致額外收費。

監控及模擬預測式自動調度資源

您可以使用 Cloud Monitoring 將群組的歷史大小以圖表呈現。監控圖表會顯示自動調度資源設定如何隨著時間變化,也會顯示預測式自動調度資源 (如果已啟用) 如何調度群組。

如果群組已停用預測式自動調度資源功能,您可以使用這項工具模擬預測式自動調度資源功能,然後再啟用這項功能。

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

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

  2. 按一下已設定 CPU 自動調度資源的現有 MIG。群組的總覽頁面隨即開啟。

  3. 按一下「監控」,查看與群組相關的圖表。

  4. 在第一張圖表中,按一下標題,然後選取「預測性自動調整大小」。這個檢視畫面會顯示群組的實際大小和預測大小。

  5. 您可以選取其他時間範圍來查看更多歷史記錄,或是放大需求增加的期間,瞭解預測型自動調度資源會如何影響群組大小,以便在預測負載之前做出調整。

預測式自動調度資源的運作方式

預測式自動配置器會根據指標的歷史趨勢,預測您的資源調度指標。系統每隔幾分鐘就會重新計算預測值,讓自動配置器能快速根據負載的最新變化調整預測值。預測型自動調度器需要至少 3 天的歷史資料,才能判斷代表性的服務使用模式,並提供預測結果。Compute Engine 最多會使用 3 週的 MIG 負載記錄,做為機器學習模型的輸入資料。

預測型自動配置器會根據多項因素計算出達成使用率目標所需的 VM 數量,其中包括:

  • 擴大指標的預測未來值
  • 資源調度指標的目前值
  • 對過去趨勢的信心,包括過去的縮放指標變化
  • 已設定的應用程式初始化期間,也稱為「初始化期間」

預測式自動調度資源會根據這些因素,在預期需求出現前擴充群組。

比較啟用和未啟用預測式自動調度資源功能的 VM 服務。

圖 1. 比較啟用和未啟用預測式自動調度資源功能的 VM 服務。

在圖 1 中,藍色線代表 VM 需求量持續增加。黑線顯示了調整大小工具的回應:新增更多 VM。不過,對於初始化時間較長的應用程式,灰色線條顯示新增的 VM 需要額外時間才能準備好供服務,這可能導致 VM 供給不足以滿足需求。啟用預測式自動調度資源功能後,系統會考量預測的需求增加情形和應用程式初始化時間過長的問題:自動配置器會提早新增 VM 來回應,因此可提供足夠的 VM 數量。您可以設定初始化期間,設定新增執行個體的提前時間。

即時用量資料

預測型自動調整器無法根據歷來資料,判斷未來所有用量變化的模式,因此也能與即時資料無縫搭配運作。舉例來說,如果發生意外的新聞事件,可能會導致使用量激增,而這類情況無法單憑歷史資料預測。為了因應這種無法預測的負載變化,預測式自動調度資源功能會做出以下回應:

  • 它會調整預測結果:預測結果會在幾分鐘內持續重新計算,以便納入最新資料。調整新模式的確切時間取決於其他因素,包括新模式的可重複性,以及新模式與過去預測結果之間的差異程度。
  • 這會產生即時資料:自動配置器會根據指標的即時值,建議執行個體數量,以便滿足群組的目標使用率。如果即時信號的目前值大於預測值,信號的目前值會優先於預測值。因此,啟用預測自動調度資源的 MIG 比未啟用的 MIG 擁有更多可用性。

兩張圖表顯示預測值如何配合實際 CPU 使用率。

圖 2:兩張圖表顯示預測值如何配合實際 CPU 使用率。

在圖 2 中,黃色虛線代表 t1 時的預測值。但實際的 CPU 使用率 (以藍色實線表示) 與預測的不同。在左側圖表中,實際 CPU 使用率高於預測值。在右側圖表中,實際 CPU 用量低於預測值。藍色虛線則代表經過調整的預測值。

短暫且無法預測的流量尖峰

系統會即時處理短暫且難以預測的流量高峰。自動配置器會根據指標的目前實際值,至少建立足夠的執行個體,讓使用率維持在設定的目標。不過,這些例項並未事先建立,如下圖所示。

短暫且無法預測的尖峰會導致自動調整器即時回應。

圖 3:短暫且無法預測的尖峰會導致自動調整器即時反應。

在圖 3 中,藍色實線代表實際的 CPU 使用量。無法預測 CPU 用量的意外激增情形。由於自動配置器會持續監控即時資料,因此會新增執行個體以因應尖峰需求。黑色實線代表自動調整器會根據尖峰負載,以回應方式新增 VM。灰色實線代表服務 VM 數量。由於應用程式初始化時間,灰色線條會落後於黑色線條。在這種情況下,群組會暫時超載。

突然下滑

另一種無法預測的使用量變化是突然下滑,例如應用程式堆疊中部分發生錯誤而導致的下滑。在這種情況下,一開始的執行個體數量會遵循預測值。不過,隨著時間過去,預測值會調整為低於預測值的用量,導致縮減規模。這項調整的確切時間取決於多項因素,包括:過去出現這類模式的頻率、低潮期持續的時間,以及低潮期的深度。

突然的下滑會導致預測式自動配置器變更預測值。

圖 4:突然的下滑會導致預測式自動配置器變更預測資料。

在圖 4 中,黃色虛線代表 t1 時的預測值。但實際的 CPU 用量 (以藍色實線表示) 低於預測值。藍色虛線則代表更新後的預測值,系統會在觀察到實際使用量低於預測值後自動調整。這會導致自動配置器在標準穩定期過後移除執行個體。

歷來資料

預測式自動調度資源需要至少 3 天的負載記錄,才能開始預測。如果您有缺乏歷來資料的新 MIG,Compute Engine 會使用即時資料進行反應式調整,直到有足夠的歷來資料為止。3 天後,Compute Engine 會收集更多用量資料,因此預測結果會有所改善。

如果您透過建立新的 MIG 並刪除舊的 MIG (例如藍/綠部署) 來更新應用程式,則新 MIG 需要 3 天的歷史負載資料,預測型自動調整大小功能才能再次產生預測資料。如果您想在 MIG 之間保留負載記錄,以便在您建立新 MIG 時立即開始預測,請與我們聯絡,索取加入私人搶先體驗的操作說明。

後續步驟