管理 H4D VM 的主機事件

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

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

事前準備

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

In the Google Cloud console, activate Cloud Shell.

Activate Cloud Shell

At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

REST

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

    安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

    gcloud init

    若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

詳情請參閱 Google Cloud 驗證說明文件中的「使用 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. 前往 Google Cloud 控制台的「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. 在「誰會收到通知?」部分,指定 Logging 要傳送通知的通知管道

  10. 按一下 [儲存]

如要在記錄檔探索工具中查看維護事件通知範例,請參閱 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 的維護狀態,請使用 Google Cloud 控制台或 REST API。否則,請選取下列其中一個選項:

控制台

  1. 前往 Google Cloud 控制台的「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 的維護作業。您可以在排定的時間前手動啟動維護作業。
  • 在 Google Cloud 控制台中,維護狀態會顯示為「Ready to run - will run on DATE」(準備執行 - 將於 DATE 執行)。
  • 在 gcloud CLI 或 REST API 中,Compute Engine 會將 maintenanceStatus 欄位設為 PENDING
進行中 維護作業正在進行中。你無法重新安排發布時程。
  • 在 Google Cloud 控制台中,維護狀態會顯示為「Running」(執行中)
  • 在 gcloud CLI 或 REST API 中,Compute Engine 會將 maintenanceStatus 欄位設為 ONGOING
完成 維護作業已完成。Compute Engine 已從 VM 中移除所有維護通知。
  • 在 Google Cloud 控制台中,維護狀態會顯示為「最新版本」
  • 在 gcloud CLI 或 REST API 中,Compute Engine 會將 maintenanceStatus 欄位設為 COMPLETE

您可以同時或個別為多個 VM 手動啟動維護作業。如要為多個 VM 執行這項操作,請使用 Google Cloud 控制台,或為位於同一區域的 VM 使用 gcloud CLI。如要個別選取 VM,請選取下列任一選項:

控制台

  1. 前往 Google Cloud 控制台的「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 名稱。