ホスト メンテナンス イベントをシミュレーションする


このページでは、アプリケーションに対する仮想マシン(VM)インスタンスのホスト メンテナンス ポリシーの影響をテストする方法について説明します。

次のような状況で VM でメンテナンス イベントをシミュレートできます。

  • メンテナンス イベント中にライブ マイグレーションするように構成された VM があり、アプリケーションに対するライブ マイグレーションの影響をテストする必要がある。
  • プリエンプティブル VM インスタンスで実行されるバッチジョブがあり、インスタンスのプリエンプションおよびシャットダウンがアプリケーションによってどのように処理されるかをテストする必要がある。
  • メンテナンス イベント中にライブ マイグレーションするのではなく、停止して再起動するようにインスタンスが構成されていて、このシャットダウンと再起動のプロセスがアプリケーションによってどのように処理されるかをテストする必要がある。
  • ホスト メンテナンス イベント中に、単一テナントノードで実行中のワークロードの動作をテストして、単一テナント VM のホスト メンテナンス ポリシーが VM で実行中のアプリケーションに対して与える影響を確認する必要がある。

始める前に

  • simulate_maintenance_event_requests 指標の API レート制限を確認します。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように 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

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

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

制限事項

  • ライブ マイグレーションをサポートしていない VM でホスト メンテナンス イベントをシミュレートしようとすると、構成済みのホスト メンテナンス ポリシーに応じて、終了または再起動されます。

  • ホスト メンテナンス ポリシーがノードグループ内で移行に設定されているノードグループで、ホスト メンテナンス イベントをシミュレートしようとする際に、指定したノード数が予約されているホールドバック ノードの合計数以下である場合、指定されたすべてのノードに対して同時にホスト メンテナンス イベントのシミュレーションが実行されます。指定されたノード数が予約されているホールドバック ノードの合計数より大きい場合、シミュレーションは失敗します。

  • ホスト メンテナンス ポリシーがノードグループ内で移行に設定されているノードグループで、メンテナンス イベントを正しくシミュレートするには、各ノードでメンテナンス イベントを順次トリガーする必要があります。

ホスト メンテナンス イベントをシミュレートする

Google Cloud CLI と API リクエストのいずれかを使用して、VM でメンテナンス イベントをシミュレートできます。

ホスト メンテナンス イベントのシミュレーション中、VM の maintenance-event メタデータキーに次の変更が行われます。

  1. シミュレーションの開始時、maintenance-event メタデータキーの値が NONE から MIGRATE_ON_HOST_MAINTENANCE に変わります。
  2. シミュレーション イベントの間は MIGRATE_ON_HOST_MAINTENANCE のままです。
  3. シミュレーションが終了すると値は NONE に戻ります。

メンテナンス イベントキーをクエリするには、メンテナンス イベントのメタデータキーをクエリするをご覧ください。

gcloud

instances simulate-maintenance-event コマンドを実行して、インスタンスでその構成済みメンテナンス ポリシー処理を有効にします。

gcloud compute instances simulate-maintenance-event VM_NAME \
    --zone ZONE

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

  • VM_NAME: メンテナンス イベントをシミュレートする VM の名前。

    同じゾーン内の複数の VM でメンテナンス イベントをシミュレートするには、VM 名を 1 個のスペースで区切って指定します。例: instance-1 instance-2 instance-3

  • ZONE: インスタンスが配置されているゾーン。

REST

Compute Engine API で、次の compute.instances.simulateMaintenanceEvent メソッドにリクエストを送信します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/simulateMaintenanceEvent

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

  • PROJECT_ID: このリクエストのプロジェクト ID。
  • VM_NAME: メンテナンス イベントをシミュレートするインスタンスの名前。

    同じゾーン内の複数のインスタンスでメンテナンス イベントをシミュレートするには、インスタンス名を 1 個のスペースで区切って指定します。例: instance-1 instance-2 instance-3

  • ZONE: インスタンスが配置されているゾーン。

単一テナントノードでホスト メンテナンス イベントをシミュレートする

Google Cloud CLI または API リクエストを使用して、単一テナントノードでホスト メンテナンス イベントをシミュレートできます。単一テナント VM のホスト メンテナンス イベントのシミュレーション中、maintenance-event メタデータキーの値は変更されず、シミュレーション中も NONE のままです。

gcloud

sole-tenancy node-groups simulate-maintenance-event コマンドを実行して、単一テナントノードで構成済みのメンテナンス ポリシーを強制的に有効にします。

 gcloud compute sole-tenancy node-groups simulate-maintenance-event NODE_GROUP \
    --nodes=NODE_NAMES \
    --zone=ZONE \
    --async

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

  • NODE_GROUP: メンテナンス イベントをシミュレートするノードグループの名前。

  • NODE_NAMES: メンテナンス イベントをシミュレートするノードの名前。複数のノード名を指定する場合は、カンマ区切り値を使用します(例: node-1,node-2,node-3)。

  • ZONE: ノードが配置されているゾーン。

REST

Compute Engine API で、次の compute.nodeGroups.simulateMaintenanceEvent メソッドにリクエストを送信します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/nodeGroups/NODE_GROUP/simulateMaintenanceEvent

{
  "nodes": [NODE_NAMES]
}

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

  • PROJECT_ID: このリクエストのプロジェクト ID。

  • ZONE: ノードが配置されているゾーン。

  • NODE_GROUP: メンテナンス イベントをシミュレートするノードグループの名前。

  • NODE_NAMES: メンテナンス イベントをシミュレートするノードの名前。ノード名を二重引用符で囲みます(例: "node-1")。複数のノード名を指定する場合は、カンマ区切り値を使用します(例: "node-1","node-2","node-3")。

次のステップ