ホストの不具合を報告する

予約済みの H4D VM で、RDMA デバイスに関する永続的なエラーなど、他の方法では解決できない問題が発生した場合は、ホストに障害があると報告することをおすすめします。ホストに障害があると報告すると、Compute Engine はホストに障害があると報告し、ホスト メンテナンスを実行して VM を自動的に修復します。H4D VM の場合、メンテナンスが開始されると、Compute Engine は VM を別のホストに移行しようとします。これにより、ワークロードのダウンタイムを最小限に抑えることができます。

このドキュメントでは、VM ベースのクラスタに属する仮想マシン(VM)インスタンスの障害のあるホストを報告して修復する方法について説明します。Google Kubernetes Engine(GKE)クラスタの場合は、GKE を介して障害のあるホストを報告するをご覧ください。

制限事項

障害のあるホストを報告する場合、次の制限が適用されます。

  • ホストで実行されている VM が次の条件をすべて満たしている場合にのみ、障害のあるホストを報告できます。

    • VM が実行されている。

    • VM は H4D マシンタイプを使用します。

    • VM が予約にバインドされたプロビジョニング モデルを使用すること。

  • Google Cloud は、障害のあるホストのレポート リクエストをすべて満たすためにベスト エフォートで試行します。ただし、容量の制約やレート制限により、リクエストが常に満たされるとは限りません。

始める前に

  • 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 に指定した認証情報を使用します。

      Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

必要なロール

障害のあるホストを報告するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

  • VM またはプロジェクトに対する Compute インスタンス管理者(v1) roles/compute.instanceAdmin.v1
  • Cloud Logging を使用して障害のあるホスト レポート オペレーションの状態を表示するには: プロジェクトに対するログビューア roles/logging.viewer

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、障害のあるホストを報告するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

障害のあるホストを報告するには、次の権限が必要です。

  • 障害のあるホストのレポートを作成するには: 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
障害のあるホストレポート 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 が正常なホストを見つけた場合(障害のあるホストの置き換えに成功した場合や、予約済み容量で一致する正常なホストを見つけた場合など)、Compute Engine は VM をそのホストに移行します。VM の再起動は、次のいずれかで行われます。
    • VM が REPAIRING 状態にあり、修復が完了する前または完了時にリソースが使用可能な場合、Compute Engine は正常なホストで VM を自動的に再起動します。
    • それ以外の場合、VM が TERMINATED 状態の場合、または修復が完了する前または完了時にリソースが使用できない場合、VM の状態は TERMINATED のままになるか、TERMINATED に変更されます。実行する場合は、VM を手動で再起動する必要があります。ただし、VM の再起動時にリソースが使用できない場合(修復されたホストを他の VM がすでに使用している場合など)、VM の再起動が失敗することがあります。

ホストの不具合を報告する

障害のあるホストを報告する手順は次のとおりです。

  1. VM が実行されているホストを確認します

    手順については、H4D クラスタ トポロジを表示するをご覧ください。

  2. 省略可: ローカル SSD データをバックアップします。VM が停止すると、Compute Engine は VM にアタッチされているローカル SSD ディスクのデータを自動的に破棄します。Compute Engine がローカル SSD データを破棄した後は、復元できません。

    ローカル SSD データを保持する手順については、ローカル SSD データのバックアップをご覧ください。

  3. ホストの不具合を報告します。ホストの不具合を報告するには、次のいずれかのオプションを選択します。ホストの修復オペレーションは、障害のあるホストの報告オペレーションが完了してから 1 分以内に開始されます。障害のあるホスト レポート オペレーションを開始した後に 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 リクエストを送信します。

    障害のあるホストを報告するときに、複数の障害理由を一度に指定できます。たとえば、2 つの障害理由を指定するには、次のようにリクエストを送信します。

    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_1FAULT_REASON_2: VM で発生した各ホストの問題。指定できる値は次のとおりです。

      • PERFORMANCE: CPU または RDMA ネットワーク オペレーションのパフォーマンス低下、RDMA デバイスの障害、RDMA デバイスが存在しないことが確認されます。

      • SILENT_DATA_CORRUPTION: VM でデータ破損が発生していますが、VM の実行は継続されています。サイレント データ破損は、vCPU の不良、ソフトウェアのバグ、カーネルの問題などが原因で発生することがあります。

      • BEHAVIOR_UNSPECIFIED: VM の問題が何であるかわからない。

    • DESCRIPTION_1DESCRIPTION_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. Google Cloud コンソールで、[オペレーション] ページに移動します。

    [オペレーション] に移動

  2. 表示されたテーブルで、報告した VM を探します。

  3. VM を含む行の [ステータス] 列で、障害のあるホストの報告オペレーションのステータスを確認できます。オペレーションが完了すると、値は Done になります。

  4. 省略可: Compute Engine が VM を再起動したかどうかを確認するには、VM の詳細を表示します。

コンソール(VM ログ)

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. [クエリを表示] 切り替えボタンがオンになっていることを確認します。

  3. クエリエディタで以下のクエリを入力します。

    resource.type="gce_instance" AND protoPayload.methodName=~"compute\.instances\.reportHostAsFaulty"
    
  4. [クエリを実行] をクリックします。[クエリ結果] ペインにクエリ結果が表示されます。

gcloud

  1. プロジェクトの障害のあるホスト オペレーションのレポートのステータスを表示するには、--filter フラグを operationType:compute.instances.reportHostAsFaulty に設定して gcloud compute operations list コマンドを使用します。

    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 リクエストを送信します。リクエスト URL に、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: オペレーションが存在するゾーン。

次のステップ