コンピューティング インスタンスのホスト メンテナンス ポリシーを設定する


このドキュメントでは、ホストイベント中の動作を決定するために、Compute Engine インスタンスのホスト メンテナンス ポリシーを設定する方法について説明します。ホスト メンテナンス ポリシーの詳細については、ホスト メンテナンス ポリシーをご覧ください。

ホスト メンテナンス ポリシーは、インスタンスが実行されているホストでメンテナンスが必要になった場合やエラーが発生した場合に、インスタンスがどのように応答するかを決定します。インスタンスのホスト メンテナンス ポリシーを構成すると、次のことができます。

  • ダウンタイムの最小化。

  • データ損失の防止。

制限事項

ホスト メンテナンス ポリシーには、次の制限が適用されます。

  • E2 マシンタイプを使用する仮想マシン インスタンスは、Spot VM またはプリエンプティブル VM でない限り、ホスト メンテナンス イベント中にのみライブ マイグレーションできます。

  • 次のインスタンスは、ホスト メンテナンス イベント中にのみ停止できます。

  • Spot VM とプリエンプティブル 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. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.
      3. REST

        このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

必要なロール

コンピューティング インスタンスのホスト メンテナンス ポリシーを設定するために必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1)roles/compute.instanceAdmin.v1)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

この事前定義ロールには、コンピューティング インスタンスのホスト メンテナンス ポリシーを設定するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

コンピューティング インスタンスのホスト メンテナンス ポリシーを設定するには、次の権限が必要です。

  • インスタンスを作成する:
    • プロジェクトに対する compute.instances.create
    • カスタム イメージを使用して VM を作成する: イメージに対する compute.images.useReadOnly
    • スナップショットを使用して VM を作成する: スナップショットに対する compute.snapshots.useReadOnly
    • インスタンス テンプレートを使用して VM を作成する: インスタンス テンプレートに対する compute.instanceTemplates.useReadOnly
    • レガシー ネットワークを VM に割り当てる: プロジェクトに対する compute.networks.use
    • VM の静的 IP アドレスを指定する: プロジェクトに対する compute.addresses.use
    • レガシー ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトに対する compute.networks.useExternalIp
    • VM のサブネットを指定する: プロジェクトまたは選択したサブネットに対する compute.subnetworks.use
    • VPC ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトまたは選択したサブネットに対する compute.subnetworks.useExternalIp
    • VM の VM インスタンス メタデータを設定する: プロジェクトに対する compute.instances.setMetadata
    • VM にタグを設定する: VM に対する compute.instances.setTags
    • VM にラベルを設定する: VM に対する compute.instances.setLabels
    • VM が使用するサービス アカウントを設定する: VM に対する compute.instances.setServiceAccount
    • VM に新しいディスクを作成する: プロジェクトに対する compute.disks.create
    • 既存のディスクを読み取り専用モードまたは読み取り / 書き込みモードでアタッチする: ディスクに対する compute.disks.use
    • 既存のディスクを読み取り専用モードでアタッチする: ディスクに対する compute.disks.useReadOnly
  • インスタンス テンプレートを作成する: プロジェクトに対する compute.instanceTemplates.create
  • インスタンスのホスト メンテナンス ポリシーを更新する: インスタンスに対する compute.instances.setScheduling

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

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

スケジュールされたメンテナンスや予期しないホストイベント中にコンピューティング インスタンスがどのように動作するかをカスタマイズできます。特に指定しない限り、Compute Engine は、インスタンスの作成、インスタンスの一括作成、インスタンス テンプレートの作成時にデフォルトの設定を使用します。

次のホスト メンテナンス プロパティを構成できます。

  • メンテナンス動作(onHostMaintenance: ホストでメンテナンス イベントが発生し、インスタンスの再起動が発生する可能性がある場合のインスタンスの動作。このプロパティは、次のいずれかに設定できます。

    • 移行: Compute Engine は、インスタンスを別のホストに自動的にライブ マイグレーションします。これは、Spot VM とプリエンプティブル VM を除くすべてのタイプのインスタンスのデフォルトの設定です。

    • 終了: Compute Engine がインスタンスを停止します。これは、Spot VM またはプリエンプティブル VM のデフォルトの設定です。また、18 TiB を超える Titanium SSD がアタッチされた Z3 インスタンス、ベアメタル インスタンス、GPU または TPU が割り当てられたインスタンスでサポートされている唯一の設定です。

  • 自動再起動(automaticRestart: インスタンスがクラッシュした場合にインスタンスを再起動するかどうか、またはメンテナンス イベントなどのプログラムによる停止のために Compute Engine がインスタンスを停止するかどうか。このプロパティは、次のいずれかに設定できます。

    • オン: Compute Engine はインスタンスを自動的に再起動します。これは、Spot VM とプリエンプティブル VM を除くすべてのタイプのインスタンスのデフォルトの設定です。この設定は次のように指定します。

      • Google Cloud コンソールの [詳細] ペインの [自動再起動] リストで、[オン(推奨)] を選択します。

      • Google Cloud CLI の場合は、--restart-on-failure フラグを使用します。

      • REST の場合は、automaticRestart フィールドを true に設定します。

    • オフ: Compute Engine はインスタンスを再起動しません。これは、Spot VM またはプリエンプティブル VM のデフォルトの設定です。この設定は次のように指定します。

      • Google Cloud コンソールの [詳細] ペインの [自動再起動] リストで、[オフ] を選択します。

      • gcloud CLI の場合は、--no-restart-on-failure フラグを使用します。

      • REST の場合は、automaticRestart フィールドを false に設定します。

  • ローカル SSD のデータ復元タイムアウト(localSsdRecoveryTimeout: この設定は、ローカル SSD ディスクがアタッチされているインスタンスにのみ適用されます。これにより、ホストエラーの発生後に Compute Engine がローカル SSD ディスクからデータを復元するまでの待機時間が決まります。デフォルトでは、このプロパティは設定されていません。このプロパティは、次のいずれかに設定できます。

    • 設定なし: Compute Engine はデフォルトの待機時間を使用します。

      • Z3 VM の場合は 6 時間です。

      • 他のすべてのタイプのインスタンスの場合は 1 時間です。

    • 0~168 の整数: 待機する時間数。このプロパティを 0 に設定すると、Compute Engine はローカル SSD データを復元せず、インスタンスを直ちに再起動します。

  • ホストエラーのタイムアウト(hostErrorTimeoutSeconds: このプロパティは、応答しないインスタンスを再起動するまでに Compute Engine が待機する時間を決定します。この設定は、インスタンスが応答しなくなる前に構成する必要があります。インスタンスが応答不能から復旧するのに十分な長さのタイムアウトを設定します。このプロパティは、次のいずれかに設定できます。

    • 設定なし: Compute Engine は最大 330 秒(5 分 30 秒)待機します。これは、あらゆるタイプのインスタンスのデフォルトの設定です。

    • 90~330 の整数: 待機時間(秒単位、30 秒単位で指定)。

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

デフォルトでは、コンピューティング インスタンスはホスト メンテナンス ポリシーのデフォルトの設定を使用します。これらの設定をカスタマイズするには、次のいずれかの方法を使用します。

既存のインスタンスのポリシーを設定する

既存のインスタンスのホスト メンテナンス ポリシーを変更する前に、次のことを確認してください。

  • 次のタイプのインスタンスのメンテナンス動作(onHostMaintenance)は変更できません。

  • ホストエラーまたはプログラムによる停止後に自動的に再起動するように Spot VM またはプリエンプティブル VM を構成することはできません。

ローカル SSD ディスクがアタッチされているインスタンスでローカル SSD データ復旧のタイムアウトを変更するには、gcloud CLI または REST API を使用します。それ以外の場合は、次のいずれかのオプションを選択します。

コンソール

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

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

  2. [名前] 列で、更新するインスタンスの名前をクリックします。インスタンスの詳細を示すページが開きます。

  3. [ 編集] をクリックします。インスタンスのプロパティを編集できるページが表示されます。

  4. [管理] セクションで、次の 1 つ以上の操作を行うことができます。

    • メンテナンス イベント中の動作を変更するには、[ホスト メンテナンス時] リストから別のオプションを選択します。

    • 応答しないインスタンスを再起動するまでのタイムアウト期間を変更するには、[ホストエラーのタイムアウト] リストから別のオプションを選択します。

    • ホストエラーまたはプログラムによる停止後にインスタンスを再起動するかどうかを変更するには、[自動再起動] リストから別のオプションを選択します。

  5. [保存] をクリックします。

gcloud

既存のインスタンスでホスト メンテナンス ポリシーを変更するには、次のフラグを 1 つ以上指定して gcloud compute instances set-scheduling コマンドを使用します。

  • ホスト メンテナンスの動作を変更するには、--maintenance-policy フラグを含めます。

  • 自動再起動の動作を変更するには、次のいずれかを行います。

    • インスタンスを自動的に再起動するには、--restart-on-failure フラグを指定します。

    • インスタンスが自動的に再起動されないようにするには、--no-restart-on-failure フラグを指定します。

  • インスタンスにローカル SSD ディスクがアタッチされている場合にローカル SSD データの復元タイムアウトを変更するには、--local-ssd-recovery-timeout フラグを指定します。

  • ホストエラーのタイムアウトを変更するには、--host-error-timeout-seconds フラグを含めます。

たとえば、ホスト メンテナンスの動作を変更し、ホストエラーまたはプログラムによる停止後にインスタンスを自動的に再起動して、ローカル SSD データ復元タイムアウトとホストエラー タイムアウトを変更するには、次のコマンドを実行します。

gcloud compute instances set-scheduling INSTANCE_NAME \
    --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT \
    --local-ssd-recovery-timeout=LOCAL_SSD_RECOVERY_TIMEOUT \
    --maintenance-policy=MAINTENANCE_POLICY \
    --restart-on-failure \
    --zone=ZONE

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

  • INSTANCE_NAME: インスタンスの名前。

  • ERROR_DETECTION_TIMEOUT: 応答しないインスタンスを Compute Engine が再起動するまでの秒数。値は 90(90 秒)から 330(330 秒、5 分 30 秒)の範囲で指定してください。30 秒単位で指定できます。

  • MAINTENANCE_POLICY: インスタンスのメンテナンス動作。値は TERMINATE または MIGRATE のいずれかです。

  • LOCAL_SSD_RECOVERY_TIMEOUT: アタッチされたローカル SSD ディスクからデータの復元に費やす時間。値は 0(0 時間)~168(168 時間、7 日間)の範囲で指定する必要があります。このフィールドを 0 に設定すると、Compute Engine はローカル SSD データを復元しません。

  • ZONE: インスタンスが存在するゾーン。

REST

既存のインスタンスのホスト メンテナンス ポリシーを変更するには、instances.setScheduling メソッドPOST リクエストを送信します。リクエスト本文に、次のフィールドを 1 つ以上含めます。

  • ホスト メンテナンスの動作を変更するには、onHostMaintenance フィールドを含めます。

  • 自動再起動の動作を変更するには、次のいずれかを行います。

    • インスタンスを自動的に再起動するには、automaticRestart フィールドを含めます。

    • インスタンスが自動的に再起動しないようにするには、automaticRestart フィールドを含めます。

  • インスタンスにローカル SSD ディスクがアタッチされている場合にローカル SSD データの復元タイムアウトを変更するには、localSsdRecoveryTimeout フィールドを含めます。

  • ホストエラーのタイムアウトを変更するには、hostErrorTimeoutSeconds フィールドを含めます。

たとえば、ホスト メンテナンスの動作を変更して、ホストエラーまたはプログラムによる停止後にインスタンスを自動的に再起動し、ローカル SSD データの復元タイムアウトとホストエラーのタイムアウトを変更するには、次のようにリクエストを送信します。

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

{
  "automaticRestart": AUTOMATIC_RESTART,
  "hostErrorTimeoutSeconds": ERROR_DETECTION_TIMEOUT,
  "localSsdRecoveryTimeout": LOCAL_SSD_RECOVERY_TIMEOUT,
  "onHostMaintenance": "MAINTENANCE_POLICY"
}

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

  • PROJECT_ID: インスタンスが存在するプロジェクトの ID。

  • ZONE: インスタンスが存在するゾーン。

  • INSTANCE_NAME: インスタンスの名前。

  • AUTOMATIC_RESTART: インスタンスがクラッシュした場合、または Compute Engine がプログラムによる停止のためにインスタンスを停止した場合の、インスタンスの自動再起動の動作。次のいずれかの値を指定します。

    • Compute Engine でインスタンスを自動的に再起動できるようにするには: true

    • 自動再起動を防止するには: false

  • ERROR_DETECTION_TIMEOUT: 応答しないインスタンスを再起動するまでの秒数。値は 90(90 秒)から 330(330 秒、5 分 30 秒)の範囲で指定してください。30 秒単位で指定できます。

  • LOCAL_SSD_RECOVERY_TIMEOUT: アタッチされたローカル SSD ディスクからデータの復元に費やす時間。値は 0(0 時間)~168(168 時間、7 日間)の範囲で指定する必要があります。このフィールドを 0 に設定すると、Compute Engine はローカル SSD データを復元しません。

  • MAINTENANCE_POLICY: インスタンスのメンテナンス動作。値は TERMINATE または MIGRATE のいずれかです。

インスタンスの作成時にポリシーを設定する

コンピューティング インスタンスのホスト メンテナンス ポリシーは、インスタンスの作成時に設定できます。

ローカル SSD ディスクがアタッチされたインスタンスを作成するときにローカル SSD データ復元のタイムアウトを設定するには、gcloud CLI または REST API を使用します。それ以外の場合は、次のいずれかのオプションを選択します。

コンソール

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

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

  2. [名前] フィールドに、インスタンスの名前を入力します。

  3. [リージョン] フィールドと [ゾーン] フィールドで、インスタンスを作成するリージョンとゾーンを指定します。

  4. インスタンスのマシンタイプを指定します。

  5. ナビゲーション メニューで、[詳細設定] をクリックします。

  6. [プロビジョニング モデル] セクションで、[VM プロビジョニング モデルの詳細設定] を開き、次のいずれかを行います。

    • メンテナンス イベント中の動作を設定するには、[ホスト メンテナンス時] リストで次のいずれかのオプションを選択します。

      • ホスト メンテナンス イベント中にインスタンスを移行するには、[VM インスタンスを移行(推奨)] を選択します。

      • ホスト メンテナンス イベント中にインスタンスを停止するには、[VM インスタンスを終了] を選択します。

    • 応答しないインスタンスを再起動するまでのタイムアウト期間を設定するには、[ホストエラーのタイムアウト] リストで次のいずれかのオプションを選択します。

      • ホストエラーのタイムアウトを指定しない場合は、[未指定(デフォルト)] を選択します。

      • ホストエラーのタイムアウトを指定するには、使用可能なオプションのいずれか(最大 5 分 30 秒)を選択します。

    • インスタンスがクラッシュまたは停止した場合に再起動するかどうかを設定するには、[自動再起動] リストで次のいずれかのオプションを選択します。

      • ホストエラーまたはプログラムによる停止後にインスタンスを自動的に再起動するには、[オン(推奨)] を選択します。

      • ホストエラーまたはプログラムによる停止後にインスタンスが自動的に再起動しないようにするには、[オフ] を選択します。

  7. [作成] をクリックします。

gcloud

インスタンスの作成時にホスト メンテナンス ポリシーを設定するには、次のフラグを 1 つ以上指定して gcloud compute instances create コマンドを使用します。

  • ホストのメンテナンス動作を設定するには、--maintenance-policy フラグを含めます。

  • 自動再起動の動作を設定するには、次のいずれかを行います。

    • インスタンスを自動的に再起動するには、--restart-on-failure フラグを指定します。

    • インスタンスが自動的に再起動されないようにするには、--no-restart-on-failure フラグを指定します。

  • インスタンスにローカル SSD ディスクがアタッチされている場合にローカル SSD データ復元タイムアウトを設定するには、--local-ssd-recovery-timeout フラグを追加します。

  • ホストエラーのタイムアウトを設定するには、--host-error-timeout-seconds フラグを含めます。

たとえば、ホストのメンテナンス動作を設定して、ホストエラーまたはプログラムによる停止後にインスタンスを自動的に再起動し、ローカル SSD データの復元タイムアウトとホストエラー タイムアウトを設定するには、次のコマンドを実行します。

gcloud compute instances create INSTANCE_NAME \
    --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT \
    --local-ssd-recovery-timeout=LOCAL_SSD_RECOVERY_TIMEOUT \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=MAINTENANCE_POLICY \
    --restart-on-failure \
    --zone=ZONE

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

  • INSTANCE_NAME: インスタンスの名前。

  • ERROR_DETECTION_TIMEOUT: 応答しないインスタンスを再起動するまでの秒数。値は 90(90 秒)から 330(330 秒、5 分 30 秒)の範囲で指定してください。30 秒単位で指定できます。

  • LOCAL_SSD_RECOVERY_TIMEOUT: アタッチされたローカル SSD ディスクからデータの復元に費やす時間。値は 0(0 時間)~168(168 時間、7 日間)の範囲で指定する必要があります。このフィールドを 0 に設定すると、Compute Engine はローカル SSD データを復元しません。

  • MACHINE_TYPE: 使用するマシンタイプ。

  • MAINTENANCE_POLICY: インスタンスのメンテナンス動作。値は TERMINATE または MIGRATE のいずれかです。Spot VM、プリエンプティブル VM、またはライブ マイグレーションをサポートしていないインスタンスを作成する場合は、TERMINATE のみを使用できます。

  • ZONE: インスタンスを作成するゾーン。

REST

インスタンスの作成時にホスト メンテナンス ポリシーを設定するには、instances.insert メソッドPOST リクエストを送信します。リクエスト本文の scheduling フィールドに、次のフィールドを 1 つ以上含めます。

  • ホスト メンテナンスの動作を設定するには、onHostMaintenance フィールドを含めます。

  • 自動再起動の動作を設定するには、次のいずれかを行います。

    • インスタンスを自動的に再起動するには、automaticRestart フィールドを含めます。

    • インスタンスが自動的に再起動しないようにするには、automaticRestart フィールドを含めます。

  • インスタンスにローカル SSD ディスクがアタッチされている場合にローカル SSD データ復元タイムアウトを設定するには、localSsdRecoveryTimeout フィールドを含めます。

  • ホストエラーのタイムアウトを設定するには、hostErrorTimeoutSeconds フィールドを含めます。

たとえば、ホスト メンテナンスの動作を設定して、ホストエラーまたはプログラムによる停止後にインスタンスを自動的に再起動し、ローカル SSD データの復元タイムアウトとホストエラーのタイムアウトを設定する場合は、次のようにリクエストを送信します。

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

{
  "name": "INSTANCE_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "scheduling": {
    "automaticRestart": AUTOMATIC_RESTART,
    "hostErrorTimeoutSeconds": ERROR_DETECTION_TIMEOUT,
    "localSsdRecoveryTimeout": LOCAL_SSD_RECOVERY_TIMEOUT,
    "onHostMaintenance": "MAINTENANCE_POLICY"
  }
}

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

  • PROJECT_ID: インスタンスを作成するプロジェクトの ID。

  • ZONE: インスタンスを作成するゾーン。

  • INSTANCE_NAME: インスタンスの名前。

  • MACHINE_TYPE: 使用するマシンタイプ。

  • IMAGE_PROJECT: イメージを含むイメージ プロジェクト(例: debian-cloud)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。

  • IMAGE: 次のいずれかを指定します。

    • OS イメージの特定のバージョン。例: debian-12-bookworm-v20240617

    • イメージ ファミリーfamily/IMAGE_FAMILY の形式にする必要があります。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-12 を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。

  • AUTOMATIC_RESTART: インスタンスがクラッシュした場合、または Compute Engine がプログラムによる停止のためにインスタンスを停止した場合の、インスタンスの自動再起動の動作。次のいずれかの値を指定します。

    • Compute Engine でインスタンスを自動的に再起動できるようにするには: true

    • 自動再起動を防止するには: false

  • ERROR_DETECTION_TIMEOUT: 応答しないインスタンスを再起動するまでの秒数。値は 90(90 秒)から 330(330 秒、5 分 30 秒)の範囲で指定してください。30 秒単位で指定できます。

  • LOCAL_SSD_RECOVERY_TIMEOUT: アタッチされたローカル SSD ディスクからデータの復元に費やす時間。値は 0(0 時間)~168(168 時間、7 日間)の範囲で指定する必要があります。このフィールドを 0 に設定すると、Compute Engine はローカル SSD データを復元しません。

  • MAINTENANCE_POLICY: インスタンスのメンテナンス動作。値は TERMINATE または MIGRATE のいずれかです。ライブ マイグレーションをサポートしていない Spot VM またはインスタンスを作成する場合は、TERMINATE のみを使用できます。

インスタンスの作成の詳細については、Compute Engine インスタンスの作成と開始をご覧ください。

インスタンスの一括作成時にポリシーを設定する

インスタンスを一括作成するときにホスト メンテナンス ポリシーを設定するには、次のいずれかのオプションを選択します。

gcloud

インスタンスを一括で作成するときにホスト メンテナンス ポリシーを設定するには、次のフラグを 1 つ以上使用して gcloud compute instances bulk create コマンドを使用します。

  • ホストのメンテナンス動作を設定するには、--maintenance-policy フラグを含めます。

  • 自動再起動の動作を設定するには、次のいずれかを行います。

    • インスタンスを自動的に再起動するには、--restart-on-failure フラグを指定します。

    • インスタンスが自動的に再起動されないようにするには、--no-restart-on-failure フラグを指定します。

  • インスタンスにローカル SSD ディスクがアタッチされている場合にローカル SSD データ復元タイムアウトを設定するには、--local-ssd-recovery-timeout フラグを追加します。

  • ホストエラーのタイムアウトを設定するには、--host-error-timeout-seconds フラグを含めます。

たとえば、ホストのメンテナンス動作を設定して、ホストエラーまたはプログラムによる停止後にインスタンスを自動的に再起動し、ローカル SSD データの復元タイムアウトとホストエラー タイムアウトを設定するには、次のコマンドを実行します。次の例でも、単一のゾーンにインスタンスを作成し、インスタンスの名前パターンを指定します。

gcloud compute instances bulk create \
    --count=COUNT \
    --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT \
    --local-ssd-recovery-timeout=LOCAL_SSD_RECOVERY_TIMEOUT \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=MAINTENANCE_POLICY \
    --name-pattern=NAME_PATTERN \
    --restart-on-failure \
    --zone=ZONE

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

  • COUNT: 作成するインスタンスの数。

  • ERROR_DETECTION_TIMEOUT: 応答しないインスタンスを再起動するまでの秒数。値は 90(90 秒)から 330(330 秒、5 分 30 秒)の範囲で指定してください。30 秒単位で指定できます。

  • LOCAL_SSD_RECOVERY_TIMEOUT: アタッチされたローカル SSD ディスクからデータの復元に費やす時間。値は 0(0 時間)~168(168 時間、7 日間)の範囲で指定する必要があります。このフィールドを 0 に設定すると、Compute Engine はローカル SSD データを復元しません。

  • MACHINE_TYPE: 使用するマシンタイプ。

  • MAINTENANCE_POLICY: インスタンスのメンテナンス動作。値は TERMINATE または MIGRATE のいずれかです。ライブ マイグレーションをサポートしていない Spot VM、プリエンプティブル VM、インスタンスを作成する場合は、TERMINATE のみを使用できます。

  • NAME_PATTERN: インスタンスの名前パターン。インスタンス名の一連の数字を置き換えるには、一連のハッシュ(#)文字を使用します。たとえば、名前パターンに instance-# を使用すると、instance-1instance-2 で始まり、COUNT で指定されたインスタンスの数まで続く名前のインスタンスが生成されます。

  • ZONE: インスタンスを作成するゾーン。

REST

インスタンスを一括作成するときにホスト メンテナンス ポリシーを設定するには、instances.bulkInsert メソッドPOST リクエストを送信します。リクエスト本文の scheduling フィールドに、次のフィールドを 1 つ以上含めます。

  • ホスト メンテナンスの動作を設定するには、onHostMaintenance フィールドを含めます。

  • 自動再起動の動作を設定するには、次のいずれかを行います。

    • インスタンスを自動的に再起動するには、automaticRestart フィールドを含めます。

    • インスタンスが自動的に再起動しないようにするには、automaticRestart フィールドを含めます。

  • インスタンスにローカル SSD ディスクがアタッチされている場合にローカル SSD データ復元タイムアウトを設定するには、localSsdRecoveryTimeout フィールドを含めます。

  • ホストエラーのタイムアウトを設定するには、hostErrorTimeoutSeconds フィールドを含めます。

たとえば、ホスト メンテナンスの動作を設定して、ホストエラーまたはプログラムによる停止後にインスタンスを自動的に再起動し、ローカル SSD データの復元タイムアウトとホストエラーのタイムアウトを設定する場合は、次のようにリクエストを送信します。次の例でも、単一のゾーンにインスタンスを作成し、インスタンスの名前パターンを指定します。

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

{
  "count": COUNT,
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "scheduling": {
      "automaticRestart": AUTOMATIC_RESTART,
      "hostErrorTimeoutSeconds": ERROR_DETECTION_TIMEOUT,
      "localSsdRecoveryTimeout": LOCAL_SSD_RECOVERY_TIMEOUT,
      "onHostMaintenance": "MAINTENANCE_POLICY"
    }
  }
}

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

  • PROJECT_ID: インスタンスを作成するプロジェクトの ID。

  • ZONE: インスタンスを作成するゾーン。

  • COUNT: 作成するインスタンスの数。

  • NAME_PATTERN: インスタンスの名前パターン。インスタンス名の一連の数字を置き換えるには、一連のハッシュ(#)文字を使用します。たとえば、名前パターンに instance-# を使用すると、instance-1instance-2 で始まり、COUNT で指定されたインスタンスの数まで続く名前のインスタンスが生成されます。

  • MACHINE_TYPE: 使用するマシンタイプ。

  • IMAGE_PROJECT: イメージを含むイメージ プロジェクト(例: debian-cloud)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。

  • IMAGE: 次のいずれかを指定します。

    • OS イメージの特定のバージョン。例: debian-12-bookworm-v20240617

    • イメージ ファミリーfamily/IMAGE_FAMILY の形式にする必要があります。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-12 を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。

  • AUTOMATIC_RESTART: インスタンスがクラッシュした場合、または Compute Engine がプログラムによる停止のためにインスタンスを停止した場合の、インスタンスの自動再起動の動作。次のいずれかの値を指定します。

    • Compute Engine でインスタンスを自動的に再起動できるようにするには: true

    • 自動再起動を防止するには: false

  • ERROR_DETECTION_TIMEOUT: 応答しないインスタンスを再起動するまでの秒数。値は 90(90 秒)から 330(330 秒、5 分 30 秒)の範囲で指定してください。30 秒単位で指定できます。

  • LOCAL_SSD_RECOVERY_TIMEOUT: アタッチされたローカル SSD ディスクからデータの復元に費やす時間。値は 0(0 時間)~168(168 時間、7 日間)の範囲で指定する必要があります。このフィールドを 0 に設定すると、Compute Engine はローカル SSD データを復元しません。

  • MAINTENANCE_POLICY: インスタンスのメンテナンス動作。値は TERMINATE または MIGRATE のいずれかです。ライブ マイグレーションをサポートしていない Spot VM、プリエンプティブル VM、インスタンスを作成する場合は、TERMINATE のみを使用できます。

インスタンスを一括作成する方法の詳細については、VM を一括作成するをご覧ください。

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

インスタンス テンプレートの作成時にホスト メンテナンス ポリシーを設定できます。テンプレートを使用して作成するすべてのコンピューティング インスタンスは、テンプレートで指定されたホスト メンテナンス ポリシーを継承します。

ローカル SSD ディスクを指定するインスタンス テンプレートを作成する際にローカル SSD データ復旧のタイムアウトを設定するには、gcloud CLI または REST API を使用します。それ以外の場合は、次のいずれかのオプションを選択します。

コンソール

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

    [インスタンス テンプレート] に移動

  2. [インスタンス テンプレートを作成] をクリックします。[インスタンス テンプレートの作成] ページが表示されます。

  3. [名前] フィールドに、インスタンス テンプレートの名前を入力します。

  4. [ロケーション] セクションで、次のいずれかのオプションを選択します。

    • リージョン インスタンス テンプレートを作成するには、[リージョン(推奨)] を選択し、テンプレートを作成するリージョンを選択します。

    • グローバル インスタンス テンプレートを作成するには、[グローバル] を選択します。

  5. [マシンの構成] セクションで、インスタンス テンプレートのマシンタイプを指定します。

  6. [プロビジョニング モデル] セクションで、[VM プロビジョニング モデルの詳細設定] を開き、次のいずれかを行います。

    • メンテナンス イベント中の動作を変更するには、[ホスト メンテナンス時] リストで次のいずれかのオプションを選択します。

      • ホスト メンテナンス イベント中にインスタンスを移行するには、[VM インスタンスを移行(推奨)] を選択します。

      • ホスト メンテナンス イベント中にインスタンスを停止するには、[VM インスタンスを終了] を選択します。

    • 応答しないインスタンスを再起動するまでのタイムアウト期間を変更するには、[ホストエラーのタイムアウト] リストで次のいずれかのオプションを選択します。

      • ホストエラーのタイムアウトを指定しない場合は、[未指定(デフォルト)] を選択します。

      • ホストエラーのタイムアウトを指定するには、使用可能なオプションのいずれか(最大 5 分 30 秒)を選択します。

    • インスタンスがクラッシュまたは停止した場合に再起動するかどうかを変更するには、[自動再起動] リストで次のいずれかのオプションを選択します。

      • ホストエラーまたはプログラムによる停止後にインスタンスを自動的に再起動するには、[オン(推奨)] を選択します。

      • ホストエラーまたはプログラムによる停止後にインスタンスが自動的に再起動しないようにするには、[オフ] を選択します。

  7. [作成] をクリックします。

gcloud

インスタンス テンプレートの作成時にホスト メンテナンス ポリシーを設定するには、次のフラグを 1 つ以上指定して gcloud compute instance-templates create コマンドを使用します。

  • ホスト メンテナンスの動作を設定するには、onHostMaintenance フィールドを含めます。

  • 自動再起動の動作を設定するには、次のいずれかを行います。

    • インスタンスを自動的に再起動するには、automaticRestart フィールドを含めます。

    • インスタンスが自動的に再起動しないようにするには、automaticRestart フィールドを含めます。

  • インスタンスにローカル SSD ディスクがアタッチされている場合にローカル SSD データ復元タイムアウトを設定するには、localSsdRecoveryTimeout フィールドを含めます。

  • ホストエラーのタイムアウトを設定するには、hostErrorTimeoutSeconds フィールドを含めます。

たとえば、ホストのメンテナンス動作を設定して、ホストエラーまたはプログラムによる停止後にインスタンスを自動的に再起動し、ローカル SSD データの復元タイムアウトとホストエラー タイムアウトを設定するには、次のコマンドを実行します。次の例でも、リージョン インスタンス テンプレートを作成します。グローバル インスタンス テンプレートを作成するには、--instance-template-region フラグを使用せずに同じコマンドを使用します。

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT \
    --instance-template-region=REGION \
    --local-ssd-recovery-timeout=LOCAL_SSD_RECOVERY_TIMEOUT \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=MAINTENANCE_POLICY \
    --restart-on-failure

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

  • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。

  • ERROR_DETECTION_TIMEOUT: 応答しないインスタンスを再起動するまでの秒数。値は 90(90 秒)から 330(330 秒、5 分 30 秒)の範囲で指定してください。30 秒単位で指定できます。

  • REGION: インスタンス テンプレートを作成するリージョン。

  • LOCAL_SSD_RECOVERY_TIMEOUT: アタッチされたローカル SSD ディスクからデータの復元に費やす時間。値は 0(0 時間)~168(168 時間、7 日間)の範囲で指定する必要があります。このフィールドを 0 に設定すると、Compute Engine はローカル SSD データを復元しません。

  • MACHINE_TYPE: 使用するマシンタイプ。

  • MAINTENANCE_POLICY: インスタンスのメンテナンス動作。値は TERMINATE または MIGRATE のいずれかです。インスタンス テンプレートでライブ マイグレーションをサポートしていない Spot VM、プリエンプティブル VM、またはインスタンス タイプを指定する場合は、TERMINATE のみを使用できます。

REST

インスタンス テンプレートの作成時にホスト メンテナンス ポリシーを設定するには、次のいずれかのメソッドに POST リクエストを送信します。

リクエスト本文の scheduling フィールドに、次のフィールドを 1 つ以上含めます。

  • ホスト メンテナンスの動作を設定するには、onHostMaintenance フィールドを含めます。

  • 自動再起動の動作を設定するには、次のいずれかを行います。

    • インスタンスを自動的に再起動するには、automaticRestart フィールドを含めます。

    • インスタンスが自動的に再起動しないようにするには、automaticRestart フィールドを含めます。

  • インスタンスにローカル SSD ディスクがアタッチされている場合にローカル SSD データ復元タイムアウトを設定するには、localSsdRecoveryTimeout フィールドを含めます。

  • ホストエラーのタイムアウトを設定するには、hostErrorTimeoutSeconds フィールドを含めます。

たとえば、ホスト メンテナンスの動作を設定して、ホストエラーまたはプログラムによる停止後にインスタンスを自動的に再起動し、ローカル SSD データの復元タイムアウトとホストエラーのタイムアウトを設定する場合は、次のようにリクエストを送信します。次の例でも、リージョン インスタンス テンプレートを作成します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "scheduling": {
      "automaticRestart": AUTOMATIC_RESTART,
      "hostErrorTimeoutSeconds": ERROR_DETECTION_TIMEOUT,
      "localSsdRecoveryTimeout": LOCAL_SSD_RECOVERY_TIMEOUT,
      "onHostMaintenance": "MAINTENANCE_POLICY"
    }
  }
}

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

  • PROJECT_ID: インスタンス テンプレートを作成するプロジェクトの ID。

  • REGION: インスタンス テンプレートを作成するリージョン。

  • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。

  • IMAGE_PROJECT: イメージを含むイメージ プロジェクト(例: debian-cloud)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。

  • IMAGE: 次のいずれかを指定します。

    • OS イメージの特定のバージョン。例: debian-12-bookworm-v20240617

    • イメージ ファミリーfamily/IMAGE_FAMILY の形式にする必要があります。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-12 を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。

  • MACHINE_TYPE: 使用するマシンタイプ。

  • AUTOMATIC_RESTART: インスタンスがクラッシュした場合、または Compute Engine がプログラムによる停止のためにインスタンスを停止した場合の、インスタンスの自動再起動の動作。次のいずれかの値を指定します。

    • Compute Engine でインスタンスを自動的に再起動できるようにするには: true

    • 自動再起動を防止するには: false

  • ERROR_DETECTION_TIMEOUT: 応答しないインスタンスを再起動するまでの秒数。値は 90(90 秒)から 330(330 秒、5 分 30 秒)の範囲で指定してください。30 秒単位で指定できます。

  • LOCAL_SSD_RECOVERY_TIMEOUT: アタッチされたローカル SSD ディスクからデータの復元に費やす時間。値は 0(0 時間)~168(168 時間、7 日間)の範囲で指定する必要があります。このフィールドを 0 に設定すると、Compute Engine はローカル SSD データを復元しません。

  • MAINTENANCE_POLICY: インスタンスのメンテナンス動作。値は TERMINATE または MIGRATE のいずれかです。インスタンス テンプレートでライブ マイグレーションをサポートしていない Spot VM、プリエンプティブル VM、またはインスタンス タイプを指定する場合は、TERMINATE のみを使用できます。

インスタンス テンプレートの作成の詳細については、インスタンス テンプレートを作成するをご覧ください。

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

インスタンスのホスト メンテナンス ポリシーは、インスタンスの詳細を表示することで確認できます。

gcloud CLI または REST API を使用してインスタンスの詳細を表示する場合、localSsdRecoveryTimeout フィールドと hostErrorTimeoutSeconds フィールドは、インスタンスの作成または更新時に指定した場合にのみ表示できます。

ローカル SSD ディスクがアタッチされているインスタンスでローカル SSD データ復旧のタイムアウトを表示するには、gcloud CLI または REST API を使用します。それ以外の場合は、次のいずれかのオプションを選択します。

コンソール

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

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

  2. [名前] 列で、表示するインスタンスをクリックします。インスタンスの詳細を示すページが開きます。

  3. [詳細] タブの [管理] セクションの [可用性ポリシー] セクションで、次の情報を確認できます。

    • [ホスト メンテナンス中] フィールドに、インスタンスのホスト メンテナンス動作イベントが表示されます。

    • [ホストエラーのタイムアウト] フィールドには、インスタンスが応答していないことを検出した後、インスタンスの再起動または停止を待機する時間が表示されます。値が設定されていない場合()、デフォルトの待機時間は 5 分 30 秒です。

    • [自動再起動] フィールドには、インスタンスがクラッシュした後にインスタンスが自動的に再起動されるか、Compute Engine がプログラムによる停止のためにインスタンスを停止するのかが表示されます。

gcloud

インスタンスのホスト メンテナンス ポリシーを表示するには、--flatten フラグを scheduling に設定して gcloud compute instances describe コマンドを使用します。

 gcloud compute instances describe INSTANCE_NAME \
    --flatten=scheduling \
    --zone=ZONE

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

  • INSTANCE_NAME: インスタンスの名前。

  • ZONE: インスタンスが配置されているゾーン。

出力は次のようになります。

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

REST

インスタンスのホスト メンテナンス ポリシーを表示するには、instances.get メソッドGET リクエストを送信します。リクエスト URL に fields クエリ パラメータを含め、scheduling に設定します。

  GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?fields=scheduling

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

  • PROJECT_ID: インスタンスが存在するプロジェクト。

  • ZONE: インスタンスが存在するゾーン。

  • INSTANCE_NAME: インスタンスの名前。

出力は次のようになります。

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

次のステップ