管理 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 角色:

  • 專案的 Compute 管理員 (roles/compute.admin)
  • 如要以唯讀存取系統事件稽核記錄: 專案的「記錄檢視者」 (roles/logging.viewer)

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

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

所需權限

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

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

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

總覽

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

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

  2. 設定通知快訊。建立記錄式快訊,在 VM 維護作業排定、開始或完成時接收通知。這個方法有助於您主動規劃活動,避免發生非預期的停機時間。

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

瞭解主機維護

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

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

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

上表顯示的維護頻率為概略值,而非保證值。Compute Engine 有時執行維護的頻率可能會更高。

為 VM 設定通知快訊

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

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

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

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

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

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

  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. 在「查詢」結果工具列中,按一下「動作」清單,然後選取 「建立記錄檔警告」。系統會顯示「建立記錄檔警告政策」窗格。

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

    1. 在「快訊政策名稱」欄位中,輸入政策名稱。

    2. 在「政策嚴重程度」清單中,選取「警告」 (或更嚴重的程度)。

    3. 點選「下一步」

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

  8. 在「設定通知頻率和自動關閉時間長度」部分,指定下列項目:

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

    2. 在「事件自動關閉期限」清單中,選取 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 instances」(虛擬機器執行個體) 表格中未顯示這個資料欄,請按一下「Column display options」(資料欄顯示選項) view_column,選取「Maintenance status」(維護狀態) 核取方塊,然後按一下「OK」(確定)

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"
        }
      }
    },
    ...
  ]
}

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

中繼資料伺服器

如要查看 VM 的維護狀態,請執行下列操作:

  1. 如果尚未連線,請連線至 LinuxWindows 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 控制台中,維護狀態會顯示為「最新版本」
  • 在 gcloud CLI 或 REST API 中,Compute Engine 會將 maintenanceStatus 欄位設為 COMPLETE

您可以同時或個別為多個 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 名稱。