管理所有預留項目的主機事件

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

您可以主動管理預留容量區塊上即將進行的維護主機事件,無論 VM 是否在這些區塊上執行都適用。這種做法有助於盡量減少中斷,並維持最佳成效。 <0x

事前準備

  • 如果尚未設定驗證,請先完成設定。 驗證程序會確認您的身分,以便授予 Cloud de Confiance by S3NS 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:

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

    控制台

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

    gcloud

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

      gcloud init
  • 設定預設區域和可用區。
  • REST

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

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

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

必要的角色

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

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

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

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

所需權限

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

  • 如要為預留項目啟動主機維護作業,請按照下列步驟操作: compute.reservations.performMaintenance 專案
  • 如要為預留區塊啟動主機維護作業,請按照下列步驟操作: compute.reservationBlocks.performMaintenance 在專案上

    • 如要查看預留項目清單

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

    總覽

    如要最佳化預留容量區塊的維護作業,請完成下列步驟:

    1. 設定通知快訊。建立記錄式警告,在預留項目或預留項目區塊的維護作業排定、開始或完成時,接收通知。這種做法有助於您主動規劃活動,避免發生意外停機。

    2. 管理各個容量區塊的維護作業。查看並視需要手動啟動預留項目或預留區塊的維護作業。這項程序可提高工作負載對主機錯誤的韌性、避免停機,並確保應用程式持續可用。

    如要進一步瞭解 H4D 機型維護作業的頻率和行為,請參閱「H4D 執行個體的維護體驗」。

    設定預留項目的通知快訊

    如要接收預訂或預訂區塊的排定、開始或完成維護事件通知,請建立以記錄為準的警告政策。

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

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

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

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

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

    3. 在「查詢」窗格中,建立下列其中一個查詢。這些查詢會篩選記錄檔項目,找出特定維護事件。針對要建立的每個查詢,重複執行這個程序。

      • 接收預訂項目的維護快訊:

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

          protoPayload.methodName="compute.reservations.upcomingGroupMaintenance" severity>=DEFAULT
          protoPayload.status.message =~ "scheduled"
          
        • 如要在維護完成時收到快訊,請按照下列步驟操作:

          protoPayload.methodName="compute.reservations.completedGroupMaintenance" severity>=DEFAULT
          protoPayload.status.message =~ "completed"
          
      • 接收預留項目模塊的維護快訊:

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

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

          protoPayload.methodName="compute.reservations.block.startGroupMaintenance" severity>=DEFAULT
          protoPayload.status.message =~ "started"
          
        • 如要在維護完成時收到快訊,請按照下列步驟操作:

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

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

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

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

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

      3. 點選「下一步」。

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

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

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

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

      3. 點選「下一步」。

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

    10. 按一下 [儲存]。

    管理預留項目的維護作業

    您可以查看及控管預留項目和預留項目區塊的維護作業,如下所示:

    • 如要查看預留項目或預留區塊的狀態和預定維護時間,請查看維護狀態。

    • 如要手動啟動預留項目或預留區塊的維護作業,不必等待排定的維護日期和時間,請手動啟動維護作業。

    • 如要管理 VM 主機在發生主機錯誤或故障主機報告後,需要緊急、非預定維護時,您希望提前多久收到通知,請管理硬體緊急維護通知。

    查看維護狀態

    如要查看預訂或預訂區塊的近期維護狀態,請檢查預訂中繼資料的 upcomingGroupMaintenance 欄位值。如果預留項目缺少 upcomingGroupMaintenance 欄位,則表示預留項目或預留項目區塊未排定任何維護作業。如要進一步瞭解 upcomingGroupMaintenance 中的欄位,請參閱「維護狀態定義」。

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

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

    如要在預訂區塊或子區塊中查看 maintenanceReasons 欄位,請使用 gcloud CLI 或 REST API。否則,請選取下列其中一個選項:

    控制台

    1. 前往 Cloud de Confiance 控制台的「Reservations」(預留項目) 頁面。

      前往「Reservations」(預留項目) 頁面

    2. Compute Engine 會在「Maintenance status」(維護狀態) 欄中顯示預留項目的維護狀態。如果「隨選預訂」表格中未顯示這個資料欄,請按一下「資料欄顯示選項」,選取「維護狀態」核取方塊,然後按一下「確定」。

    3. 如要查看預留區塊的維護狀態,請完成下列步驟:

      1. 在「Name」(名稱) 欄中,按一下預訂名稱。系統會顯示預訂詳細資料頁面。

      2. 在「區塊」表格的「維護」欄中,Compute Engine 會顯示預訂項目內區塊的維護狀態。

    gcloud

    1. 如要查看預留資源的維護狀態,請使用 gcloud compute reservations describe 指令,並將 --flatten 旗標設為 resourceStatus.reservationMaintenance:

      gcloud compute reservations describe RESERVATION_NAME \
          --flatten=resourceStatus.reservationMaintenance \
          --zone=ZONE
      

      更改下列內容:

      • RESERVATION_NAME:預留項目名稱。

      • ZONE:預留項目所在的可用區。

      輸出結果會與下列內容相似:

      • 如果預留項目已排定維護作業,輸出內容會與下列內容相似:

        ---
        maintenanceOngoingCount: 0
        maintenancePendingCount: 6
        schedulingType: GROUPED
        upcomingGroupMaintenance:
          canReschedule: true
          maintenanceStatus: PENDING
          type: UNSCHEDULED
          windowEndTime: '2025-11-13T14:00:00.000-08:00'
          windowStartTime: '2025-11-13T12:00:00.000-08:00'
        

        如果 schedulingType 欄位設為 INDEPENDENT,則 upcomingGroupMaintenance 欄位不會包含 windowStartTime 和 windowEndTime 欄位。

      • 如果預留項目未排定維護作業,輸出內容會類似下列內容:

        ---
        schedulingType: GROUPED
        
    2. 如果預留項目已排定維護作業,請使用 gcloud compute reservations blocks list 指令,查看預留項目中區塊的維護狀態:

      gcloud compute reservations blocks list RESERVATION_NAME \
          --zone=ZONE
      

      如果預留項目區塊已排定或正在進行維護,輸出內容會類似於下列範例:

      ---
      ...
      name: example-fr-h4d-dense-1-block-0001
      ...
      reservationBlockMaintenance:
        maintenanceOngoingCount: 0
        maintenancePendingCount: 6
        schedulingType: GROUPED
        upcomingGroupMaintenance:
          canReschedule: true
          maintenanceReasons:
          - PLANNED_UPDATE
          - PLANNED_NETWORK_UPDATE
          maintenanceStatus: PENDING
          type: UNSCHEDULED
          windowEndTime: '2025-11-13T14:00:00.000-08:00'
          windowStartTime: '2025-11-13T12:00:00.000-08:00'
      ...
      ---
      ...
      name: example-fr-h4d-dense-1-block-0002
      ...
      schedulingType: GROUPED
      ...
      

    REST

    1. 如要查看預訂的維護狀態,請透過下列其中一種方法提出 GET 要求:

      在要求網址中加入下列查詢參數:

      • 如要只顯示預留項目的名稱、預留機型和維護狀態,請加入設為 items.name,items.specificReservation.instanceProperties.machineType,items.resourceStatus.reservationMaintenance 的 fields 查詢參數。

      • 如要只依指定機型篩選預訂項目,請加入 filter 查詢參數,並使用網址編碼值將該參數設為 specificReservation.instanceProperties.machineType:MACHINE_TYPE。

      舉例來說,如要查看所有區域的預留項目,請提出如下所示的 GET 要求:

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/reservations?fields=items.name,items.specificReservation.instanceProperties.machineType,items.resourceStatus.reservationMaintenance&filter=specificReservation.instanceProperties.machineType%3AMACHINE_TYPE
      

      更改下列內容:

      • PROJECT_ID:預訂項目所在的專案 ID。

      • MACHINE_TYPE:要用來篩選預留項目類型的預留機型。

      如果預訂項目已排定或正在進行維護,輸出內容會類似於下列範例:

      {
        "items": [
          {
            "specificReservation": {
              "instanceProperties": {
                "machineType": "MACHINE_TYPE"
              }
            },
            "name": "example-reservation",
            "resourceStatus": {
              "reservationMaintenance": {
                maintenanceOngoingCount: 0,
                maintenancePendingCount: 6,
                "schedulingType": "GROUPED",
                "upcomingGroupMaintenance": {
                  "type": "SCHEDULED",
                  "canReschedule": true,
                  "windowStartTime": "2025-11-13T12:00:00.000-08:00",
                  "windowEndTime": "2025-11-13T14:00:00.000-08:00",
                  "maintenanceStatus": "PENDING"
                }
              }
            }
          },
          ...
        ]
      }
      

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

    2. 如果預留項目已排定維護作業,請向 reservationBlocks.list 方法傳送 GET 要求,查看預留項目中區塊的維護狀態。在要求網址中,加入設為 items.name,items.reservationMaintenance 的 fields 查詢參數:

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks?fields=items.name,items.reservationMaintenance
      

      將 RESERVATION_NAME 替換為預留項目名稱。

      如果預留項目區塊已排定或正在進行維護,輸出內容會類似於下列範例:

      {
        "items": [
          {
            "name": "example-fr-h4d-dense-1-block-0001",
            "reservationBlockMaintenance": {
              "maintenanceOngoingCount": 0,
              "maintenancePendingCount": 6,
              "schedulingType": "GROUPED",
              "upcomingGroupMaintenance": {
                "type": "SCHEDULED",
                "canReschedule": true,
                "windowStartTime": "2025-11-13T12:00:00.000-08:00",
                "windowEndTime": "2025-11-13T14:00:00.000-08:00",
                "maintenanceStatus": "PENDING",
                "maintenanceReasons": [
                  "PLANNED_UPDATE",
                  "PLANNED_NETWORK_UPDATE"
                ]
              }
            }
          },
          ...
        ]
      }
      

      如果將區塊的 schedulingType 欄位設為 INDEPENDENT,則 upcomingGroupMaintenance 欄位不會包含 windowStartTime 和 windowEndTime 欄位。

    手動啟動維護作業

    您可以手動啟動預留項目或預留區塊的維護作業,不必等到排定的時間。這項操作可協助您更主動地控管工作負載中斷情形。

    視預留項目或預留項目區塊的維護狀態而定,系統會執行下列操作:

    維護狀態 說明 顯示內容
    已排定 Compute Engine 已排定預留資源的維護作業。 您可以手動啟動維護作業,不必等到排定的時間。
    • 在 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 中,沒有 maintenanceStatus 欄位。

    如要手動啟動預訂區塊內特定主機的維護作業,請使用 gcloud CLI 或 REST API。否則,請選取下列其中一個選項:

    控制台

    1. 前往 Cloud de Confiance 控制台的「Reservations」(預留項目) 頁面。

      前往「Reservations」(預留項目) 頁面

    2. 在「Name」(名稱) 欄中,按一下預訂名稱。系統會顯示預留項目的詳細資料頁面。

    3. 按一下「執行維護作業」,然後選取下列其中一個選項:

      • 如要對所有區塊進行維護,請選取「所有容量」。

      • 如要只對執行 VM 的區塊進行維護,請選取「In-use capacity」(使用中的容量)。

      • 如要只對未使用的區塊,以及 VM 已停止或暫停的區塊進行維護,請選取「Unused capacity」(未使用的容量)。

    4. 按一下「確定」確認這項操作。

    gcloud

    • 如要開始維護預留項目,請使用 gcloud compute reservations perform-maintenance 指令:

      gcloud compute reservations perform-maintenance RESERVATION_NAME \
          --scope=RESERVATION_MAINTENANCE_SCOPE \
          --zone=ZONE
      
    • 如要開始維護預留項目區塊,請使用 gcloud compute reservations blocks perform-maintenance 指令:

      gcloud compute reservations blocks perform-maintenance RESERVATION_NAME \
          --block-name=BLOCK_NAME \
          --scope=BLOCK_MAINTENANCE_SCOPE \
          --zone=ZONE
      

      更改下列內容:

    • RESERVATION_NAME:預訂名稱。

    • RESERVATION_MAINTENANCE_SCOPE:預留項目的維護範圍。請指定下列其中一個值:

      • 如要對所有區塊執行維護作業,請按一下 all。

      • 如要只對執行 VM 的區塊進行維護,請執行下列指令:running

      • 如要只對未使用和含有已停止/暫停 VM 的區塊執行維護作業,請按照下列步驟操作:unused

    • BLOCK_NAME:預留項目中現有區塊的名稱。

    • BLOCK_MAINTENANCE_SCOPE:預留區塊的維護範圍。請指定下列其中一個值:

      • 如要對所有主機啟動維護作業,請執行 all。

      • 如要只對執行 VM 的主機進行維護,請執行下列指令:running

      • 如要只對閒置主機,以及 VM 已停止或暫停的主機執行維護作業,請執行下列指令:unused

    • ZONE:預留項目所在的可用區。

    REST

    • 如要開始維護預留項目,請向 reservations.performMaintenance 方法發出 POST 要求:

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/performMaintenance
      
      {
        "maintenanceScope": "RESERVATION_MAINTENANCE_SCOPE"
      }
      
    • 如要對預留區塊啟動維護作業,請向 reservationBlocks.performMaintenance 方法發出 POST 要求:

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAME/performMaintenance
      
      {
        "maintenanceScope": "BLOCK_MAINTENANCE_SCOPE"
      }
      

    更改下列內容:

    • PROJECT_ID:Compute Engine 自動建立預留項目的專案 ID。

    • ZONE:預留項目所在的可用區。

    • RESERVATION_NAME:預訂名稱。

    • RESERVATION_MAINTENANCE_SCOPE:預訂的維護範圍。指定下列其中一個值:

      • 如要對所有區塊執行維護作業,請按一下 ALL。

      • 如要只對執行 VM 的區塊啟動維護作業,請執行以下步驟:RUNNING

      • 如要只對未使用和含有已停止/暫停 VM 的區塊執行維護作業,請按照下列步驟操作:UNUSED

    • BLOCK_NAME:預留項目中現有區塊的名稱。

    • SUB_BLOCK_NAME:預留區塊中現有子區塊的名稱。

    • BLOCK_MAINTENANCE_SCOPE:預留區塊的維護範圍。請指定下列其中一個值:

      • 如要對所有主機啟動維護作業,請執行 ALL。

      • 如要只對執行 VM 的主機啟動維護作業,請執行以下步驟:RUNNING

      • 如要只對未使用的主機,以及已停止或暫停 VM 的主機執行維護作業,請按照下列步驟操作:UNUSED

    管理硬體緊急維護通知

    VM 發生主機錯誤或您回報主機故障後,VM 的主機需要進行緊急的臨時維護。根據預設,Compute Engine 會在排定這類維護作業前幾小時提前通知。如果是預留主機,您可以啟用緊急維護通知,將通知期限延長至至少七天。這種做法可讓您更主動地控管工作負載中斷情形。

    如要為預訂項目啟用或停用硬體緊急維護通知,請選取下列其中一個選項:

    gcloud

    • 如要啟用預留項目的硬體緊急維護通知,請使用 gcloud compute reservations update 指令,並加上 --enable-emergent-maintenance 旗標:

      gcloud compute reservations update RESERVATION_NAME \
          --enable-emergent-maintenance \
          --zone=ZONE
      
    • 如要停用預訂的硬體緊急維護通知,請使用 gcloud compute reservations update 指令,並加上 --no-enable-emergent-maintenance 旗標:

      gcloud compute reservations update RESERVATION_NAME \
          --no-enable-emergent-maintenance \
          --zone=ZONE
      

    更改下列內容:

    • RESERVATION_NAME:預留項目名稱。

    • ZONE:預留項目所在的可用區。

    REST

    如要啟用或停用預留項目的硬體緊急維護通知,請向 reservations.update 方法發出 PATCH 要求。在要求網址中,加入設為 enableEmergentMaintenance 的 paths 查詢參數。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME?paths=enableEmergentMaintenance
    
    {
      "name": "RESERVATION_NAME",
      "enableEmergentMaintenance": EMERGENCY_MAINTENANCE_NOTIFICATIONS
    }
    

    更改下列內容:

    • PROJECT_ID:預留項目所在的專案 ID。

    • ZONE:預留項目所在的可用區。

    • RESERVATION_NAME:預訂名稱。

    • EMERGENCY_MAINTENANCE_NOTIFICATIONS:指定下列其中一個值:

      • 如要啟用通知,請點選 true。

      • 如要停用通知,請按照下列步驟操作:false

    後續步驟