模擬主機維護事件


本頁說明如何測試 Compute Engine 執行個體的主機維護政策對應用程式造成的影響。

您可以模擬 VM 上的維護作業,以測試下列項目:

  • 即時遷移對應用程式的影響。
  • 應用程式和批次工作在使用一或多個 Spot VM 時,如何處理先佔和關閉作業。
  • 針對在維護事件期間終止並重新啟動的執行個體,應用程式如何處理關閉和重新啟動程序,而非執行即時遷移作業。
  • 在主機維護事件期間,單一用戶群節點上執行的工作負載行為,以及單一用戶群 VM 的主機維護政策對 VM 上執行的應用程式所造成的影響。

如果您嘗試在不支援即時遷移的執行個體上模擬主機維護事件,執行個體會根據所設定的主機維護政策,終止或重新啟動。

事前準備

  • 請查看 SimulateMaintenanceEventRequestsPerMinutePerProjectPerRegion區域 API 使用頻率限制
  • 如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要在本機開發環境中執行程式碼或範例,您可以選取下列任一選項,向 Compute Engine 進行驗證:

    Select the tab for how you plan to use the samples on this page:

    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.

限制

  • 如要在單一租用戶節點群組中,正確模擬主機維護政策已設為「在節點群組內遷移」的維護事件,您需要在每個節點上依序觸發維護事件。
  • 針對單一用戶群節點群組,當您嘗試模擬主機維護事件,且節點群組的主機維護政策已設為在節點群組內遷移時:
    • 如果指定的節點數量小於或等於保留的保留節點總數,則主機維護事件模擬作業會同時針對所有指定節點執行。
    • 如果指定的節點數量大於保留的保留節點總數,模擬程序就會失敗。
  • 每個區域每分鐘可啟動的維護事件模擬次數,受到 simulate_maintenance_event_requests_per_region 指標的 API 頻率限制限制。

模擬主機維護事件以測試即時遷移

您可以使用 Google Cloud CLI 或 API 要求,模擬運算執行個體的維護作業。這個模擬事件包含在例行維護事件中發生的不同維護活動。這樣一來,您就能觀察端對端程序,並測試可能已實作的任何自動化功能。

模擬使用即時遷移的執行個體主機維護事件時,執行個體的 maintenance-event 中繼資料鍵會經歷以下變更:

  1. 在模擬開始時,maintenance-event 中繼資料鍵的值會從 NONE 變更為 MIGRATE_ON_HOST_MAINTENANCE
  2. 在模擬事件期間,值會保持為 MIGRATE_ON_HOST_MAINTENANCE
  3. 模擬結束後,值會恢復為 NONE

如要查詢維護事件鍵,請參閱「查詢維護事件中繼資料鍵」。

gcloud

使用 compute instances simulate-maintenance-event 指令模擬執行個體的維護事件,並測試所設定的主機維護政策設定:

gcloud compute instances simulate-maintenance-event INSTANCE_NAME \
    --zone=ZONE --with-extended-notifications=True

更改下列內容:

  • INSTANCE_NAME:您要模擬維護作業的運算執行個體名稱。

    您可以指定多個執行個體名稱,並以單空格分隔,在位於相同區域的多個執行個體上模擬維護作業。例如 instance-1 instance-2 instance-3

  • ZONE:執行個體所在的區域。

REST

請建構對 compute.instances.simulateMaintenanceEvent 方法POST 要求:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/simulateMaintenanceEvent

更改下列內容:

  • PROJECT_ID:這項要求的專案 ID。
  • INSTANCE_NAME:您要模擬維護作業的執行個體名稱。
  • ZONE:執行個體所在的區域。

模擬要終止的運算執行個體的主機維護作業

您可以使用 Google Cloud CLI 或 API 要求,模擬運算執行個體的維護作業。這個模擬事件包含在例行維護事件中發生的不同維護活動。這樣一來,您就能觀察端對端程序,並測試可能已實作的任何自動化功能。

此外,您也可以使用參數 --with-extended-notifications 搭配支援的機器類型,在模擬事件期間手動測試主機維護作業。

gcloud

  1. 使用 compute instances simulate-maintenance-event 指令模擬執行個體的維護事件,並測試所設定的主機維護政策設定。您可以選擇加入 --with-extended-notifications 旗標。

    gcloud compute instances simulate-maintenance-event INSTANCE_NAME \
       --zone=ZONE --with-extended-notifications=True
    

    更改下列內容:

    • INSTANCE_NAME:您要模擬維護作業的運算執行個體名稱。

      您可以指定多個執行個體名稱,並以單空格分隔,在位於相同區域的多個執行個體上模擬維護作業。例如 instance-1 instance-2 instance-3

    • ZONE:執行個體所在的區域。

  2. 選用:如要手動啟動模擬維護事件,請使用 compute instances perform-maintenance 指令

    gcloud compute instances perform-maintenance INSTANCE_NAME \
       --zone=ZONE
    

    更改下列內容:

    • INSTANCE_NAME:您要模擬維護作業的運算執行個體名稱。

      您可以指定多個執行個體名稱,並以單空格分隔,在位於相同區域的多個執行個體上模擬維護作業。例如 instance-1 instance-2 instance-3

    • ZONE:執行個體所在的區域。

REST

  1. 建構對 compute.instances.simulateMaintenanceEvent 方法POST 要求。您可以選擇加入查詢參數 withExtendedNotifications

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/simulateMaintenanceEvent?withExtendedNotifications=True
    

    更改下列內容:

    • PROJECT_ID:這項要求的專案 ID。
    • INSTANCE_NAME:您要模擬維護作業的執行個體名稱。
    • ZONE:執行個體所在的區域。
  2. 選用:如要手動啟動模擬維護事件,請向 compute.instances.performMaintenance 方法建構 POST 要求。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/performMaintenance
    

    更改下列內容:

    • INSTANCE_NAME:您要啟動維護作業的運算執行個體名稱。

      您可以指定多個執行個體名稱,並以單一空格分隔,在位於相同區域的多個執行個體上執行維護作業。例如 instance-1 instance-2 instance-3

    • ZONE:執行個體所在的區域。

在單一用戶群節點上模擬主機維護事件

您可以使用 Google Cloud CLI 或 API 要求,在單一租用戶節點上模擬主機維護作業。在單租戶 VM 上模擬主機維護事件期間,maintenance-event 中繼資料鍵值不會變更,並在整個模擬期間保持為 NONE

gcloud

執行 sole-tenancy node-groups simulate-maintenance-event 指令,強制單一租用戶節點啟用所設定的維護政策:

 gcloud compute sole-tenancy node-groups simulate-maintenance-event NODE_GROUP \
    --nodes=NODE_NAMES \
    --zone=ZONE \
    --async

更改下列內容:

  • NODE_GROUP:您要模擬維護作業的節點群組名稱。

  • NODE_NAMES:您要模擬維護作業的節點名稱。指定多個節點名稱時,請使用半形逗號分隔的值,例如 node-1,node-2,node-3

  • ZONE:節點所在的可用區。

REST

請建構對 compute.nodeGroups.simulateMaintenanceEvent 方法POST 要求:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/nodeGroups/NODE_GROUP/simulateMaintenanceEvent

{
  "nodes": [
      "NODE_NAMES"
  ]
}

更改下列內容:

  • PROJECT_ID:這項要求的專案 ID。
  • ZONE:節點所在的可用區。
  • NODE_GROUP:您要模擬維護作業的節點群組名稱。
  • NODE_NAMES:您要模擬維護作業的節點名稱。請在節點名稱前後加上雙引號,例如 "node-1"。指定多個節點名稱時,請使用半形逗號分隔的值,例如 "node-1","node-2","node-3"

後續步驟