このページでは、インスタンスの可用性オプションの設定方法について説明します。このオプションにより、メンテナンス イベント発生時の VM インスタンスの動作が決まります。このページでは、メンテナンス イベントの発生時にインスタンスにライブ マイグレーションを設定する方法についても説明します。
ハードウェア / ソフトウェアの更新など、別のホストマシンへの VM の移動が必要になるメンテナンス イベントが発生すると、Google Compute Engine はインスタンスの動作を自動的に管理します。インスタンスの可用性ポリシーでライブ マイグレーションの使用を設定していると、Compute Engine は VM インスタンスにライブ マイグレーションを行います。これにより、イベント発生中のアプリケーションの中断を防ぐことができます。また、ライブ マイグレーションではなく、イベント発生時にインスタンスを終了することもできます。
始める前に
- このガイドのコマンドラインの例を使用する場合、以下を行います。
- gcloud コマンドライン ツールをインストールします。
- デフォルトのリージョンとゾーンを設定します。
- このガイドの API の例を使用する場合は、API アクセスを設定します。
可用性ポリシーの選択
VM インスタンスの可用性ポリシーにより、別のホストマシンへの VM の移動が必要になるイベントが発生したときの動作を指定します。たとえば、Compute Engine が別のホストにライブ マイグレーションを行っているときに VM インスタンスの実行を継続できます。まや、インスタンスを終了することもできます。インスタンスの可用性ポリシーは VM インスタンスの動作を定義します。このポリシーは、必要なときにいつでも更新できます。
インスタンスの可用性ポリシーを変更する場合、次の 2 つの設定を行います。
- VM インスタンスのメンテナンス動作。メンテナンス イベントが発生した場合に、インスタンスをライブ マイグレーションするか終了するかを設定します。
- インスタンスの再起動動作。インスタンスがクラッシュまたは終了した場合に、インスタンスを自動的に再起動するかを設定します。
デフォルトのメンテナンス動作では、インスタンスはライブ マイグレーションされますが、メンテナンス イベント中にインスタンスを終了するよう設定を変更することもできます。
ライブ マイグレーション
デフォルトでは、インスタンスはライブ マイグレーションされるよう設定されているため、Google Compute Engine はインフラストラクチャのメンテナンス イベントの影響を受けることなく自動的にインスタンスを移行します。インスタンスは移行中も実行されます。通常は、ほとんどのインスタンスが影響を受けませんが、まれにインスタンスのパフォーマンスが一時的に低下する場合があります。この設定は、継続的な稼働を必要とし、一時的なパフォーマンスの低下に対応できるインスタンスに適しています。
インスタンスを移行する際、Google Compute Engine はゾーン オペレーションのリストに公開されているシステム イベントを報告します。このイベントは、gcloud compute operations list --zones ZONE
リクエストの実行、Google Cloud Platform Console でのオペレーションのリストの表示、API リクエストによって確認できます。イベントは、次のテキストとともに表示されます。
compute.instances.migrateOnHostMaintenance
終了と(必要に応じた)再起動
インスタンスをライブ マイグレーションしたくない場合、インスタンスを終了し、必要に応じて再起動するよう設定できます。このオプションでは、Google Compute Engine がインスタンスにシャットダウンするよう信号を送り、インスタンスが完全にシャットダウンするのを待ってからインスタンスを終了して、メンテナンス イベントに関係なく再起動します。このオプションは、インスタンスが常に最大限のパフォーマンスを要求し、すべてのアプリケーションがインスタンス障害や再起動に対処するように構築されている場合に最適です。
インスタンスを終了、再起動すると、Google Compute Engine はゾーン オペレーションのリストに公開されているシステム イベントを報告します。このイベントは、gcloud compute operations list --zones ZONE
リクエストの実行、Google Cloud Platform Console でのオペレーションのリストの表示、API リクエストによって確認できます。イベントは、次のテキストとともに表示されます。
compute.instances.terminateOnHostMaintenance
インスタンスを再起動したときにも前と同じ永続ブートディスクを使用し、構成したセカンダリ永続ディスクを再接続します。それらのディスク上のデータは、インスタンスの移行や再起動の後も維持されます。
ローカルの SSD データはインスタンスの終了後は維持されません。インスタンスが再起動したときには、新しいローカル SSD が作成されるので、それをフォーマットおよびマウントする必要があります。
自動再起動
メンテナンス イベントが発生したとき、またはハードウェアの根本的な問題でインスタンス障害が起きたときにインスタンスを終了するよう設定されている場合、automaticRestart
フィールドを true
に設定すると、Google Compute Engine がインスタンスを自動的に再起動します。この設定は、sudo shutdown
の呼び出しなどのユーザー操作によってインスタンスがオフラインになった場合には適用されません。
インスタンスを自動的に再起動する際、Google Compute Engine はゾーン オペレーションのリストに公開されているシステム イベントを報告します。このイベントは、gcloud compute operations list --zones ZONE
リクエストの実行、Google Cloud Platform Console でのオペレーションのリストの表示、API リクエストによって確認できます。イベントは、次のテキストとともに表示されます。
compute.instances.automaticRestart
可用性ポリシーの設定
onHostMaintenance
と automaticRestart
プロパティを使ってインスタンスのメンテナンス動作と自動再起動を設定します。明示的に指定しない限り、すべてのインスタンスはデフォルト値に設定されます。
-
onHostMaintenance
: インスタンスの再起動が必要になるメンテナンス イベントが発生したときの動作を指定します。- [デフォルト] の
migrate
では、Compute Engine はメンテナンス イベント発生時にインスタンスをライブ マイグレーションします。 terminate
を指定すると、インスタンスを移行せずに終了します。
- [デフォルト] の
-
automaticRestart
: インスタンスがクラッシュしたか、システムによって終了した場合の動作を指定します。- [デフォルト] の
true
では、インスタンスがクラッシュまたは終了すると、Compute Engine はインスタンスを再起動します。 false
では、インスタンスがクラッシュまたは終了しても、Compute Engine はインスタンスを再起動しません。
- [デフォルト] の
インスタンスの可用性ポリシーは、最初のインスタンス作成時か、インスタンス作成後に setScheduling
メソッドを使用して変更できます。
インスタンス作成時のオプションの設定
Console
- GCP Console の [VM インスタンス] ページに移動します。
- [インスタンスを作成] をクリックします。
- [新しいインスタンスの作成] ページで、インスタンス向けに希望するプロパティを入力します。
- [管理、ディスク、ネットワーキング、SSH 認証鍵] のオプションを展開します。
- [管理] タブで [可用性ポリシー] セクションまでスクロールし、[自動再起動] と [ホスト メンテナンス] オプションを設定します。
- [作成] をクリックしてインスタンスを作成します。
gcloud
gcloud compute
で新しいインスタンスの可用性ポリシーを設定するには、--maintenance-policy
フラグを使用して、インスタンスを migrated
または terminated
に指定します。--no-restart-on-failure
フラグを設定しない限り、インスタンスは自動的に再起動するようにデフォルト設定されています。
gcloud compute instances create INSTANCE .. \
[--maintenance-policy MAINTENANCE_POLICY] \
[--no-restart-on-failure]
API
API で以下の URL への POST
リクエストを行い、プロジェクトとゾーンをお使いのプロジェクト ID とインスタンスのゾーンに書き換えます。
https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances
onHostMaintenance
と automaticRestart
パラメータは、リクエスト本文の一部として送信します。
{
"name": "example-instance",
"description": "Front-end for real-time ingest; don't migrate.",
...
// User options for influencing this Instance’s life cycle.
"scheduling": {
"onHostMaintenance": "migrate",
"automaticRestart": "true" # specifies that Google Compute Engine should automatically restart your instance
}
}
詳しくは、インスタンスの参照ドキュメントをご覧ください。
インスタンスのオプションの更新
コンソール
- Google Cloud Platform Console の [VM インスタンス] ページに移動します。
- 設定を変更するインスタンスをクリックします。
- [可用性ポリシー] 内で [編集] ボタンをクリックし、可用性ポリシーを変更します。
gcloud
インスタンスの可用性ポリシーを更新するには、上記のインスタンス作成コマンドで使用したのと同じパラメータとフラグを指定して instances set-scheduling
コマンドを使用します。
gcloud compute instances set-scheduling INSTANCE \
[--maintenance-policy BEHAVIOR] \
[--no-restart-on-failure | --restart-on-failure]
API
API で以下の URL へのリクエストを行い、プロジェクトとゾーンをお使いのプロジェクト ID とインスタンスのゾーンに書き換えます。
https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/setScheduling
リクエストの本文には、可用性ポリシーの新しい値を入れる必要があります。
{
"onHostMaintenance": "migrate"
"automaticRestart": "true" # specifies that Google Compute Engine should automatically restart your instance
}
詳しくは、instances().setScheduling
のリファレンス ドキュメントをご覧ください。
可用性ポリシーのテスト
可用性ポリシーの設定後、メンテナンス イベントをシミュレートして、アプリケーションに対するこれらの可用性ポリシーの影響をテストできます。たとえば、次のいずれかの状況において、インスタンスでメンテナンス イベントをシミュレートする場合があります。
- メンテナンス イベント中にライブ マイグレーションするように構成されたインスタンスがあり、アプリケーションに対するライブ マイグレーションの影響をテストする必要があります。
- プリエンプティブ VM インスタンスで実行されるバッチジョブがあり、インスタンスのプリエンプションおよびシャットダウンがアプリケーションによってどのように処理されるかをテストする必要があります。
- メンテナンス イベント中にライブ マイグレーションするのではなく終了して再起動するようにインスタンスが構成されており、このシャットダウンと再起動のプロセスがアプリケーションによってどのように処理されるかをテストする必要があります。
gcloud
コマンドライン ツールまたは API リクエストを使用して、インスタンスでメンテナンス イベントをシミュレートできます。
gcloud
instances simulate-maintenance-event
コマンドを実行して、インスタンスでその構成済みメンテナンス ポリシー処理を有効にします。
gcloud beta compute instances simulate-maintenance-event [INSTANCE_NAME] \
--zone [ZONE]
ここで:
[INSTANCE_NAME]
は、メンテナンス イベントをシミュレートするインスタンスの名前です。複数のインスタンス名を指定して、同じゾーン内の複数のインスタンスでメンテナンス イベントをシミュレートできます。[ZONE]
はインスタンスが配置されているゾーンです。
API
API では、Compute Engine API の compute.instances.simulateMaintenanceEvent
メソッドに対してリクエストします。
POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/simulateMaintenanceEvent
ここで:
[INSTANCE_NAME]
は、メンテナンス イベントをシミュレートするインスタンスの名前です。[ZONE]
はインスタンスが配置されているゾーンです。
このメソッドについて詳しくは、instances().setScheduling
リファレンス ドキュメントをご覧ください。
次のステップ
- ライブ マイグレーションの詳細を見る。
- ライブ マイグレーション イベントの検出方法を学習する。