將機器類型建議套用至 MIG


Compute Engine 會針對代管執行個體群組 (MIG) 提供機器類型建議,協助您提升工作負載效能和成本效益。請參考這些建議,決定是否要調整執行個體的機器類型規模,以新增或移除 vCPU 和記憶體資源。

如要進一步瞭解適用於 VM 執行個體的可用機器類型,請參閱機器類型說明文件。

「機器類型建議」亦稱為「最適規模推薦」

事前準備

  • 參閱 Google Cloud 主控台說明文件。
  • 如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 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.

限制

建議功能適用於位於單一區域且未經自動調度資源或未受負載平衡的代管執行個體群組。

定價

機器類型建議可免費使用。如果您套用建議,調整執行個體的機器類型,系統會根據您選擇的機器類型向您收費。

用途

如果您的工作負載符合下列條件,則可善用機器類型建議:

  • 流量會定期增減的工作負載,例如容易產生季節性流量的工作負載。
  • 由於受到讀取/寫入總處理量等其他限制約束,致使 CPU 與 RAM 使用量過低的工作負載。
  • 工作負載執行的軟體需要個別軟體授權,且無法新增更多執行個體;在這種情況下,您可能需要靠機器類型建議,在維持相同 VM 執行個體數量的情況下,擴充機器類型的規模。
  • 工作負載無法配合不斷變動的執行個體數量進行動態調整,例如不適合自動調度資源的工作負載。

您可能不想使用機器類型建議,原因如下:

  • 您的工作負載出現極短暫的 CPU 用量遽增情形。由於機器類型建議是以 60 秒間隔內的平均 CPU 使用率為參考依據,系統產生建議的速度可能太慢,無法捕捉短暫的遽增情形。如果應用程式會出現用量短暫遽增的情形,則可能需要使用比建議規模更大的機器類型,或者您也可以啟用自動調度資源功能來因應用量遽增情形。
  • 負載尖峰發生頻率低於每 8 天一次 (例如每月一次)。由於調整算法只會查看過去 8 天的記錄,因此不會注意到不常出現的尖峰。
  • MIG 中的每個執行個體都會處理差異甚大的工作負載。在這種情況下,最佳化建議會針對負載量最高的 VM 執行個體進行最佳化,這會導致群組中大部分的 VM 執行個體規模過大。
  • 您的 MIG 未充分利用 VM,因為它不會提供即時負載,且旨在提供可立即提供服務的容錯容量。
  • 您的 MIG 有以下任一原因導致 VM 大小超出:
    • 您的軟體授權需要最低機器大小。
    • 您必須符合儲存空間或網路 IOPS 需求,而這些需求只有在使用最低機器類型時才能滿足。

機器類型建議的運作方式

Compute Engine 會監控執行中虛擬機器的 CPU 與記憶體使用率,並根據過去 8 天的資料提出建議。為了要將最適合的單一機器類型,推薦給代管執行個體群組中的所有執行個體,Compute Engine 會針對個別執行個體產生標準的機器類型建議,並在調整離群值之後,選擇不會導致任一個 VM 執行個體規模過小的機器類型。所有非執行中的執行個體皆不會列入計算,例如已停止或正在重新啟動的 VM 執行個體都不會計入。

Compute Engine 可能會提出類似以下的建議:

  • 如果執行個體群組於大部分時間處於低 CPU 使用率狀態,Compute Engine 會建議採用虛擬 CPU 數量較少的機器類型。
  • 如果執行個體群組於大部分時間處於高 CPU 使用率狀態,Compute Engine 會建議採用虛擬 CPU 數量較多的機器類型。
  • 如果執行個體群組未使用到大部分的記憶體,Compute Engine 會建議採用記憶體較小的機器類型。
  • 如果執行個體大部分時間會主動使用到大部分的記憶體,Compute Engine 會建議採用記憶體較大的機器類型。

Compute Engine 可能會建議使用標準或自訂機器類型。請注意,機器在可用記憶體和 vCPU 數量上有些限制。請特別注意,增加一項資源時,可能同時也需要增加其他資源,才能符合有效機器類型的規格。此外,Compute Engine 只建議使用執行個體執行所在區域提供的機器類型。

詳情請參閱自訂機器類型規格

如果代管執行個體群組的工作負載在個別執行個體上的差異太大,系統可能會根據建議,將部分執行個體的規模調整為高於標準值,以讓受到完整使用的執行個體擁有充足資源。舉例來說,即使執行個體 1、2、3、5 的規模可能會過大,而導致未能充分利用,Compute Engine 仍會提出以下建議,以便支援執行個體 4 的工作負載:

對代管執行個體群組提出的建議
由於代管執行個體間不同工作負載所導致的規模過大範例

因此,針對代管執行個體群組提出的建議,最適合工作負載大致平均分布的執行個體。

至於費用差異估算,執行個體群組的費用是根據前一週的用量 (套用續用折扣前),來推算 30 天所需的費用。系統會再將此資訊與建議的機器類型每月費用 (套用續用折扣前) 進行比較。如需準確的定價和詳細資料,請參閱定價說明文件

查看機器類型建議

Compute Engine 可透過 Google Cloud 控制台提供建議,您可以使用 gcloud CLI 或 REST 透過推薦工具查看機器類型最佳化建議。

主控台

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

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

  2. 選取您的專案並點選 [Continue] (繼續)
  3. 查看「Recommendation」(建議) 資料欄,檢視對各個代管執行個體群組的建議。也可以根據預估的節省量來排序資料欄。如果執行個體群組旁未顯示建議,表示 Compute Engine 沒有任何要提出的建議。

    建議欄。

  4. 如果執行個體群組具有兩個執行個體範本,Compute Engine 會對各執行個體範本分別提供建議。按一下建議,即可查看該執行個體範本的建議。

    多個範本的建議

gcloud

使用 gcloud recommender recommendations list 指令並指定 VM 代管執行個體群組最適規模建議工具

gcloud recommender recommendations list \
      --recommender=google.compute.instanceGroupManager.MachineTypeRecommender \
      --project [PROJECT_ID] \
      --location [ZONE] \
      --format=yaml

例如:

gcloud recommender recommendations list \
    --recommender=google.compute.instanceGroupManager.MachineTypeRecommender \
    --project my-project \
    --location us-central1-a \
    --format=yaml

回應會包括每個建議的下列各欄位:


---
content:
  ...
  operationGroups:
  - operations:
    - action: test
      path: /properties/machineType
      resource: //compute.googleapis.com/projects/my-project/global/instanceTemplates/my-old-template
      resourceType: compute.googleapis.com/InstanceTemplate
      value: n1-standard-4
    - action: copy
      path: /
      resource: //compute.googleapis.com/projects/my-project/global/instanceTemplates/$new-it-name
      resourceType: compute.googleapis.com/InstanceTemplate
      sourcePath: /
      sourceResource: //compute.googleapis.com/projects/my-project/global/instanceTemplates/my-old-template
    - action: replace
      path: /name
      resource: //compute.googleapis.com/projects/my-project/global/instanceTemplates/$new-it-name
      resourceType: compute.googleapis.com/InstanceTemplate
      value: $new-it-name
    - action: replace
      path: /properties/machineType
      resource: //compute.googleapis.com/projects/my-project/global/instanceTemplates/$new-it-name
      resourceType: compute.googleapis.com/InstanceTemplate
      value: custom-2-5632
  - operations:
    - action: replace
      path: /versions/*/name
      pathValueMatchers:
        versions/*/instanceTemplate:
          matchesPattern: .*global/instanceTemplates/my-old-template
      resource: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instanceGroupManagers/example-group
      resourceType: compute.googleapis.com/InstanceGroupManager
      value: global/instanceTemplates/$new-it-name
...
description: Save cost by changing machine type from n1-standard-4 to custom-2-5120.
...
name: projects/823742397239/locations/us-central1-a/recommenders/google.compute.instanceGroupManager.MachineTypeRecommender/recommendations/c50a1c41-7e65-417d-a32e-45248a2cb318
...

詳情請參閱建議工具說明文件。

REST

Recommender API 與 MIG 機器類型推薦工具 ID 搭配使用。

PROJECT_ID=my-project
LOCATION=us-central1-c
RECOMMENDER_ID=google.compute.instanceGroupManager.MachineTypeRecommender

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://recommender.googleapis.com/v1/projects/$PROJECT_ID/locations/$LOCATION/recommenders/$RECOMMENDER_ID/recommendations

回應會包括每個建議的下列各欄位:

  • name 建議名稱
  • description 使用者可自然閱讀的建議說明。
  • operationGroups 按順序執行即可套用建議的一組作業。

詳情請參閱建議工具說明文件。

建立新的代管執行個體群組後,系統會在 24 小時後顯示新群組的建議。

之後,系統會在一整天中定期重新整理建議。

將建議套用至執行個體群組

如要採用 Compute Engine 提供的建議,您可以直接從主控台調整代管執行個體的規模。或者,您也可以自行手動逐步執行規模調整作業。Recommender API 會傳回一系列的規模調整作業,詳情請參閱作業群組一節。

將建議套用至代管執行個體群組時,您將執行下列步驟:

  1. 複製代管執行個體群組目前使用的執行個體範本。
  2. 根據建議和您要進行的任何變更,修改複製的執行個體範本。
  3. 使用 Managed Instance Group Updater 套用新範本。如果執行個體群組具有兩個執行個體範本:

    1. 一次僅能為一個執行個體範本套用建議。
    2. 代管執行個體群組一次最多僅能維持兩個執行個體範本,因此無法一邊套用最佳化建議,一邊維持另外兩個執行個體範本。不過,如果執行個體群組僅具有一個執行個體範本,即可套用建議。

如要直接從主控台調整代管執行個體的規模:

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

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

  2. 按一下您要更新的執行個體群組建議文字。

    選取建議欄。

  3. 這時會出現彈出式視窗,內有更多詳細資料,可選擇「Cancel」(取消)、「Dismiss」(關閉)建議或「Continue」(繼續)。如要檢視和套用建議,請按一下 [Continue] (繼續)

  4. 在「查看最佳化建議」頁面中,會詳細說明最佳化建議。如果您繼續進行建議,Compute Engine 會將執行個體群組中使用舊範本的所有執行個體更新為使用新範本。

  5. (進階) 如要自訂對執行個體導入新範本的方式,請按一下「Customize deployment」(自訂部署作業)。畫面上會顯示「Deployment configuration」畫面。

    1. 如果您想主動刪除及建立執行個體,請選擇「自動」。如果您只想在以其他方式建立執行個體時 (例如調整大小或在群組中新增新執行個體) 套用更新,請選擇「選擇性」
    2. 如果您選取自動更新,請選擇是否要替換執行個體時保留執行個體名稱
      • 如果您選擇保留執行個體名稱,請在「臨時額外執行個體」下方,選擇要建立多少個超過代管執行個體群組目標大小的臨時額外執行個體。允許的執行個體數量越多,更新速度就越快,而額外的執行個體會產生費用。預設值為 1 個額外執行個體。
    3. 您可在「Maximum unavailable instances」(無法使用的執行個體數量上限) 下方,選擇更新期間可以同時離線的執行個體數量。這個數目也包括任何因其他原因而無法使用的執行個體。例如,如果執行個體群組正處於將規模調大的過程中,建立中的執行個體可能會無法使用,而這些執行個體就會計入這個數字中。預設值為一次將 1 個執行個體設為無法使用。
    4. 選用步驟:展開「顯示進階選項」。您可在「Minimum wait time」(最短等待時間) 下方,選擇在將新執行個體標為已更新之前,所要等待的秒數。系統會在成功執行健康狀態檢查後開始計算時間。使用這項功能可控制套用執行個體範本的速率。
  6. 如要套用變更,請按一下「儲存」

  7. 準備好部署變更時,請按一下 [Deploy] (部署)

關閉建議

建議使用完畢後,可以從主控台中將其關閉。在主控台中,關閉建議會從預估節省費用總計中移除該建議,同時也會讓建議的外觀變成暗灰色,使其變得布明顯。

透過主控台關閉建議並不會影響 Recommender API 傳回的建議清單。如要管理 Recommender API 傳回的建議狀態,請參閱使用 API 一文。

如何在主控台中關閉單一建議:

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

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

  2. 按一下您要關閉之建議的文字。這時會出現彈出式視窗,內有更多詳細資料,並會顯示「Dismiss」按鈕。

  3. 按一下「關閉」

如何在主控台中還原建議:

  1. 在「Instance groups」(執行個體群組) 頁面上,按一下想要還原的灰色建議文字。

    已關閉的建議。

  2. 這時會出現彈出式視窗,內有更多詳細資料,並會顯示「Restore」按鈕。

  3. 按一下「還原」

透過監控代理程式取得更精確的建議

Cloud Monitoring 提供監控代理程式,可自您的 VM 執行個體收集額外的磁碟、CPU、網路和處理程序指標。您可以在 VM 執行個體上安裝監控代理程式,這樣代理程式就能存取系統資源和應用程式服務來收集資料。

如果在 VM 執行個體上安裝並執行 Monitoring 代理程式,就會自動使用代理程式收集的 CPU 與記憶體指標來計算機器類型建議。與預設的 Compute Engine 指標相較之下,Monitoring 代理程式提供的代理程式指標對於執行個體的資源使用率,可提供更加詳盡的深入分析資訊。這可讓建議引擎更有效地預估資源需求,並提出更精確的建議。

如要安裝代理程式,請參閱「安裝 Cloud Monitoring 代理程式」一文。

後續步驟