インスタンスの可用性ポリシーの設定

Google Compute Engine で、インフラストラクチャの定期メンテナンスを行います。このページでは、このメンテナンス イベントの種類とおおよその頻度について説明します。また、インスタンスの可用性オプションを設定して、メンテナンス イベントが発生したときの VM インスタンスの動作を構成する方法についても説明します。このページでは、メンテナンス イベントの発生時にインスタンスにライブ マイグレーションを設定する方法についても説明します。

始める前に

メンテナンス イベント

Compute Engine のメンテナンス イベントでは、ハードウェアとソフトウェアを更新します。メンテナンス イベントによっては、メンテナンス中のホストから VM を移動する必要がありますが、これらのインスタンスのスケジューリング動作は Compute Engine によって自動的に管理されます。インスタンスの可用性ポリシーでライブ マイグレーションの使用を構成した場合は、Compute Engine が VM インスタンスのライブ マイグレーションを行います。これにより、イベント発生中のアプリケーションの中断を防ぐことができます。また、ライブ マイグレーションを行わず、イベント発生中にインスタンスを終了することもできます。

次の表では、Compute Engine のメンテナンス イベントをおおまかに 2 つに分類しています。それぞれで例を示し、どちらのメンテナンス イベントで VM を別のホストにライブ マイグレーションする必要があるかを示しています。

メンテナンス イベントのタイプ おおよその頻度 * 新しいホストへのライブ マイグレーションが必要
ホスト メンテナンス ホストカーネルのアップグレード、ハードウェアの修理またはアップグレード 1 か月に 1 回
簡易メンテナンス ハイパーバイザー レベルのアップグレード、ネットワーク スタックのアップグレード 1 週間に 1~2 回 ×

* これはおおよその頻度であり、実施を保証するものではありません。Compute Engine は記載内容よりも高い頻度でメンテナンスを実施することがあります。

可用性ポリシーの選択

別のホストマシンに VM を移動することが必要となるイベントが発生した場合は、VM インスタンスの可用性ポリシーによりその動作を指定します。たとえば、Compute Engine が別のホストへのライブ マイグレーションを行っている間、VM インスタンスの実行を継続するか終了するかを指定できます。インスタンスの可用性ポリシーは VM インスタンスの動作を定義します。このポリシーは、必要なときにいつでも更新できます。

インスタンスの可用性ポリシーを変更する場合、次の 2 つの構成を行います。

  • VM インスタンスのメンテナンス動作。メンテナンス イベントが発生した場合に、インスタンスをライブ マイグレーションするか終了するかを設定します。
  • インスタンスの再起動動作。インスタンスがクラッシュまたは終了した場合に、インスタンスを自動的に再起動するかどうかを設定します。

デフォルトのメンテナンス動作では、インスタンスがライブ マイグレーションされますが、メンテナンス イベント中にインスタンスを終了するよう設定を変更することもできます。

ライブ マイグレーション

デフォルトでインスタンスがライブ マイグレーションされるよう設定されているため、インスタンスはインフラストラクチャのメンテナンス イベントの影響を受けることなく Google Compute Engine によって自動的に移行されます。インスタンスは移行中も実行されます。通常は、ほとんどのインスタンスが影響を受けませんが、まれにインスタンスのパフォーマンスが一時的に低下する場合があります。この設定は、継続的な稼働を必要とし、一時的なパフォーマンスの低下に対応できるインスタンスに適しています。

インスタンスを移行する際、Google Compute Engine はゾーン オペレーションのリストに公開されているシステム イベントを報告します。このイベントを確認するには、特定のゾーンに対する Compute Engine のオペレーションを表示します。ライブ マイグレーション イベントには、次のオペレーション タイプがあります。

compute.instances.migrateOnHostMaintenance

終了と(必要に応じた)再起動

インスタンスをライブ マイグレーションしない場合は、インスタンスを終了し、必要に応じて再起動するよう設定できます。このオプションでは、Google Compute Engine がインスタンスにシャットダウンするよう信号を送り、インスタンスが完全にシャットダウンするのを待ってからインスタンスを終了して、メンテナンス イベントに関係なく再起動します。このオプションは、インスタンスが常に最大限のパフォーマンスを要求し、すべてのアプリケーションがインスタンス障害や再起動に対処するように構築されている場合に最適です。

インスタンスを終了、再起動すると、Google Compute Engine はゾーン オペレーションのリストに公開されているシステム イベントを報告します。このイベントを確認するには、特定のゾーンに対する Compute Engine のオペレーションを表示します。終了イベントには、次のオペレーション タイプがあります。

compute.instances.terminateOnHostMaintenance

インスタンスを再起動したときにも前と同じ永続ブートディスクを使用し、構成したセカンダリ永続ディスクを再接続します。それらのディスク上のデータは、インスタンスの移行や再起動の後も維持されます。

ローカルの SSD データはインスタンスの終了後は維持されません。インスタンスが再起動したときには、新しいローカル SSD が作成されるので、それをフォーマットおよびマウントする必要があります。

自動再起動

メンテナンス イベントが発生したとき、またはハードウェアの根本的な問題でインスタンス障害が起きたときにインスタンスを終了するよう設定されている場合、automaticRestart フィールドを true に設定すると、Google Compute Engine がインスタンスを自動的に再起動します。この設定は、sudo shutdown の呼び出しなどのユーザー操作によってインスタンスがオフラインになった場合には適用されません。

インスタンスを自動的に再起動する際、Google Compute Engine はゾーン オペレーションのリストに公開されているシステム イベントを報告します。このイベントを確認するには、特定のゾーンに対する Compute Engine のオペレーションを表示します。自動再起動イベントには、次のオペレーション タイプがあります。

compute.instances.automaticRestart

Compute Engine のオペレーションの表示

Google Cloud Platform Consolegcloud コマンド ラインツールCompute Engine API を使用して、完了したオペレーションの一覧を取得できます。

Console

プロジェクトのオペレーションの一覧を表示するには、[オペレーション] ページに移動します。

  1. [オペレーション] ページに移動します。

  2. オペレーションの詳細については、[オペレーションの概要] をクリックしてください。たとえば、my-instance インスタンスの移行の詳細を表示するには、[インスタンスの自動移行] オペレーションをクリックします。 ライブ マイグレーションがあるオペレーション ページのスクリーンショット ライブ マイグレーションの詳細のスクリーンショット

gcloud

gcloud compute を使用してプロジェクトのオペレーションの一覧を表示するには、operations list サブコマンドを使用します。

指定したゾーン内のオペレーションの一覧を表示するには、--filter フラグを追加します。

gcloud compute operations list --filter="zone:(ZONE)"

たとえば、us-cental1-c でのオペレーションの一覧を表示するには、次のコマンドを実行します。

gcloud compute operations list --filter="zone:(us-central1-c)"

NAME                            TYPE                                        TARGET                                HTTP_STATUS  STATUS  TIMESTAMP
systemevent-1543845145000...    compute.instances.migrateOnHostMaintenance  us-central1-c/instances/my-instance   200          DONE    2018-12-03T05:52:25.000-08:00

API

オペレーションに対する API リクエストは、グローバルリージョンゾーンのいずれかのレベルで指定する必要があります。ライブ マイグレーション、インスタンスの終了、自動再起動はすべてゾーンレベルのオペレーションです。

ゾーン オペレーションの場合は、zoneOperations.list メソッドに GET リクエストを発行します。

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/operations

ここで

  • [PROJECT_ID] はこのリクエストのプロジェクト ID です。
  • [ZONE] はこのリクエストのゾーンの名前です。

    リクエスト本文は空のままにします。

以下はゾーン オペレーション リクエストの出力例です。この出力では、ホストの移行に関する詳細が表示されています。

{
 "kind": "compute#operation",
 "id": "3216798767364213712",
 "name": "systemevent-1543845145000-57c1e7574b840-a195b637-5ff74d9b",
 "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c",
 "operationType": "compute.instances.migrateOnHostMaintenance",
 "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/instances/my-instance",
 "targetId": "3070988523247098025",
 "status": "DONE",
 "statusMessage": "Instance migrated during Compute Engine maintenance.",
 "user": "system",
 "progress": 100,
 "insertTime": "2018-12-03T05:52:25.000-08:00",
 "startTime": "2018-12-03T05:52:25.000-08:00",
 "endTime": "2018-12-03T05:52:25.000-08:00",
 "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/operations/systemevent-1543845145000-57c1e7574b840-a195b637-5ff74d9b"
}

可用性ポリシーの設定

onHostMaintenanceautomaticRestart プロパティを使ってインスタンスのメンテナンス動作と自動再起動を構成します。明示的に指定しない限り、すべてのインスタンスはデフォルト値に設定されます。

  • onHostMaintenance: インスタンスの再起動が必要になるメンテナンス イベントが発生したときの動作を指定します。

    • デフォルトmigrate では、Compute Engine はメンテナンス イベント発生時にインスタンスをライブ マイグレーションします。
    • terminate では、インスタンスを移行せずに終了します。
  • automaticRestart: インスタンスがクラッシュしたか、システムによって終了した場合の動作を指定します。

    • デフォルトtrue では、インスタンスがクラッシュまたは終了すると、Compute Engine はインスタンスを再起動します。
    • false では、インスタンスがクラッシュまたは終了しても、Compute Engine はインスタンスを再起動しません。

インスタンスの可用性ポリシーは、最初のインスタンス作成時か、インスタンス作成後setScheduling メソッドを使用して変更できます。

インスタンス作成時のオプションの設定

Console

  1. GCP Console の [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. [インスタンスを作成] をクリックします。
  3. [新しいインスタンスの作成] ページで、インスタンス向けに希望するプロパティを入力します。
  4. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] オプションを展開します。
  5. [可用性ポリシー] で、[自動再起動] と [ホスト メンテナンス時] オプションを設定します。
  6. [作成] をクリックしてインスタンスを作成します。

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

onHostMaintenanceautomaticRestart パラメータは、リクエスト本文の一部として送信します。

{
  "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
  }
}

詳しくは、インスタンスの参照ドキュメントをご覧ください。

インスタンスのオプションの更新

コンソール

  1. Google Cloud Platform Console の [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. 設定を変更するインスタンスをクリックします。
  3. [可用性ポリシー] で [編集] ボタンをクリックし、可用性ポリシーを変更します。

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 インスタンスで実行されるバッチジョブがあり、インスタンスのプリエンプションおよびシャットダウンがアプリケーションによってどのように処理されるかをテストする必要がある。
  • メンテナンス イベント中にライブ マイグレーションするのではなく終了して再起動するようにインスタンスが構成されており、このシャットダウンと再起動のプロセスがアプリケーションによってどのように処理されるかをテストする必要がある。

シミュレート メンテナンス イベントには決められた API レート制限が適用されます。

gcloud コマンドライン ツールまたは API リクエストを使用して、インスタンスでメンテナンス イベントをシミュレートできます。

gcloud

instances simulate-maintenance-event コマンドを実行して、インスタンスでその構成済みメンテナンス ポリシー処理を有効にします。

gcloud 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/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/simulateMaintenanceEvent

ここで

  • [INSTANCE_NAME] は、メンテナンス イベントをシミュレートするインスタンスの名前です。
  • [ZONE] はインスタンスが配置されているゾーンです。

    このメソッドの詳細については、instances().simulateMaintenanceEvent 参照ドキュメントをご覧ください。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント