本文說明如何使用 H4D VM 提供的主機維護功能。本文說明如何監控、規劃及執行虛擬機器 (VM) 執行個體的排定維護作業。如要管理預留容量區塊的維護作業 (無論 VM 是否在其中執行),請改為參閱「管理所有預留項目的主機事件」。
主動管理 VM 即將進行的主機維護事件,可將中斷情形降到最低,並維持最佳效能。
事前準備
請根據您打算如何使用本頁範例,選取對應的分頁標籤:
控制台
使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,您不需要設定驗證機制。
gcloud
安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。 登入後,執行下列指令來初始化 Google Cloud CLI:
gcloud initREST
如要在本機開發環境中使用本頁的 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 維護作業,請完成下列步驟:
瞭解主機維護作業。根據 VM 的機器系列,瞭解 VM 的維護頻率和行為。這項資訊有助於盡量減少工作負載中斷。
設定通知快訊。建立記錄式快訊,即可在 VM 維護作業排定、開始或完成時收到通知。這種做法有助於主動規劃活動,避免意外停機。
管理所有 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 的維護事件建立警告,請完成下列程序。針對要建立的每個快訊,重複執行這項程序。
-
前往 Cloud de Confiance 控制台的 「Logs Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
將「Show query」(顯示查詢) 切換鈕設為開啟。
在「查詢」窗格中,建立下列其中一個查詢。這些查詢會篩選記錄項目,找出特定維護事件。如要使用多個查詢,請重複這項程序,為每個查詢建立專屬快訊。
如要在 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"
如要驗證查詢,請按一下「執行查詢」。如果查詢有效,「Query results」(查詢結果) 窗格會顯示符合查詢的記錄項目。
在「查詢」結果工具列中,按一下「動作」清單,然後選取 「建立記錄檔快訊」。系統會顯示「Create logs-based alert policy」(建立記錄檔警告政策) 窗格。
在「警報詳細資料」部分,執行下列操作:
在「Alert Policy Name」(警告政策名稱) 欄位中,輸入政策名稱。
在「Policy severity level」(政策嚴重性等級) 清單中,選取「Warning」(警告) (或更高的嚴重性)。
點選「下一步」。
在「Choose logs to include in the alert」(選擇要加入快訊的記錄檔) 區段中,按一下「Next」(下一步)。
在「Set notification frequency and autoclose duration」(設定通知頻率和自動關閉期限) 區段中,指定下列項目:
在「通知時間間隔」清單中,選取接收通知的頻率。
在「Incident autoclose duration」(事件自動關閉期限) 清單中,選取 Cloud Logging 停止傳送通知並自動關閉事件的時間。
點選「下一步」。
在「Who should be notified?」(應該通知誰?) 部分,指定 Logging 要傳送通知的通知管道。
按一下 [儲存]。
如要在 Logs Explorer 中查看維護事件通知範例,請參閱 Compute Engine 說明文件中的「維護通知範例」。
管理各個 VM 的維護作業
您可以執行下列一或多項操作,查看及控管 VM 的維護作業:
如要查看 VM 即將進行維護的狀態和排定時間,請查看 VM 的維護狀態。
如要立即開始維護 VM,而非等待排定的維護時間,請手動啟動 VM 維護作業。
查看 VM 的維護狀態
如要查看 VM 即將進行的維護作業狀態和排定時間,請檢查執行個體中繼資料的 upcomingMaintenance 欄位值。如果 VM 不含 upcomingMaintenance 欄位,則表示該 VM 未排定任何主機維護事件。如要進一步瞭解 upcomingMaintenance 中的欄位,請參閱 Compute Engine 說明文件中的「維護狀態定義」。
此外,如果 VM 已排定維護作業,upcomingGroupMaintenance 欄位會包含 maintenanceReasons 欄位。這個欄位說明 VM 排定維護作業的原因,如下表所示:
| 維護類型 | 維護原因 | VM 狀態 |
|---|---|---|
| 預定維護作業 (定期維護) |
|
適用於執行中、已停止或已暫停的 VM。 |
| 非預定的緊急維護作業 |
|
僅適用於執行中的 VM。 |
如要查看 VM 中的 maintenanceReasons 欄位,請使用 gcloud CLI 或 REST API。如要同時查看多個 VM 的維護狀態,請使用 Cloud de Confiance 控制台或 REST API。否則,請選取下列其中一個選項:
控制台
前往 Cloud de Confiance 控制台的「VM instances」(VM 執行個體) 頁面。
在「維護狀態」欄中,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 的維護狀態,請按照下列步驟操作:
如果尚未連線,請連線至 Linux 或 Windows VM。
按照下列方式查詢中繼資料伺服器:
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 的維護作業。您可以在排定時間前手動啟動維護作業。 |
|
| 進行中 | 維護作業正在進行中。你無法重新安排時間。 |
|
| 完成 | 維護作業已完成。Compute Engine 已從 VM 中移除所有維護通知。 |
|
您可以手動同時為多個 VM 或個別 VM 啟動維護作業。如有多個 VM,請使用 Cloud de Confiance 控制台;如果 VM 位於相同可用區,則可使用 gcloud CLI。如要個別選取 VM,請選取下列任一選項:
控制台
前往 Cloud de Confiance 控制台的「VM instances」(VM 執行個體) 頁面。
選取要開始維護的 VM 資料列。
按一下「 執行維護作業」。
按一下「執行維護」確認操作。
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 名稱。