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


このページでは、アプリケーションに対する 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")。

次のステップ