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


このページでは、Compute Engine インスタンスのホスト メンテナンス ポリシーがアプリケーションに及ぼす影響をテストする方法について説明します。

VM 上でメンテナンス イベントをシミュレートして、次の項目をテストできます。

  • アプリケーションに対するライブ マイグレーションの影響。
  • 1 つ以上の Spot VM を使用する場合、アプリケーションとバッチジョブでプリエンプションとシャットダウンがどのように処理されるか。
  • メンテナンス イベントでライブ マイグレーションせずに終了して再起動するように構成されているインスタンスで、シャットダウンと再起動のプロセスがアプリケーションでどのように処理されるか。
  • ホスト メンテナンス イベント中に、単一テナントノードで実行中のワークロードが示す動作。また、単一テナント VM で実行中のアプリケーションに対し、その VM のホスト メンテナンス ポリシーが及ぼす影響。

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

始める前に

  • SimulateMaintenanceEventRequestsPerMinutePerProjectPerRegionリージョン API レート制限を確認します。
  • まだ認証を設定していない場合は、ここで認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境でコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。

    Select the tab for how you plan to use the samples on this page:

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

制限事項

  • ノードグループでの移行に設定されたホスト メンテナンス ポリシーを持つ単一テナントノード グループで、メンテナンス イベントを正しくシミュレートするには、それらのノードごとにメンテナンス イベントを順番にトリガーする必要があります。
  • 単一テナントノード グループでホスト メンテナンス イベントをシミュレートしようとするとき、そのノードグループのホスト メンテナンス ポリシーがノードグループでの移行に設定されている場合:
    • 指定したノード数が予約済みホールドバック ノードの合計数以下である場合、指定したすべてのノードに対してホスト メンテナンス イベントのシミュレーションが同時に実行されます。
    • 指定したノード数が予約済みホールドバック ノードの合計数より多い場合、シミュレーションは失敗します。
  • リージョン単位で 1 分あたりに開始できるメンテナンス イベント シミュレーションの数は、simulate_maintenance_event_requests_per_region 指標の API レート制限で制限されます。

ホスト メンテナンス イベントをシミュレートしてライブ マイグレーションをテストする

Google Cloud CLI または API リクエストを使用して、コンピューティング インスタンスのメンテナンス イベントをシミュレートできます。このようにシミュレートしたイベントでは、通常のメンテナンス イベントで発生するさまざまなメンテナンス アクティビティが同様に発生します。これにより、エンドツーエンドのプロセスをモニタリングし、実装した自動化をテストできます。

ライブ マイグレーションを使用するインスタンスでのホスト メンテナンス イベントのシミュレーションでは、そのインスタンスの maintenance-event メタデータキーが次のように変更されます。

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

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

gcloud

compute instances simulate-maintenance-event コマンドを使用して、インスタンスのメンテナンス イベントをシミュレートし、構成済みのホスト メンテナンス ポリシー設定をテストします。

gcloud compute instances simulate-maintenance-event INSTANCE_NAME \
    --zone=ZONE --with-extended-notifications=True

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

  • INSTANCE_NAME: メンテナンス イベントをシミュレートするコンピューティング インスタンスの名前。

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

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

REST

compute.instances.simulateMaintenanceEvent メソッドに対して POST リクエストを作成します。

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

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

  • PROJECT_ID: このリクエストのプロジェクト ID。
  • INSTANCE_NAME: メンテナンス イベントをシミュレートするインスタンスの名前。
  • ZONE: インスタンスが配置されているゾーン。

終了するコンピューティング インスタンスのホスト メンテナンンスをシミュレートする

Google Cloud CLI または API リクエストを使用して、コンピューティング インスタンスのメンテナンス イベントをシミュレートできます。このようにシミュレートしたイベントでは、通常のメンテナンス イベントで発生するさまざまなメンテナンス アクティビティが同様に発生します。これにより、エンドツーエンドのプロセスをモニタリングし、実装した自動化をテストできます。

また、サポートされているマシンタイプを指定したパラメータ --with-extended-notifications を使用すると、シミュレートしたイベント中にホスト メンテナンスの開始を手動でテストできます。

gcloud

  1. compute instances simulate-maintenance-event コマンドを使用して、インスタンスのメンテナンス イベントをシミュレートし、構成済みのホスト メンテナンス ポリシー設定をテストします。必要に応じて --with-extended-notifications フラグを指定できます。

    gcloud compute instances simulate-maintenance-event INSTANCE_NAME \
       --zone=ZONE --with-extended-notifications=True
    

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

    • INSTANCE_NAME: メンテナンス イベントをシミュレートするコンピューティング インスタンスの名前。

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

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

  2. 省略可: シミュレート メンテナンス イベントを手動で開始するには compute instances perform-maintenance コマンドを使用します。

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

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

    • INSTANCE_NAME: メンテナンス イベントをシミュレートするコンピューティング インスタンスの名前。

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

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

REST

  1. compute.instances.simulateMaintenanceEvent メソッドに対して POST リクエストを作成します。必要に応じて、クエリ パラメータ withExtendedNotifications を指定することもできます。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/simulateMaintenanceEvent?withExtendedNotifications=True
    

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

    • PROJECT_ID: このリクエストのプロジェクト ID。
    • INSTANCE_NAME: メンテナンス イベントをシミュレートするインスタンスの名前。
    • ZONE: インスタンスが配置されているゾーン。
  2. 省略可: シミュレート メンテナンス イベントを手動で開始するには、compute.instances.performMaintenance メソッドに対する POST リクエストを作成します。

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

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

    • INSTANCE_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.nodeGroups.simulateMaintenanceEvent メソッドに対して POST リクエストを作成します。

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")。

次のステップ