H4D VM 間でホストイベントを管理する

このドキュメントでは、H4D VM で使用可能なホスト メンテナンス機能の使用方法について説明します。仮想マシン(VM)インスタンスの定期メンテナンスをモニタリング、計画、実行する方法について説明します。VM が実行されているかどうかに関係なく、予約済みの容量ブロックのメンテナンスを管理するには、予約間でホストイベントを管理するをご覧ください。

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

始める前に

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 を使用して認証するをご覧ください。

必要なロール

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

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

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

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

必要な権限

VM 全体でホスト メンテナンス イベントを管理するには、次の権限が必要です。

  • VM の詳細を表示する: プロジェクトに対する compute.instances.get 権限

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

概要

VM のメンテナンスを最適化するには、次の操作を行います。

  1. ホスト メンテナンスについて理解する。マシンシリーズに基づく VM の頻度とメンテナンスの動作について学習します。この情報は、ワークロードの中断を最小限に抑えるのに役立ちます。

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

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

ホスト メンテナンスについて

Compute Engine インスタンスのライフサイクル中、インスタンスが実行されているホストマシンで複数のホストイベントが発生します。このようなホストイベントとして、Compute Engine インフラストラクチャの定期メンテナンスなどがあり、まれにホストエラーも発生することがあります。また、Compute Engine は、ハイパーバイザとネットワークの軽量なアップグレードをバックグラウンドで無停止で適用します。

H4D マシンシリーズには、ホストのメンテナンスに関連する次の機能があります。

マシンタイプ 一般的な定期メンテナンス イベントの頻度 メンテナンス動作 事前通知 オンデマンド メンテナンス メンテナンスのシミュレーション
h4d-standard-192 最小 30 日 終了 7 日間 はい ×
h4d-highmem-192 最小 30 日 終了 7 日間 はい ×
h4d-highmem-192-lssd 最小 30 日 ローカル SSD データの永続性で終了する 7 日間 はい ×

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

VM の通知アラートを設定する

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

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

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

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

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

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

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

    • 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"
      
  4. クエリを検証するには、[クエリを実行] をクリックします。クエリが有効な場合、[クエリ結果] ペインにクエリに一致するログエントリが表示されます。

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

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

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

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

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

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

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

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

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

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

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

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

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

VM 全体でメンテナンスを管理する

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

VM のメンテナンス状態を表示する

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

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

メンテナンスの種類 メンテナンスの理由 VM の状態
定期メンテナンスの計画メンテナンス
  • PLANNED_UPDATE: 計画的なインフラストラクチャのメンテナンス
  • PLANNED_NETWORK_UPDATE: 計画的なネットワーク メンテナンス
実行中、停止中、一時停止中の VM に適用されます。
計画外の緊急メンテナンス
  • FAILURE_DISK: VM にアタッチされたディスクのエラーによりスケジュールされた計画外のメンテナンス。
  • FAILURE_INFRA: インフラストラクチャのエラーによりスケジュールされた計画外のメンテナンス。
  • FAILURE_INTERFACE: NIC のエラーにより、計画外のメンテナンスがスケジュールされています。
  • FAILURE_MEMORY: VM のメモリのエラーにより、予定外のメンテナンスがスケジュールされています。
  • FAILURE_NETWORK: ネットワーク エラーが原因でスケジュールされた計画外のメンテナンス。
実行中の VM にのみ適用されます。

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

コンソール

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

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

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

gcloud

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

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 の名前、マシンタイプ、今後のメンテナンスのみを表示する必要があります。また、特定のマシンタイプで VM をフィルタリングするだけの場合は、filter クエリ パラメータを含める必要があります。

  • すべてのゾーンの 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"
        }
      }
    },
    ...
  ]
}

必要に応じて、VM のリストをさらに絞り込むには、filter クエリ パラメータを別のフィルタ式に設定します。

メタデータ サーバー

VM のメンテナンス状態を表示するには、次の操作を行います。

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

  2. 次のようにメタデータ サーバーにクエリを実行します。

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

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

コンソール

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

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

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

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

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

gcloud

同じゾーン内の 1 つ以上の 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 名。