このページでは、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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- ノードグループでの移行に設定されたホスト メンテナンス ポリシーを持つ単一テナントノード グループで、メンテナンス イベントを正しくシミュレートするには、それらのノードごとにメンテナンス イベントを順番にトリガーする必要があります。
- 単一テナントノード グループでホスト メンテナンス イベントをシミュレートしようとするとき、そのノードグループのホスト メンテナンス ポリシーがノードグループでの移行に設定されている場合:
- 指定したノード数が予約済みホールドバック ノードの合計数以下である場合、指定したすべてのノードに対してホスト メンテナンス イベントのシミュレーションが同時に実行されます。
- 指定したノード数が予約済みホールドバック ノードの合計数より多い場合、シミュレーションは失敗します。
- リージョン単位で 1 分あたりに開始できるメンテナンス イベント シミュレーションの数は、
simulate_maintenance_event_requests_per_region
指標の API レート制限で制限されます。 - シミュレーションの開始時、
maintenance-event
メタデータキーの値がNONE
からMIGRATE_ON_HOST_MAINTENANCE
に変わります。 - シミュレーション イベントの間は
MIGRATE_ON_HOST_MAINTENANCE
のままです。 - シミュレーションが終了すると値は
NONE
に戻ります。 INSTANCE_NAME
: メンテナンス イベントをシミュレートするコンピューティング インスタンスの名前。同じゾーン内の複数のインスタンスでメンテナンス イベントをシミュレートするには、インスタンス名を 1 個のスペースで区切って指定します。例:
instance-1 instance-2 instance-3
ZONE
: インスタンスが配置されているゾーン。PROJECT_ID
: このリクエストのプロジェクト ID。INSTANCE_NAME
: メンテナンス イベントをシミュレートするインスタンスの名前。ZONE
: インスタンスが配置されているゾーン。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
: インスタンスが配置されているゾーン。
省略可: シミュレート メンテナンス イベントを手動で開始するには
compute instances perform-maintenance
コマンドを使用します。gcloud compute instances perform-maintenance INSTANCE_NAME \ --zone=ZONE
次のように置き換えます。
INSTANCE_NAME
: メンテナンス イベントをシミュレートするコンピューティング インスタンスの名前。同じゾーン内の複数のインスタンスでメンテナンス イベントをシミュレートするには、インスタンス名を 1 個のスペースで区切って指定します。例:
instance-1 instance-2 instance-3
ZONE
: インスタンスが配置されているゾーン。
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
: インスタンスが配置されているゾーン。
省略可: シミュレート メンテナンス イベントを手動で開始するには、
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
: インスタンスが配置されているゾーン。
NODE_GROUP
: メンテナンス イベントをシミュレートするノードグループの名前。NODE_NAMES
: メンテナンス イベントをシミュレートするノードの名前。複数のノード名を指定する場合は、カンマ区切り値を使用します(例:node-1,node-2,node-3
)。ZONE
: ノードが配置されているゾーン。PROJECT_ID
: このリクエストのプロジェクト ID。ZONE
: ノードが配置されているゾーン。NODE_GROUP
: メンテナンス イベントをシミュレートするノードグループの名前。NODE_NAMES
: メンテナンス イベントをシミュレートするノードの名前。ノード名を二重引用符で囲みます(例:"node-1"
)。複数のノード名を指定する場合は、カンマ区切り値を使用します(例:"node-1","node-2","node-3"
)。- ホストイベントの詳細を確認する。
- 単一テナントノードでのホスト メンテナンスの詳細を確認する。
- VM ホスト メンテナンス ポリシー オプションの設定の詳細を確認する。
- VM オペレーションを表示する方法を学習する。
- マルチテナンシーと単一テナンシーの詳細を確認する。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
制限事項
ホスト メンテナンス イベントをシミュレートしてライブ マイグレーションをテストする
Google Cloud CLI または API リクエストを使用して、コンピューティング インスタンスのメンテナンス イベントをシミュレートできます。このようにシミュレートしたイベントでは、通常のメンテナンス イベントで発生するさまざまなメンテナンス アクティビティが同様に発生します。これにより、エンドツーエンドのプロセスをモニタリングし、実装した自動化をテストできます。
ライブ マイグレーションを使用するインスタンスでのホスト メンテナンス イベントのシミュレーションでは、そのインスタンスの
maintenance-event
メタデータキーが次のように変更されます。メンテナンス イベントキーをクエリするには、メンテナンス イベントのメタデータキーをクエリするをご覧ください。
gcloud
compute instances simulate-maintenance-event
コマンドを使用して、インスタンスのメンテナンス イベントをシミュレートし、構成済みのホスト メンテナンス ポリシー設定をテストします。gcloud compute instances simulate-maintenance-event INSTANCE_NAME \ --zone=ZONE --with-extended-notifications=True
次のように置き換えます。
REST
compute.instances.simulateMaintenanceEvent
メソッドに対してPOST
リクエストを作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/simulateMaintenanceEvent
次のように置き換えます。
終了するコンピューティング インスタンスのホスト メンテナンンスをシミュレートする
Google Cloud CLI または API リクエストを使用して、コンピューティング インスタンスのメンテナンス イベントをシミュレートできます。このようにシミュレートしたイベントでは、通常のメンテナンス イベントで発生するさまざまなメンテナンス アクティビティが同様に発生します。これにより、エンドツーエンドのプロセスをモニタリングし、実装した自動化をテストできます。
また、サポートされているマシンタイプを指定したパラメータ
--with-extended-notifications
を使用すると、シミュレートしたイベント中にホスト メンテナンスの開始を手動でテストできます。gcloud
REST
単一テナントノードでホスト メンテナンス イベントをシミュレートする
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
次のように置き換えます。
REST
compute.nodeGroups.simulateMaintenanceEvent
メソッドに対してPOST
リクエストを作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/nodeGroups/NODE_GROUP/simulateMaintenanceEvent { "nodes": [ "NODE_NAMES" ] }
次のように置き換えます。
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-23 UTC。
-