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