コンピューティング インスタンス間でホストイベントを管理する

このドキュメントでは、Cluster Director スイートで使用可能なホスト メンテナンス機能の使用方法について説明します。Compute Engine インスタンスの定期メンテナンスをモニタリング、計画、実行する方法について説明します。コンピューティング インスタンスが実行されているかどうかに関係なく、予約済みの容量ブロックのメンテナンスを管理するには、代わりに予約間でホストイベントを管理するをご覧ください。

インスタンスで今後のメンテナンス ホストイベントをプロアクティブに管理すると、中断を最小限に抑え、最適なパフォーマンスを維持できます。

始める前に

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

    外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

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

必要なロール

コンピューティング インスタンス全体でホスト メンテナンス イベントを管理するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

  • プロジェクトに対する Compute 管理者roles/compute.admin
  • システム イベントの監査ログに対する読み取り専用権限: プロジェクトに対するログ閲覧者 roles/logging.viewer

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

これらの事前定義ロールには、コンピューティング インスタンス全体でホスト メンテナンス イベントを管理するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

コンピューティング インスタンス全体でホスト メンテナンス イベントを管理するには、次の権限が必要です。

  • インスタンスの詳細を表示する: プロジェクトに対する compute.instances.get

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

概要

コンピューティング インスタンスのメンテナンスを最適化するには、次の操作を行います。

  1. ホスト メンテナンスを理解して処理する。マシンシリーズに基づいて、インスタンスの頻度とメンテナンスの動作について学習し、ホスト メンテナンスを処理するようにワークロードを準備する方法を学習します。この情報は、中断を最小限に抑え、データ損失を防ぐのに役立ちます。

  2. 通知アラートを設定します。インスタンスのメンテナンスのスケジュール設定、開始、完了時に通知を受け取るように、ログベースのアラートを作成します。このアプローチにより、アクティビティを事前に計画し、予期しないダウンタイムを回避できます。

  3. インスタンス全体でメンテナンスを管理します。インスタンスのメンテナンスがスケジュールされているかどうかを確認します。必要に応じて、インスタンス全体でメンテナンスを手動で開始できます。このプロセスにより、ワークロードのホストイベントに対する復元力を高め、ダウンタイムを防ぎ、アプリケーションの可用性を最大化できます。

ホスト メンテナンスを理解して処理する

Compute Engine インスタンスのライフサイクル中、インスタンスが実行されているホストマシンで複数のホストイベントが発生します。ホストイベントには次のものを含めることができます。

  • Compute Engine インフラストラクチャの計画メンテナンス。
  • ホストエラーまたは障害のあるホストの報告後に Compute Engine インフラストラクチャを修復するための計画外の緊急メンテナンス。

次の表に、アクセラレータ最適化マシンタイプのホスト メンテナンス機能を示します。

マシンタイプ 一般的な定期メンテナンス イベントの頻度 メンテナンス動作 定期メンテナンスの事前通知 緊急メンテナンスに関する事前通知 オンデマンド メンテナンス メンテナンスをシミュレートする
A4X Max と A4X 最小 90 日 ローカル SSD データの永続性で終了する 90 日 緊急通知を有効にしている場合は 7 日間。それ以外の場合は数時間です。 はい いいえ
A4 最小 90 日 ローカル SSD データの永続性で終了する 90 日 緊急通知を有効にしている場合は 7 日間。それ以外の場合は数時間です。 はい いいえ
A3 Ultra 最小 90 日 ローカル SSD データの永続性で終了する 90 日 緊急通知を有効にしている場合は 7 日間。それ以外の場合は数時間です。 はい いいえ
A3 Mega と A3 High
(8 個の GPU)
最小 90 日 ローカル SSD データの永続性で終了する 90 日 緊急通知を有効にしている場合は 7 日間。それ以外の場合は数時間です。 はい

上の表に示すメンテナンスの頻度は概算であり、保証するものではありません。Compute Engine は、これよりも高い頻度でメンテナンスを実施することがあります。

データや進行状況の損失を防ぐには、ホスト メンテナンスを処理するようにワークロードを構成します。たとえば、次の手法を使用して、ワークロードが停止する前に一時データと進行状況を保存します。

コンピューティング インスタンスの通知アラートを設定する

インスタンスのスケジュールされたメンテナンス イベント、開始されたメンテナンス イベント、完了したメンテナンス イベントの通知を受け取るには、ログベースのアラート ポリシーを作成します。

インスタンスのメンテナンス イベントのアラートを作成するには、次の手順を行います。作成するアラートごとにこの手順を繰り返します。

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

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

    検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

  2. [クエリを表示] 切り替えボタンをクリックしてオンにします。

  3. クエリペインで、次のいずれかのクエリを作成します。これらのクエリは、ログエントリをフィルタして特定のメンテナンス イベントを識別します。複数のクエリを使用する場合は、この手順を繰り返して、クエリごとに一意のアラートを作成します。

    • インスタンスのメンテナンスがスケジュールされたときにアラートを受け取るには:

      protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT
      protoPayload.status.message =~ "scheduled"
      
    • インスタンスのメンテナンスの時間枠が開いたときにアラートを受け取るには:

      protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT
      protoPayload.status.message =~ "ongoing"
      
    • インスタンスのメンテナンスが開始されたときにアラートを受け取るには:

      protoPayload.methodName="compute.instance.terminateOnHostMaintenance" severity>=DEFAULT
      
    • インスタンスのメンテナンスが完了したときにアラートを受け取るには:

      protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT
      protoPayload.status.message =~ "completed"
      
  4. クエリを検証するため、[クエリを実行] をクリックします。クエリが有効な場合、[クエリ結果] ペインにクエリに一致するログエントリが表示されます。

  5. [クエリ] 結果ツールバーで、[アクション] リストをクリックし、[ ログアラートの作成] を選択します。[ログベースのアラート ポリシーを作成] ペインが表示されます。

  6. [アラートの詳細] セクションで、次の操作を行います。

    1. [アラート ポリシー名] フィールドに、ポリシーの名前を入力します。

    2. [ポリシーの重大度] リストで、[警告](またはそれ以上の重大度)を選択します。

    3. [次へ] をクリックします。

  7. [アラートに含めるログを選択] セクションで、[次へ] をクリックします。

  8. [通知頻度と自動クローズ期間の設定] セクションで、次の項目を指定します。

    1. [通知の間隔] リストで、通知を受け取る頻度を選択します。

    2. [インシデントの自動クローズ期間] リストで、Cloud Logging が通知の送信を停止し、インシデントを自動的にクローズするまでの期間を選択します。

    3. [次へ] をクリックします。

  9. [通知を受信するユーザー] セクションで、Logging が通知を送信する通知チャネルを指定します。

  10. [保存] をクリックします。

ログ エクスプローラでメンテナンス イベント通知の例を表示するには、Compute Engine ドキュメントのメンテナンス通知の例をご覧ください。

コンピューティング インスタンス全体のメンテナンスを管理する

次のいずれか 1 つ以上を行うことで、インスタンスのメンテナンスを表示して制御できます。

コンピューティング インスタンスのメンテナンス状態を表示する

インスタンスの今後のメンテナンスの状態とスケジュールされた時間は、インスタンスのメタデータの upcomingMaintenance フィールドの値を確認することで表示できます。インスタンスに upcomingMaintenance フィールドが含まれていない場合、そのインスタンスのホスト メンテナンス イベントはスケジュールされません。upcomingMaintenance のフィールドの詳細については、Compute Engine のドキュメントのメンテナンス ステータスの定義をご覧ください。

また、インスタンスのメンテナンスがスケジュールされている場合、upcomingGroupMaintenance フィールドには maintenanceReasons フィールドが含まれます。このフィールドには、次の表に示すように、インスタンスのメンテナンスがスケジュールされた理由が記述されます。

メンテナンスの種類 メンテナンスの理由 コンピューティング インスタンスの状態
障害のあるホストの報告後の計画メンテナンス FAILURE_GPU_CUSTOMER_REPORTED 障害のあるホストとして報告したホストで実行されているインスタンスにのみ適用されます。
定期的なメンテナンスの計画的なメンテナンス
  • PLANNED_UPDATE: インフラストラクチャの計画的なメンテナンス
  • PLANNED_NETWORK_UPDATE: ネットワークの計画的なメンテナンス
実行中、停止中、一時停止中のインスタンスに適用されます。
計画外の緊急メンテナンス
  • FAILURE_DISK: インスタンスにアタッチされたディスクのエラーによりスケジュールされた計画外のメンテナンス。
  • FAILURE_GPU: GPU 関連のエラーによりスケジュールされた計画外のメンテナンス。
  • FAILURE_GPU_TEMPERATURE: GPU の温度が上昇した後に GPU 関連のエラーが発生したため、スケジュールされた計画外のメンテナンス。
  • FAILURE_GPU_XID: GPU 関連のエラーにより Xid メッセージを受信した後の計画外のメンテナンス。
  • FAILURE_INFRA: インフラストラクチャのエラーによりスケジュールされた計画外のメンテナンス。
  • FAILURE_INTERFACE: NIC のエラーによりスケジュールされた計画外のメンテナンス。
  • FAILURE_MEMORY: インスタンスのメモリのエラーによりスケジュールされた計画外のメンテナンス。
  • FAILURE_NETWORK: ネットワークのエラーによりスケジュールされた計画外のメンテナンス。
  • FAILURE_NVLINK: NVLink のエラーによりスケジュールされた計画外のメンテナンス。
実行中のインスタンスにのみ適用されます。

インスタンスの maintenanceReasons フィールドを表示するには、gcloud CLI または REST API を使用する必要があります。複数のコンピューティング インスタンスのメンテナンス状態を同時に表示するには、 Google Cloud コンソールまたは REST API を使用する必要があります。または、次のオプションのいずれかを選択します。

コンソール

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. Compute Engine の [メンテナンス ステータス] 列に、インスタンスのメンテナンス状態が表示されます。[VM インスタンス] テーブルにこの列が表示されていない場合は、[view_column 列表示オプション] をクリックし、[メンテナンス ステータス] チェックボックスをオンにして、[OK] をクリックします。

gcloud

インスタンスのメンテナンス状態を表示するには、--flatten=resourceStatus.upcomingMaintenance フラグを指定して gcloud compute instances describe コマンドを使用します。

gcloud compute instances describe INSTANCE_NAME \
    --flatten=resourceStatus.upcomingMaintenance \
    --zone=ZONE

次のように置き換えます。

  • INSTANCE_NAME: インスタンス名。

  • ZONE: インスタンスが存在するゾーン。

出力は次のいずれかのようになります。

  • インスタンスにホスト メンテナンス イベントがスケジュールされている場合、出力は次のようになります。

    ---
    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'
    
  • インスタンスのホスト メンテナンス イベントがスケジュールされていない場合、出力は次のようになります。

    ---
    null
    

REST

インスタンスのメンテナンス状態を表示するには、次のいずれかの GET リクエストを行います。リクエストを行う場合は、fields クエリ パラメータを含めて、インスタンスの名前、マシンタイプ、今後のメンテナンスのみを表示する必要があります。また、特定のマシンタイプでインスタンスをフィルタリングするだけの場合は、filter クエリ パラメータを指定する必要があります。

  • すべてのゾーンのインスタンスを表示するには: 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
    
  • 特定のゾーンのインスタンスを表示するには: 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: インスタンスを作成したプロジェクトの ID。

  • ZONE: インスタンスが存在するゾーン。

  • MACHINE_TYPE: インスタンスのフィルタリングに使用するマシンタイプ。

インスタンスのホスト メンテナンス イベントがスケジュールされている場合、インスタンスには upcomingMaintenance フィールドが含まれます。

{
  "items": [
    {
      "name": "vm-01",
      "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g",
      "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 クエリ パラメータを別のフィルタ式に設定します。

メタデータ サーバー

インスタンスのメンテナンス状態を表示する手順は次のとおりです。

  1. まだ接続していない場合は、Linux または Windows インスタンスに接続します。

  2. 今後のメンテナンス スケジュールを表示するには、upcoming-maintenance エンドポイントに対してクエリを実行します。

    curl http://metadata.google.internal/computeMetadata/v1/instance/upcoming-maintenance?alt=json -H "Metadata-Flavor: Google"
    

    インスタンスにホスト メンテナンス イベントがスケジュールされている場合、出力は次のようになります。

    "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"
    }
    

    ホスト メンテナンス イベントがスケジュールされていない場合、出力は次のようになります。

    { }
    
  3. VM の現在のメンテナンス状態を表示するには、maintenance-event エンドポイントをクエリします。

    curl http://metadata.google.internal/computeMetadata/v1/instance/maintenance-event -H "Metadata-Flavor: Google"
    

    これらのクエリの出力の詳細については、出力を確認するをご覧ください。

コンピューティング インスタンスのメンテナンスを手動で開始する

スケジュールされた時間を待つのではなく、インスタンスのメンテナンスを手動で開始できます。

インスタンスのメンテナンス状態に応じて、次の処理が行われます。

メンテナンス状態 説明 表示される内容
スケジュール設定済み Compute Engine で、インスタンスの定期メンテナンスがスケジュールされています。スケジュールされた時間より前に、メンテナンスを手動で開始できます。
  • Google Cloud コンソールでは、メンテナンス状態が [実行準備完了 - DATE に実行されます] と表示されます。
  • gcloud CLI または REST API では、Compute Engine は maintenanceStatus フィールドを PENDING に設定します。
進行中 メンテナンスが進行中です。スケジュールを変更することはできません。
  • Google Cloud コンソールでは、メンテナンス状態が [実行中] と表示されます。
  • gcloud CLI または REST API では、Compute Engine は maintenanceStatus フィールドを ONGOING に設定します。
完了 メンテナンスが完了しました。Compute Engine は、インスタンスからすべてのメンテナンス通知を削除しました。
  • Google Cloud コンソールでは、メンテナンスの状態が [最新] と表示されます。
  • gcloud CLI または REST API では、Compute Engine は maintenanceStatus フィールドを COMPLETE に設定します。

複数のインスタンスのメンテナンスを同時に、または個々のインスタンスのメンテナンスを手動で開始できます。複数のインスタンスの場合は、 Google Cloud コンソールを使用します。同じゾーンにあるインスタンスの場合は、gcloud CLI を使用します。個々のインスタンスの場合は、次のいずれかのオプションを選択します。

コンソール

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. メンテナンスを開始するインスタンスの行を選択します。

  3. [メンテナンスを実行] をクリックします。

  4. [メンテナンスを実行] をクリックして確定します。

gcloud

同じゾーン内の 1 つ以上のインスタンスのメンテナンスを手動で開始するには、gcloud compute instances perform-maintenance コマンドを使用します。

gcloud compute instances perform-maintenance INSTANCE_NAMES \
    --zone=ZONE

次のように置き換えます。

  • INSTANCE_NAMES: インスタンス名のスペース区切りのリスト(例: vm-01 vm-02 vm-03)。

  • ZONE: インスタンスが存在するゾーン。

REST

インスタンスのメンテナンスを手動で開始するには、instances.performMaintenance メソッドPOST リクエストを送信します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/performMaintenance

次のように置き換えます。

  • PROJECT_ID: インスタンスが作成されたプロジェクトの ID。

  • ZONE: インスタンスが存在するゾーン。

  • INSTANCE_NAME: インスタンス名。

次のステップ