回報出錯的主機

如果發現預留 H4D VM 發生問題,且無法以其他方式解決 (例如 RDMA 裝置持續發生錯誤),建議您回報主機故障。當您回報主機故障時,Compute Engine 會將主機回報為故障,然後執行主機維護作業,自動修復 VM。對於 H4D VM,Compute Engine 會在維護作業開始時,嘗試將 VM 遷移至其他主機,盡量縮短工作負載的停機時間。

本文說明如何回報及修復虛擬機器 (VM) 叢集中 VM 執行個體的故障主機。如果是 Google Kubernetes Engine (GKE) 叢集,請參閱「透過 GKE 檢舉故障主機」。

限制

回報出錯的主機時,請注意以下限制:

  • 只有在主機上執行的 VM 符合下列所有條件時,您才能回報主機有錯誤:

    • VM 正在執行中。

    • VM 使用 H4D 機型。

    • VM 使用取決於預留項目的佈建模式。

  • Cloud de Confiance by S3NS 會盡力滿足所有回報主機故障的要求。不過,由於容量限制或頻率限制,要求不一定能完成。

事前準備

  • 選取這個頁面上範例的預計用途分頁:

    控制台

    使用 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 進行驗證」。

必要的角色

如要取得回報主機故障所需的權限,請要求管理員授予您下列 IAM 角色:

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

這些預先定義的角色具備回報主機故障所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要回報主機故障,必須具備下列權限:

  • 如要建立出錯的主機報告,請在 VM 上執行 compute.instances.update。
  • 如要使用 Logging 查看作業清單,請按照以下步驟操作: logging.operations.list 在專案中
  • 如要使用 Logging 查看作業詳細資料: logging.operations.get 在專案中
  • 如要查看 Compute Engine 中的作業清單: compute.zoneOperations.list 在專案中
  • 如要查看 Compute Engine 作業的詳細資料: compute.zoneOperations.describe 在專案中

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

瞭解出錯主機回報程序

回報 H4D VM 的主機故障後,H4D VM 重新啟動的時間會因您建立 VM 時使用的預留項目預留項目作業模式而異。如要驗證預訂的預留作業模式,請查看預訂中的 reservationOperationalMode 欄位。

受管理模式 (HIGHLY_AVAILABLE_CAPACITY)
支援的機型 H4D
Faulty host report API 頻率限制 對 API 的呼叫可能會受到速率限制。
主機故障回報程序

如果為以管理模式執行的 H4D VM 回報錯誤主機,會發生下列情況:

  1. 回報有問題的主機:在回報作業期間,VM 會維持 RUNNING 狀態,通常需要 10 到 12 分鐘才能完成。如要查看作業狀態,請參閱本文件中的「查看報告故障主機作業」一節。
  2. 開始修復主機:回報出錯的主機作業完成後,主機修復作業會在 1 分鐘內開始。

    維修主機作業開始時,VM 會停止運作,狀態也會根據為 VM 指定的自動重新啟動 (automaticRestart) 設定而變更:

    • 如果 VM 啟用自動重新啟動功能,VM 狀態會變更為 REPAIRING。除非您先停止 VM,否則 VM 會在主機健康狀態良好時自動重新啟動。
    • 如果 VM 停用自動重新啟動功能,VM 狀態會變更為 TERMINATED。主機恢復正常後,您必須手動重新啟動 VM。

    維修故障主機可能需要 3 到 14 天,有時甚至更久。

  3. 遷移並重新啟動 VM:主機修復作業開始後 (通常需要 10 到 12 分鐘),Compute Engine 會嘗試預留另一部主機,以取代預留容量中回報有問題的主機。如果 Compute Engine 找到健康的主機 (成功更換故障主機,或在預留容量中找到相符的健康主機),就會將 VM 遷移至該主機。接著,透過下列其中一種方式重新啟動 VM:
    • 如果 VM 處於 REPAIRING 狀態,且在修復完成前或完成時有可用資源,Compute Engine 就會自動在健康的主機上重新啟動 VM。
    • 否則,如果 VM 處於 TERMINATED 狀態,或是在修復完成前或完成時無法使用資源,VM 狀態會維持或變更為 TERMINATED。如要執行 VM,請手動重新啟動 VM。不過,如果重新啟動 VM 時沒有可用資源 (例如其他 VM 已使用修復的主機),重新啟動 VM 可能會失敗。

回報出錯的主機

如要回報主機故障,請完成下列步驟:

  1. 查看 VM 執行的主機。

    如需操作說明,請參閱「查看 H4D 叢集拓撲」。

  2. 選用:備份本機 SSD 資料。VM 停止時,Compute Engine 會自動捨棄附加至 VM 的所有本機 SSD 磁碟資料。Compute Engine 捨棄本機 SSD 資料後,您就無法復原。

    如要瞭解如何保留本機 SSD 資料,請參閱「本機 SSD 資料備份」。

  3. 回報出錯的主機。如要回報出錯的主機,請選取下列其中一個選項。主機修復作業會立即啟動,在回報故障主機作業完成後的一分鐘內啟動。如果啟動錯誤主機報表作業後,VM 停止回應,建議您等待至少 15 分鐘後再重新啟動 VM。

    gcloud

    如要回報出錯的主機,請使用下列 gcloud compute instances report-host-as-faulty 指令:

    gcloud compute instances report-host-as-faulty VM_NAME \
        --async \
        --disruption-schedule=IMMEDIATE \
        --fault-reasons=behavior=FAULT_REASON,description=DESCRIPTION \
        --zone=ZONE
    

    更改下列內容:

    • VM_NAME:VM 名稱。

    • FAULT_REASON:VM 遇到的主機問題清單,以半形逗號分隔,例如 ISSUE_1,ISSUE_2。可指定的值如下:

      • PERFORMANCE:CPU 或 Cloud RDMA 網路作業效能下降、IRDMA 網路介面故障,或 IRDMA 網路裝置不存在。

      • SILENT_DATA_CORRUPTION:VM 中出現資料損毀情形,但 VM 仍持續執行。無聲資料損毀可能是因為 vCPU 缺陷、軟體錯誤或核心問題等。

      • BEHAVIOR_UNSPECIFIED:不確定 VM 受到什麼問題影響,或問題不屬於其他選項涵蓋的範圍。

    • DESCRIPTION:影響 VM 的問題說明,例如 XID 資訊或疑似效能問題。

    • ZONE:VM 所在的可用區。

    REST

    如要回報出錯的主機,請對 instances.reportHostAsFaulty 方法發出下列 POST 要求。

    回報故障主機時,您可以一次指定多個故障原因。舉例來說,如要指定兩個錯誤原因,請按照下列方式提出要求:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/reportHostAsFaulty
    
    {
      "disruptionSchedule": "IMMEDIATE",
      "faultReasons": [
        {
          "behavior": "FAULT_REASON_1",
          "description": "DESCRIPTION_1"
        },
        {
          "behavior": "FAULT_REASON_2",
          "description": "DESCRIPTION_2"
        }
      ]
    }
    

    更改下列內容:

    • PROJECT_ID:VM 所在的專案 ID。

    • ZONE:VM 所在的可用區。

    • VM_NAME:VM 的名稱。

    • FAULT_REASON_1 和 FAULT_REASON_2:VM 遇到的各項主機問題。可指定的值如下:

      • PERFORMANCE:您發現 CPU 或 RDMA 網路作業效能降低、RDMA 裝置故障,或是 RDMA 裝置不存在。

      • SILENT_DATA_CORRUPTION:VM 中的資料損毀,但 VM 仍持續運作。無聲資料損毀可能是 vCPU 缺陷、軟體錯誤或核心問題所致。

      • BEHAVIOR_UNSPECIFIED:不確定 VM 的問題為何。

    • DESCRIPTION_1 和 DESCRIPTION_2:您指定的每個主機問題說明,例如 XID 資訊或疑似效能問題。

查看回報出錯主機作業

回報主機故障後,Compute Engine 會啟動一系列作業,將主機標示為故障,並準備維修主機。具體來說,在回報出錯的主機作業期間,會發生下列程序:

  1. 將主機標示為出錯。Compute Engine 會建立報告,指出主機作業發生錯誤。接著,回報出錯的主機作業會建立一系列子作業。這些子作業會將基礎主機標示為故障。

  2. 準備主機送修。所有子作業完成後,系統會開始回報主機故障作業。Compute Engine 會停止 VM,並啟動修復故障主機作業。根據 VM 使用的預留項目中指定的預留項目運作模式,以及是否有可用的健全主機,Compute Engine 會讓 VM 保持停止狀態,或是嘗試自動遷移並重新啟動 VM。

  3. 完成報告並修復主機。Compute Engine 會完成回報出錯主機作業,並執行主機修復作業。

如要追蹤專案中回報故障主機 (compute.instances.reportHostAsFaulty) 作業的狀態,請選取下列其中一個選項。如要進一步瞭解可用於追蹤修復、遷移和自動重新啟動的其他作業,請參閱 Compute Engine 說明文件中的「維護和重新啟動行為」和「監控及規劃主機維護事件」。

控制台 (VM 作業)

  1. 前往 Cloud de Confiance 控制台的「Operations」頁面。

    前往「Operations」(作業) 頁面

  2. 在顯示的表格中,找出您回報的 VM。

  3. 在含有 VM 的資料列中,您可以在「狀態」欄中查看回報主機故障作業的狀態。作業完成後,值會是「Done」(完成)。

  4. 選用:如要確認 Compute Engine 是否已重新啟動 VM,請查看 VM 的詳細資料。

控制台 (VM 記錄)

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

    前往 Logs Explorer

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

  3. 在查詢編輯器中輸入下列查詢:

    resource.type="gce_instance" AND protoPayload.methodName=~"compute\.instances\.reportHostAsFaulty"
    
  4. 按一下「Run query」(執行查詢)。「Query results」(查詢結果) 窗格會顯示查詢結果。

gcloud

  1. 如要查看專案中回報故障主機作業的狀態,請使用 gcloud compute operations list 指令,並將 --filter 旗標設為 operationType:compute.instances.reportHostAsFaulty:

    gcloud compute operations list --filter="operationType:compute.instances.reportHostAsFaulty"
    
  2. 如要查看特定錯誤主機作業的詳細資料,請使用 gcloud compute operations describe 指令:

    gcloud compute operations describe OPERATION_NAME \
        --zone="ZONE"
    

    更改下列內容:

    • OPERATION_NAME:作業名稱。

    • ZONE:作業所在的可用區。

REST

如要查看專案中回報出錯主機作業的狀態,請對 zoneOperations.list 方法發出 GET 要求。在要求網址中,加入設為 items.operationType:compute.instances.reportHostAsFaulty 的 filter 查詢參數。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations&filter=items.operationType:compute.instances.reportHostAsFaulty

更改下列內容:

  • PROJECT_ID:作業名稱。

  • ZONE:作業所在的可用區。

後續步驟