インスタンスのホスト メンテナンス ポリシーを設定する


このドキュメントでは、ホストイベントが発生したときのインスタンスの動作を制御するために、仮想マシン(VM)またはベアメタル インスタンスのホスト メンテナンス ポリシーを設定する方法について説明します。

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境でコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    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 を使用して認証するをご覧ください。

制限事項

  • プリエンプティブル VM のメンテナンス動作は変更できません。メンテナンス イベントが発生すると、プリエンプティブル VM は停止し、移行されません。プリエンプトされた VM は手動で再起動する必要があります。
  • E2 マシンタイプを使用して VM を作成後に、VM のメンテナンス動作を MIGRATE から TERMINATE(またはその逆)に変更することはできません。
  • c3-standard-192-metalx4-megamem-1920-metal などのベアメタル インスタンスのメンテナンス動作は変更できません。これらのインスタンスは TERMINATE に設定され、自動的に再起動します。

利用可能なホスト メンテナンス プロパティ

コンピューティング インスタンスのメンテナンス動作、再起動動作、ホストエラー時の待機動作を構成できます。特に指定しない限り、Compute Engine は各インスタンスをデフォルト値で構成します。

ホストイベント中、ライブ マイグレーションをサポートしていないインスタンスは、構成済みのホスト メンテナンス ポリシーに応じて、終了されるか自動的に再起動されます。

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

    • MIGRATE: メンテナンス イベント発生時に、Compute Engine がインスタンスをライブ マイグレーションします。ほとんどの VM では、これがデフォルトです。
    • TERMINATE: ライブ マイグレーションを使用する代わりに、インスタンスを停止します。これは、Z3、ベアメタル インスタンス、GPU や TPU などのアクセラレータを使用するインスタンスのデフォルト オプションです。これらのインスタンス タイプでは、onHostMaintenance の設定を変更できません。
  • automaticRestart: インスタンスがクラッシュしたか、システムによって停止された場合の動作を指定します。

    • trueデフォルト)では、インスタンスがクラッシュまたは停止した場合、Compute Engine はインスタンスを再起動します。
    • false: インスタンスがクラッシュまたは停止しても、Compute Engine はインスタンスを再起動しません。
  • localSsdRecoveryTimeout: ローカル SSD のリカバリ タイムアウトを設定します。これは、ホストのエラー後に Compute Engine がローカル SSD データの復元を待機する最大時間(時間単位)です。この設定は、ローカル SSD ディスクがアタッチされている VM にのみ適用されます。ローカル SSD ディスクがアタッチされていないインスタンスにこの設定を構成した場合、設定は無視されます。

    • 設定されていない場合(デフォルト): Compute Engine はローカル SSD データの復元を最大 1 時間待機します。Z3 VM の場合、デフォルトの待機時間は 6 時間です。
    • 0~168 の整数: Compute Engine がローカル SSD データの復元を待機する時間数を指定します。最大値は 7 日間に相当します。値が 0 の場合、Compute Engine はローカル SSD データの復元を待機せず、インスタンスを直ちに再起動します。
  • hostErrorTimeoutSecondsプレビュー): インスタンスが応答していないことを検出した後、Compute Engine がコンピューティング インスタンスを再起動または終了するまで待機する最大時間を秒単位で設定します。

    • 設定されていない場合(デフォルト): Compute Engine は最大 5.5 分(330 秒)待機してから、応答しないインスタンスを再起動します。
    • 90~330 の整数: Compute Engine が応答しないコンピューティング インスタンスを再起動するまで待機する秒数(30 秒単位で指定)。

インスタンスのホスト メンテナンス ポリシーを設定する

インスタンスのホスト メンテナンス ポリシーは、最初にインスタンスを作成するとき、またはインスタンスの作成後に変更できます。

インスタンスの作成時にホスト メンテナンス ポリシーを設定する

このセクションでは、インスタンスの作成時にホスト メンテナンス ポリシーを設定する方法について説明します。他のインスタンス作成例については、Compute Engine インスタンスの作成と開始をご覧ください。

コンピューティング インスタンスのホスト メンテナンス ポリシーは、Google Cloud コンソール、gcloud CLI、または REST を使用して作成時に設定できます。

コンソール

  1. Google Cloud コンソールで、[インスタンスの作成] ページに移動します。

    [インスタンスの作成] に移動

  2. インスタンスの名前を指定します。

  3. インスタンスの [リージョン] と [ゾーン] を選択します。

  4. [マシンの構成] セクションで、次の操作を行います。

    1. インスタンスのマシンタイプの詳細を指定します。
    2. [VM プロビジョニング モデルの詳細設定] メニューを開きます。
    3. [ホスト メンテナンス時] メニューで、次のいずれかの手順を選択します。
      1. メンテナンス イベント中に VM を移行するには、[VM インスタンスを移行] を選択します。
      2. メンテナンス イベント中にインスタンスを停止するには、[VM インスタンスを終了] を選択します。
  5. インスタンスを作成するには、[作成] をクリックします。

gcloud

新しいインスタンスのホスト メンテナンス ポリシーを設定するには、gcloud compute instances create コマンドを使用します。

--host-error-timeout-seconds プロパティ(プレビュー)を設定するには、gcloud beta compute instances create コマンドを使用する必要があります。

次のコマンドを使用して、新しいインスタンスのホスト メンテナンス ポリシーを設定できます。いずれかのフラグを省略すると、フラグのデフォルト値が使用されます。

  gcloud compute instances create INSTANCE_NAME \
      --zone=ZONE \
      --maintenance-policy=MAINTENANCE_BEHAVIOR \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT \
      --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT

次のように置き換えます。

  • INSTANCE_NAME: インスタンス名。
  • ZONE: インスタンスが配置されているゾーン。
  • MAINTENANCE_BEHAVIOR: インスタンスのメンテナンス イベント時の動作(TERMINATE または MIGRATE)。ほとんどのマシンタイプでは、このプロパティを省略すると、VM はデフォルトでマイグレーションされます。Z3 インスタンスとベアメタル インスタンスは終了します。
  • RESTART_ON_FAILURE_BEHAVIOR: 終了したインスタンスまたは応答しないインスタンスの再起動動作。restart-on-failure(デフォルト)または no-restart-on-failure に設定します。
  • SSD_RECOVERY_TIMEOUT: 終了したインスタンスまたは応答しないインスタンスにアタッチされたローカル SSD ディスクの復元に費やす時間数。有効な値は 0 から 168 で、1 時間単位で指定します。
  • ERROR_DETECTION_TIMEOUT: 応答しないインスタンスを再起動するまで Compute Engine が待機する秒数(90~330 秒(5.5 分))。30 秒単位で指定します。

REST

REST を使用して新しいインスタンスのホスト メンテナンス ポリシーを設定するには、instances.insert メソッドを使用します。

次のコマンドを使用して、新しいインスタンスのホスト メンテナンス ポリシーを設定できます。いずれかのフィールドを省略すると、そのフィールドのデフォルト値が使用されます。

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

      {
        "name": "INSTANCE_NAME",

        "scheduling": {
          "onHostMaintenance": "MAINTENANCE_BEHAVIOR",
          "automaticRestart": "RESTART_POLICY,
          "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
        }
      }

次のように置き換えます。

  • PROJECT_ID: インスタンスのプロジェクト。
  • ZONE: インスタンスを作成するゾーン。
  • INSTANCE_NAME: インスタンス名。
  • MAINTENANCE_BEHAVIOR: インスタンスのメンテナンス イベント時の動作(TERMINATE または MIGRATE)。ほとんどのマシンタイプでは、このフィールドを省略すると、VM はデフォルトでマイグレーションされます。Z3 インスタンスとベアメタル インスタンスは終了します。
  • RESTART_POLICY: メンテナンス イベントまたはホストエラーの発生後にインスタンスを自動的に再起動するかどうか。true(デフォルト)または false のいずれか。
  • SSD_RECOVERY_TIMEOUT: 応答しないインスタンスまたは終了したインスタンスにアタッチされたローカル SSD ディスクの復元に Compute Engine が費やす時間数。有効な値は 0 から 168 で、1 時間単位で指定します。Z3 のデフォルト値は 6 時間で、その他すべての VM のデフォルト値は 1 時間です。

ホストエラー検出のタイムアウトを設定する

Compute Engine が応答しないインスタンスの再起動または終了を待機する最大時間を設定する場合、このオプションはプレビュー版であるため、ベータ版 instances.insert メソッドを使用します。

リクエスト本文の scheduling オブジェクトに hostErrorTimeoutSeconds プロパティを追加します。ここで、HOST_ERROR_TIMEOUT は、Compute Engine が応答しないインスタンスを再起動または終了するまで待機する秒数です。有効な値は 90~330(5.5 分)で、30 秒単位で指定します。


   POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances

   {
      "name": "INSTANCE_NAME",

      "scheduling": {
        "onHostMaintenance": "MAINTENANCE_BEHAVIOR",
        "automaticRestart": "RESTART_POLICY,
        "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
        "hostErrorTimeoutSeconds": HOST_ERROR_TIMEOUT,
      }
    }

既存のインスタンスのホスト メンテナンス ポリシーを更新する

コンソール

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. 設定を変更するインスタンスの名前をクリックします。インスタンスの詳細ページが表示されます。

  3. [詳細] タブを選択して、次の手順を完了します。

    1. ページの上部にある [編集] ボタンをクリックします。
    2. [管理] セクションに移動します。[可用性ポリシー] セクションで、ホスト メンテナンス オプションを変更できます。
    3. [保存] をクリックします。

gcloud

gcloud compute instances set-scheduling コマンドを使用して、既存のインスタンスのホスト メンテナンス ポリシーを更新します。前のセクションで説明した、インスタンス作成コマンドと同じパラメータを使用します。

Compute Engine が応答しないインスタンスの再起動または終了を待機する最大時間を更新するには(プレビュー)、gcloud beta compute instances set-scheduling コマンドを使用し、このコマンドに --host-error-timeout-seconds=NUMBER_OF_SECONDS を含めます。

    gcloud compute instances set-scheduling INSTANCE_NAME \
      --maintenance-policy=MAINTENANCE_BEHAVIOR \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT

次のように置き換えます。

  • NUMBER_OF_SECONDS: 応答しない VM を再起動または終了するまで Compute Engine が待機する秒数(90~330(5.5 分))。30 秒単位で指定します。
    • INSTANCE_NAME: インスタンス名。
    • MAINTENANCE_BEHAVIOR: インスタンスのメンテナンス イベント時の動作(TERMINATE または MIGRATE)。ほとんどのマシンタイプでは、このプロパティを省略すると、VM はデフォルトでマイグレーションされます。Z3 インスタンスとベアメタル インスタンスは終了します。
    • RESTART_ON_FAILURE_BEHAVIOR: 終了したインスタンスまたは応答しないインスタンスの再起動動作。restart-on-failure(デフォルト)または no-restart-on-failure に設定します。
    • SSD_RECOVERY_TIMEOUT: 終了したインスタンスまたは応答しないインスタンスにアタッチされたローカル SSD ディスクの復元に費やす時間数。有効な値は 0 から 168 で、1 時間単位で指定します。
    • NUMBER_OF_SECONDS: 応答しないインスタンスを再起動するまで Compute Engine が待機する秒数(90~330 秒(5.5 分))。30 秒単位で指定します。

REST

instances.setScheduling メソッドに対する POST リクエストを使用して、既存のインスタンスのホスト メンテナンス ポリシーを更新します。

    POST https://compute.googleapis.com/compute/v1projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/setScheduling

    {
      "onHostMaintenance": "MAINTENANCE_BEHAVIOR",
      "automaticRestart": RESTART_POLICY,
      "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
    }

次のように置き換えます。

  • PROJECT_ID: インスタンスのプロジェクト。
  • ZONE: インスタンスが配置されているゾーン。
  • INSTANCE_NAME: インスタンス名。
  • MAINTENANCE_BEHAVIOR: このインスタンスのメンテナンス イベント時の動作(TERMINATE または MIGRATE)。
  • RESTART_POLICY: インスタンスを自動的に再起動するかどうか(true または false)。
    • SSD_RECOVERY_TIMEOUT: インスタンスにアタッチされたローカル SSD ディスクの復元に費やす時間数。有効な値は 0 から 168 で、1 時間単位で指定します。

ホストエラー検出タイムアウトを更新する

Compute Engine が応答しない VM の再起動や終了を待機する最大時間を更新する場合、この機能はプレビューであるため、ベータ版 instances.setScheduling メソッドを使用する必要があります。

hostErrorTimeoutSeconds プロパティをリクエスト本文に追加します。ここで、HOST_ERROR_TIMEOUT は、Compute Engine が応答しないインスタンスを再起動または終了するまで待機する秒数です。有効な値は 90~330(5.5 分)で、30 秒単位で指定します。

  POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/setScheduling

  {
    ...
    "hostErrorTimeoutSeconds": NUMBER_OF_SECONDS
  }

インスタンスのホスト メンテナンス ポリシー設定を表示する

コンソール

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

    [VM インスタンス] に移動

  2. 設定を表示する対象のインスタンスの名前をクリックします。インスタンスの詳細ページが開きます。

  3. [管理] セクションに移動します。[可用性ポリシー] サブセクションには、次の設定の現在値が表示されます。

    • ホスト メンテナンス時
    • 自動再起動
    • ホストエラーのタイムアウト

gcloud

gcloud compute instances describe コマンドを使用して、インスタンスのホスト メンテナンス オプションの設定を表示します。

hostErrorTimeoutSeconds 設定の現在値を表示するには(プレビュー)、gcloud beta compute instances describe コマンドを使用します。

 gcloud compute instances describe INSTANCE_NAME \
 --zone ZONE --format="yaml(scheduling)"

次のように置き換えます。

  • INSTANCE_NAME: インスタンスの名前
  • ZONE: インスタンスが配置されているゾーン

出力には、ホスト メンテナンス ポリシーの現在の設定が含まれます。次に例を示します。

scheduling:
  automaticRestart: true
  hostErrorTimeoutSeconds: 120
  localSsdRecoveryTimeout:
    nanos: 0
    seconds: '10800'
  onHostMaintenance: MIGRATE
  preemptible: false
  provisioningModel: STANDARD

REST

インスタンスのホスト メンテナンス設定を表示するには、instances.get メソッドを使用します。

  GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME

次のように置き換えます。

  • PROJECT_ID: インスタンスが配置されているプロジェクト。
  • ZONE: インスタンスが配置されているゾーン。
  • INSTANCE_NAME: インスタンス名。

出力には、インスタンスのホスト メンテナンス ポリシーの設定を含む scheduling オブジェクトが表示されます。次に例を示します。

{
...
  "scheduling": {
      "onHostMaintenance": "MIGRATE",
      "automaticRestart": true,
      "preemptible": false,
      "provisioningModel": "STANDARD",
      "localSsdRecoveryTimeout": {
        "seconds": "10800",
        "nanos": 0
      }
    },
...
}

ホストエラー タイムアウトの設定を表示する

現在の hostErrorTimeoutSeconds 設定を表示するには、ベータ版の instances.get メソッドを使用して GET リクエストを作成します。

 GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME

次のように置き換えます。

  • PROJECT_ID: インスタンスのプロジェクト。
  • ZONE: インスタンスが配置されているゾーン。
  • INSTANCE_NAME: インスタンス名。

出力には、インスタンスのホストエラー検出タイムアウトを含む scheduling オブジェクトが表示されます。次に例を示します。

{
...
  "scheduling": {
    "onHostMaintenance": "MIGRATE",
    "automaticRestart": true,
    "preemptible": false,
    "provisioningModel": "STANDARD",
    "hostErrorTimeoutSeconds": 120,
    "localSsdRecoveryTimeout": {
      "seconds": "10800",
      "nanos": 0
    }
  },
...
}

次のステップ