管理 H4D VM 的主機事件

本文說明如何使用 H4D VM 提供的主機維護功能。本文說明如何監控、規劃及執行虛擬機器 (VM) 執行個體的排定維護作業。如要管理預留容量區塊的維護作業 (無論 VM 是否在其中執行),請改為參閱「管理所有預留項目的主機事件」。

主動管理 VM 即將進行的主機維護事件,可將中斷情形降到最低,並維持最佳效能。

事前準備

請根據您打算如何使用本頁範例,選取對應的分頁標籤:

控制台

使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,您不需要設定驗證機制。

gcloud

安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。 登入後,執行下列指令來初始化 Google Cloud CLI:

gcloud init

REST

如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

    安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。

詳情請參閱 Cloud de Confiance 驗證說明文件中的「使用 REST 進行驗證」。

必要的角色

如要取得管理 VM 主機維護事件所需的權限,請要求管理員授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這些預先定義的角色具備管理 VM 主機維護事件所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

必須具備下列權限,才能管理所有 VM 的主機維護事件:

  • 如要查看 VM 的詳細資料: compute.instances.get 在專案上

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

總覽

如要最佳化 VM 維護作業,請完成下列步驟:

  1. 瞭解主機維護作業。根據 VM 的機器系列,瞭解 VM 的維護頻率和行為。這項資訊有助於盡量減少工作負載中斷。

  2. 設定通知快訊。建立記錄式快訊,即可在 VM 維護作業排定、開始或完成時收到通知。這種做法有助於主動規劃活動,避免意外停機。

  3. 管理所有 VM 的維護作業。查看 VM 是否已排定維護作業。如有需要,您可以手動啟動 VM 維護作業。這項程序有助於提高工作負載對主機事件的韌性、避免停機,並盡可能提高應用程式的可用性。

瞭解主機維護

在 Compute Engine 執行個體的生命週期中,執行個體運作的主體機器會經歷多個主體事件。主機事件可能包括 Compute Engine 基礎架構的定期維護,或在極少數情況下發生的主機錯誤。Compute Engine 也會在背景中,對 Hypervisor 和網路套用一些不中斷服務的輕量升級。

H4D 機器系列提供下列主機維護相關功能:

機型 一般排定維護事件頻率 維護行為 進階通知 隨選維護 模擬維護作業
h4d-standard-192 至少 30 天 終止 7 天 是 否
h4d-highmem-192 至少 30 天 終止 7 天 是 否
h4d-highmem-192-lssd 至少 30 天 終止並保留本機 SSD 資料 7 天 是 否
h4d-megamem-192 至少 30 天 終止 7 天 是 否
h4d-megamem-192-lssd 至少 30 天 終止並保留本機 SSD 資料 7 天 是 否

上表顯示的維護頻率為約略值,不保證一定如此。Compute Engine 有時可能會更頻繁地執行維護作業。

設定 VM 的通知快訊

您可以建立記錄指標警告政策,在 VM 的維護事件排定、開始或完成時收到通知。

如要為 VM 的維護事件建立警告,請完成下列程序。針對要建立的每個快訊,重複執行這項程序。

  1. 前往 Cloud de Confiance 控制台的 「Logs Explorer」頁面:

    前往「Logs Explorer」(記錄檔探索工具)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。

  2. 將「Show query」(顯示查詢) 切換鈕設為開啟。

  3. 在「查詢」窗格中,建立下列其中一個查詢。這些查詢會篩選記錄項目,找出特定維護事件。如要使用多個查詢,請重複這項程序,為每個查詢建立專屬快訊。

    • 如要在 VM 排定維護作業時收到快訊,請按照下列步驟操作:

      protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT
      protoPayload.status.message =~ "scheduled"
      
    • 如要在 VM 的維護期間開始時收到快訊,請按照下列步驟操作:

      protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT
      protoPayload.status.message =~ "ongoing"
      
    • 如要在 VM 開始維護時收到快訊,請按照下列步驟操作:

      protoPayload.methodName="compute.instance.terminateOnHostMaintenance" severity>=DEFAULT
      
    • 如要在 VM 維護作業完成時收到快訊,請按照下列步驟操作:

      protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT
      protoPayload.status.message =~ "completed"
      
  4. 如要驗證查詢,請按一下「執行查詢」。如果查詢有效,「Query results」(查詢結果) 窗格會顯示符合查詢的記錄項目。

  5. 在「查詢」結果工具列中,按一下「動作」清單,然後選取 「建立記錄檔快訊」。系統會顯示「Create logs-based alert policy」(建立記錄檔警告政策) 窗格。

  6. 在「警報詳細資料」部分,執行下列操作:

    1. 在「Alert Policy Name」(警告政策名稱) 欄位中,輸入政策名稱。

    2. 在「Policy severity level」(政策嚴重性等級) 清單中,選取「Warning」(警告) (或更高的嚴重性)。

    3. 點選「下一步」。

  7. 在「Choose logs to include in the alert」(選擇要加入快訊的記錄檔) 區段中,按一下「Next」(下一步)。

  8. 在「Set notification frequency and autoclose duration」(設定通知頻率和自動關閉期限) 區段中,指定下列項目:

    1. 在「通知時間間隔」清單中,選取接收通知的頻率。

    2. 在「Incident autoclose duration」(事件自動關閉期限) 清單中,選取 Cloud Logging 停止傳送通知並自動關閉事件的時間。

    3. 點選「下一步」。

  9. 在「Who should be notified?」(應該通知誰?) 部分,指定 Logging 要傳送通知的通知管道。

  10. 按一下 [儲存]。

如要在 Logs Explorer 中查看維護事件通知範例,請參閱 Compute Engine 說明文件中的「維護通知範例」。

管理各個 VM 的維護作業

您可以執行下列一或多項操作,查看及控管 VM 的維護作業:

查看 VM 的維護狀態

如要查看 VM 即將進行的維護作業狀態和排定時間,請檢查執行個體中繼資料的 upcomingMaintenance 欄位值。如果 VM 不含 upcomingMaintenance 欄位,則表示該 VM 未排定任何主機維護事件。如要進一步瞭解 upcomingMaintenance 中的欄位,請參閱 Compute Engine 說明文件中的「維護狀態定義」。

此外,如果 VM 已排定維護作業,upcomingGroupMaintenance 欄位會包含 maintenanceReasons 欄位。這個欄位說明 VM 排定維護作業的原因,如下表所示:

維護類型 維護原因 VM 狀態
預定維護作業 (定期維護)
  • PLANNED_UPDATE:預定基礎架構維護作業
  • PLANNED_NETWORK_UPDATE:預定網路維護作業
適用於執行中、已停止或已暫停的 VM。
非預定的緊急維護作業
  • FAILURE_DISK:由於 VM 連接的磁碟發生錯誤,因此排定非預期的維護作業。
  • FAILURE_INFRA:基礎架構發生錯誤,因此安排非預期的維護作業。
  • FAILURE_INTERFACE:因 NIC 發生錯誤而排定的非預定維護作業。
  • FAILURE_MEMORY:由於 VM 的記憶體發生錯誤,因此排定非預期維護作業。
  • FAILURE_NETWORK:因網路發生錯誤而排定的非預期維護作業。
僅適用於執行中的 VM。

如要查看 VM 中的 maintenanceReasons 欄位,請使用 gcloud CLI 或 REST API。如要同時查看多個 VM 的維護狀態,請使用 Cloud de Confiance 控制台或 REST API。否則,請選取下列其中一個選項:

控制台

  1. 前往 Cloud de Confiance 控制台的「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 在「維護狀態」欄中,Compute Engine 會顯示 VM 的維護狀態。如果「VM 執行個體」表格中未顯示這個資料欄,請按一下「view_column」view_column「資料欄顯示選項」,選取「維護狀態」核取方塊,然後按一下「確定」。

gcloud

如要查看 VM 的維護狀態,請使用 gcloud compute instances describe 指令和 --flatten=resourceStatus.upcomingMaintenance 旗標:

gcloud compute instances describe VM_NAME \
    --flatten=resourceStatus.upcomingMaintenance \
    --zone=ZONE

更改下列內容:

  • VM_NAME:VM 名稱。

  • ZONE:VM 所在的可用區。

輸出內容會類似下列其中一項:

  • 如果系統已排定 VM 的主機維護事件,輸出內容會類似下列範例:

    ---
    canReschedule: true
    latestWindowStartTime: '2025-11-01T19:00:00Z'
    maintenanceReasons:
    - 'PLANNED_UPDATE'
    - 'PLANNED_NETWORK_UPDATE'
    maintenanceStatus: 'PENDING'
    type: 'SCHEDULED'
    windowEndTime: '2025-11-01T22:00:00Z'
    windowStartTime: '2025-11-01T19:00:00Z'
    
  • 如果 VM 未排定主機維護事件,輸出內容會與下列內容相似:

    ---
    null
    

REST

如要查看 VM 的維護狀態,請提出下列其中一項 GET 要求。提出要求時,您必須加入 fields 查詢參數,只顯示 VM 的名稱、機器類型和即將進行的維護作業。您也必須加入 filter 查詢參數,才能只依特定機器類型篩選 VM。

  • 如要查看所有可用區的 VM,請使用 instances.aggregatedList 方法。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/instances?fields=items.name,items.machineType,items.upcomingMaintenance&filter=machineType%3AMACHINE_TYPE
    
  • 如要查看特定可用區中的 VM,請使用 instances.list 方法。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?fields=items.name,items.machineType,items.upcomingMaintenance&filter=machineType%3AMACHINE_TYPE
    

更改下列內容:

  • PROJECT_ID:您建立 VM 的專案 ID。

  • ZONE:VM 所在的可用區。

  • MACHINE_TYPE:要用來篩選 VM 的機器類型。

如果 VM 已排定主機維護事件,則 VM 會包含 upcomingMaintenance 欄位:

{
  "items": [
    {
      "name": "vm-01",
      "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west4-b/machineTypes/h4d-highmem-192-lssd",
      "resourceStatus": {
        "upcomingMaintenance": {
          "canReschedule": true,
          "latestWindowStartTime": "2024-11-01T19:00:00Z",
          "maintenanceStatus": "PENDING",
          "maintenanceReasons": [
            "PLANNED_UPDATE",
            "PLANNED_NETWORK_UPDATE"
          ],
          "type": "SCHEDULED",
          "windowEndTime": "2024-11-01T22:00:00Z",
          "windowStartTime": "2024-11-01T19:00:00Z"
        }
      }
    },
    ...
  ]
}

視需要將 filter 查詢參數設為其他篩選運算式,進一步縮小 VM 清單範圍。

中繼資料伺服器

如要查看 VM 的維護狀態,請按照下列步驟操作:

  1. 如果尚未連線,請連線至 Linux 或 Windows VM。

  2. 按照下列方式查詢中繼資料伺服器:

    curl http://metadata.google.internal/computeMetadata/v1/instance/upcoming-maintenance?alt=json -H "Metadata-Flavor: Google"
    

    如果 VM 已排定主機維護事件,輸出內容會與下列內容相似:

    "Upcoming maintenance": {
      "can_reschedule": "true",
      "latest_window_start_time": "2024-12-01T19:00:01Z",
      "maintenance_reasons": [
        "PLANNED_UPDATE",
        "PLANNED_NETWORK_UPDATE"
      ],
      "maintenance_status": "PENDING",
      "type": "SCHEDULED",
      "window_end_time": "2024-12-01T21:00:01Z",
      "window_start_time": "2024-12-01T19:00:01Z"
    }
    

    如果未排定主機維護事件,輸出內容會與下列內容相似:

    { }
    

手動開始維護 VM

您可以手動啟動 VM 的維護作業,不必等待排定的時間。

視 VM 的維護狀態而定,系統會執行下列動作:

維護狀態 說明 顯示內容
已排定 Compute Engine 已排定 VM 的維護作業。您可以在排定時間前手動啟動維護作業。
  • 在 Cloud de Confiance 控制台中,維護狀態會顯示為「Ready to run - will run on DATE」(準備執行 - 將於 DATE 執行)。
  • 在 gcloud CLI 或 REST API 中,Compute Engine 會將 maintenanceStatus 欄位設為 PENDING。
進行中 維護作業正在進行中。你無法重新安排時間。
  • 在 Cloud de Confiance 控制台中,維護狀態會顯示為「執行中」。
  • 在 gcloud CLI 或 REST API 中,Compute Engine 會將 maintenanceStatus 欄位設為 ONGOING。
完成 維護作業已完成。Compute Engine 已從 VM 中移除所有維護通知。
  • 在 Cloud de Confiance 控制台中,維護狀態會顯示為「Up-to-date」(最新)。
  • 在 gcloud CLI 或 REST API 中,Compute Engine 會將 maintenanceStatus 欄位設為 COMPLETE。

您可以手動同時為多個 VM 或個別 VM 啟動維護作業。如有多個 VM,請使用 Cloud de Confiance 控制台;如果 VM 位於相同可用區,則可使用 gcloud CLI。如要個別選取 VM,請選取下列任一選項:

控制台

  1. 前往 Cloud de Confiance 控制台的「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 選取要開始維護的 VM 資料列。

  3. 按一下「 執行維護作業」。

  4. 按一下「執行維護」確認操作。

gcloud

如要手動啟動同一可用區內一或多個 VM 的維護作業,請使用 gcloud compute instances perform-maintenance 指令:

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

更改下列內容:

  • VM_NAMES:以空格分隔的 VM 名稱清單,例如 vm-01 vm-02 vm-03。

  • ZONE:VM 所在的可用區。

REST

如要手動啟動 VM 維護作業,請向 instances.performMaintenance 方法發出 POST 要求:

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

更改下列內容:

  • PROJECT_ID:您建立 VM 的專案 ID。

  • ZONE:VM 所在的可用區。

  • VM_NAME:VM 名稱。