このドキュメントでは、ホストイベントが発生したときに VM の動作を制御するために、仮想マシン(VM)インスタンスのホスト メンテナンス ポリシーを設定する方法について説明します。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- デフォルトのリージョンとゾーンを設定します。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
制限事項
- プリエンプティブル VM のホスト メンテナンス ポリシーは変更できません。メンテナンス イベントが発生すると、プリエンプティブル VM は停止し、移行されません。プリエンプトされた VM は手動で再起動する必要があります。
- E2 マシンタイプを使用して VM を作成すると、VM のホスト メンテナンス設定を
MIGRATE
からTERMINATE
(またはその逆)に変更することはできません。
利用可能なホスト メンテナンス プロパティ
次のプロパティを使用して、VM のメンテナンス動作、再起動動作、ホストエラー発生後の動作を構成できます。
特に指定しない限り、Compute Engine は各 VM をデフォルト値で構成します。
ホストイベント中に、構成済みのホスト メンテナンス ポリシーに応じて、ライブ マイグレーションをサポートしていない VM は終了または自動的に再起動されます。
onHostMaintenance
: VM の再起動が必要になるメンテナンス イベントが発生したときの動作を指定します。MIGRATE
(デフォルト)では、Compute Engine はメンテナンス イベント発生時にインスタンスをライブ マイグレーションします。TERMINATE
: VM は移行せずに停止します。
automaticRestart
: VM がクラッシュしたか、システムによって停止された場合の動作を指定します。true
(デフォルト)では、インスタンスがクラッシュまたは停止した場合、Compute Engine はインスタンスを再起動します。false
: VM がクラッシュまたは停止しても、Compute Engine は VM を再起動しません。
localSsdRecoveryTimeout
: ローカル SSD のリカバリ タイムアウトを設定します。これは、ホストのエラー後に Compute Engine がローカル SSD データの復元を待機する最大時間(時間単位)です。この設定は、ローカル SSD ディスクがアタッチされている VM にのみ適用されます。- 設定されていない場合(デフォルト): Compute Engine はディスクを復元するために最大 1 時間待機します。Z3 VM の場合、デフォルトの待機時間は 6 時間です。
- 0 から 168 までの数値: Compute Engine がディスクを復元するために待機する時間を指定します。この数値は 1 時間単位の整数にする必要があります。最大値は 7 日です。値が 0 の場合、Compute Engine はデータの復元を待機しません。
hostErrorTimeoutSeconds
(プレビュー): VM が応答していないことを検出した後、Compute Engine が VM を再起動または終了するのを待機する最大時間を秒単位で設定します。- 設定されていない場合(デフォルト): Compute Engine は最大 5.5 分(330 秒)待機してから、応答しない VM を再起動します。
- 90 から 330 までの数値: Compute Engine が応答しない VM を再起動するまで待機する秒数を 30 秒単位で指定します。
VM のホスト メンテナンス ポリシーを設定する
VM のホスト メンテナンス ポリシーは、最初に VM を作成するとき、または VM の作成後に変更できます。
VM 作成時にホスト メンテナンス ポリシーを設定する
このセクションでは、VM の作成時にホスト メンテナンス ポリシーを設定する方法について説明します。VM 作成の他の例については、VM インスタンスを作成して起動するをご覧ください。
VM のホスト メンテナンス ポリシーは、Google Cloud コンソール、gcloud CLI、または Compute Engine API を使用して VM の作成時に設定できます。
コンソール
Google Cloud コンソールで、[インスタンスの作成] ページに移動します。
VM の名前を指定します。
VM のリージョンとゾーンを選択します。
[マシンの構成] セクションで、次の操作を行います。
- VM のマシンタイプの詳細を指定します。
- [VM プロビジョニング モデルの詳細設定] メニューを開きます。
- [ホスト メンテナンス時] メニューで、次のいずれかの手順を選択します。
- メンテナンス イベント中に VM を移行するには、[VM インスタンスを移行] を選択します。
- メンテナンス イベント中に VM を停止するには、[VM インスタンスを終了] を選択します。
VM を作成するには、[作成] をクリックします。
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
新しい VM のホスト メンテナンス ポリシーを設定するには、gcloud compute instances create
コマンドを使用します。次のパラメータを 1 つ以上指定します。
--maintenance-policy
: ホスト メンテナンス中に VM を移行するか停止するかを示します。このプロパティを省略すると、VM はデフォルトで移行されます。--no-restart-on-failure
または--restart-on-failure
: ホストエラー後に VM を自動的に再起動するかを示します。デフォルトでは、障害が検出されると必ず VM が再起動されます。--local-ssd-recovery-timeout
: ホストエラーの発生後に Compute Engine がアタッチされたローカル SSD ディスクの復元に費やす時間。デフォルトは 1 時間です。
次のコマンドを使用して、新しい VM のホスト メンテナンス ポリシーを設定します。いずれかのフラグを省略すると、フラグのデフォルトが使用されます。
gcloud compute instances create VM_NAME \
--maintenance-policy=MAINTENANCE_POLICY \
--RESTART_ON_FAILURE_BEHAVIOR \
--local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT
次のように置き換えます。
VM_NAME
: VM 名。MAINTENANCE_POLICY
: この VM のメンテナンス ポリシー(TERMINATE
またはMIGRATE
)。RESTART_ON_FAILURE_BEHAVIOR
: VM の再起動動作。--no-restart-on-failure
または--restart-on-failure
に設定します。SSD_RECOVERY_TIMEOUT
: 応答しない VM にアタッチされたローカル SSD の復元に費やす時間数。有効な値は 0 から 168 で、1 時間単位で指定します。
ホストエラー検出のタイムアウトを設定する
Compute Engine が応答しない VM の再起動や終了を待機する最大時間を設定するには、gcloud compute instances create
コマンドを使用します。タイムアウトは --host-error-timeout-seconds
フラグで指定します。
gcloud beta compute instances create VM_NAME \
--maintenance-policy=MAINTENANCE_POLICY \
--RESTART_ON_FAILURE_BEHAVIOR \
--local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT \
--host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT
次のように置き換えます。
VM_NAME
: VM 名。MAINTENANCE_POLICY
: この VM のメンテナンス ポリシー(TERMINATE
またはMIGRATE
)。RESTART_ON_FAILURE_BEHAVIOR
: VM の再起動動作。--no-restart-on-failure
または--restart-on-failure
に設定します。SSD_RECOVERY_TIMEOUT
: 応答しない VM にアタッチされたローカル SSD の復元に Compute Engine が費やす時間数。有効な値は 0 から 168 で、1 時間単位で指定します。ERROR_DETECTION_TIMEOUT
: 応答しない VM を再起動するまで Compute Engine が待機する秒数(90~330)。30 秒単位で指定します。
REST
Compute Engine API を使用して新しい VM のホスト メンテナンス ポリシーを設定するには、instances.insert
メソッドを使用します。リクエスト本文の scheduling
オブジェクトに次のプロパティを 1 つ以上含めます。
onHostMaintenance
: ホスト メンテナンス中に VM を移行するか停止するかを示します。VM はデフォルトで移行されます。automaticRestart
: ホストエラー後に VM を自動的に再起動するかを示します。VM はデフォルトで自動的に再起動されます。localSsdRecoveryTimeout
: ホストエラーの検出後、Compute Engine がアタッチされたローカル SSD ディスクの復元に費やす時間。デフォルトは 1 時間です。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
"name": "VM_NAME",
"scheduling": {
"onHostMaintenance": "MAINTENANCE_POLICY",
"automaticRestart": "RESTART_POLICY,
"localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
}
}
次のように置き換えます。
PROJECT_ID
: VM のプロジェクト。ZONE
: VM を作成するゾーン。VM_NAME
: VM 名。MAINTENANCE_POLICY
: この VM のメンテナンス ポリシー(TERMINATE
またはMIGRATE
)。RESTART_POLICY
: この VM の再起動ポリシー(true
またはfalse
)。SSD_RECOVERY_TIMEOUT
: 応答しない VM にアタッチされたローカル SSD ディスクの復元に Compute Engine が費やす時間数。有効な値は 0 から 168 で、1 時間単位で指定します。
ホストエラー検出のタイムアウトを設定する
Compute Engine が応答しない VM の再起動や終了を待機する最大時間を設定するには、ベータ版 instances.insert
メソッドを使用します。このオプションはプレビューで利用可能なためです。
リクエスト本文の scheduling
オブジェクトに hostErrorTimeoutSeconds
プロパティを追加します。
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances
{
"name": "VM_NAME",
"scheduling": {
"onHostMaintenance": "MAINTENANCE_POLICY",
"automaticRestart": "RESTART_POLICY,
"localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
"hostErrorTimeoutSeconds": HOST_ERROR_TIMEOUT,
}
}
次のように置き換えます。
PROJECT_ID
: VM のプロジェクト。ZONE
: VM を作成するゾーン。VM_NAME
: VM 名。MAINTENANCE_POLICY
: この VM のメンテナンス ポリシー(TERMINATE
またはMIGRATE
)。RESTART_POLICY
: この VM の再起動ポリシー(true
またはfalse
)。SSD_RECOVERY_TIMEOUT
: 応答しない VM にアタッチされたローカル SSD ディスクの復元に Compute Engine が費やす時間数。有効な値は 0 から 168 で、1 時間単位で指定します。HOST_ERROR_TIMEOUT
: 応答しない VM を再起動または終了するまで Compute Engine が待機する秒数。有効な値は 90~330 で、30 秒単位で指定します。
既存の VM のホスト メンテナンス ポリシーを更新する
コンソール
Google Cloud コンソールで [VM インスタンス] ページに移動します。
設定を変更する VM をクリックします。VM の詳細ページが表示されます。
VM の詳細ページで、次の手順を実施します。
- ページの上部にある [編集] ボタンをクリックします。
- [管理] セクションに移動します。[可用性ポリシー] セクションから、[ホスト メンテナンス時] と [自動再起動] オプションを設定できます。
- [保存] をクリックします。
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
gcloud compute instances set-scheduling
コマンドを使用して、既存の VM のホスト メンテナンス ポリシーを更新します。前のセクションの VM 作成コマンドで説明したものと同じパラメータを使用します。
gcloud compute instances set-scheduling VM_NAME \
--maintenance-policy=MAINTENANCE_POLICY \
--RESTART_ON_FAILURE_BEHAVIOR \
--local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT
次のように置き換えます。
VM_NAME
: VM 名。MAINTENANCE_POLICY
: この VM のポリシー(TERMINATE
またはMIGRATE
)。RESTART_ON_FAILURE_BEHAVIOR
: VM の再起動動作(--no-restart-on-failure
または--restart-on-failure
)。SSD_RECOVERY_TIMEOUT
: 応答しない VM にアタッチされたローカル SSD ディスクの復元に Compute Engine が費やす時間(時間単位)。有効な値は 0~168 です。
ホストエラー検出タイムアウトを更新する
Compute Engine が応答しない VM の再起動や終了を待機する最大時間を更新するには、gcloud beta compute instances set-scheduling
コマンドを使用します。この機能はプレビューでのみ利用可能なためです。
--host-error-timeout-seconds
パラメータでタイムアウトを更新します。次に例を示します。
gcloud beta compute instances set-scheduling VM_NAME \
--maintenance-policy=MAINTENANCE_POLICY \
--RESTART_ON_FAILURE_BEHAVIOR \
--local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT \
--host-error-timeout-seconds=NUMBER_OF_SECONDS
次のように置き換えます。
VM_NAME
: VM 名。MAINTENANCE_POLICY
: この VM のメンテナンス ポリシー(TERMINATE
またはMIGRATE
)。RESTART_ON_FAILURE_BEHAVIOR
: VM の再起動動作。--no-restart-on-failure
または--restart-on-failure
に設定します。SSD_RECOVERY_TIMEOUT
: 応答しない VM にアタッチされたローカル SSD ディスクの復旧に Compute Engine が費やした時間(時間単位)。有効な値は 0~168 です。NUMBER_OF_SECONDS
: 応答しない VM を再起動または終了するまで Compute Engine が待機する秒数(90~330)。30 単位で指定します。
REST
instances.setScheduling
メソッドへの POST
リクエストで、既存の VM のホスト メンテナンス ポリシーを更新します。
リクエストの本文には以下のプロパティを 1 つ以上含めます。
onHostMaintenance
: ホスト メンテナンス中に VM を移行するか停止するかを示します。VM はデフォルトで移行されます。automaticRestart
: ホストエラー後に VM を自動的に再起動するかを示します。VM はデフォルトで自動的に再起動されます。localSsdRecoveryTimeout
: ホストエラーの検出後、Compute Engine がアタッチされたローカル SSD ディスクの復元に費やす時間。省略した場合、デフォルトは 1 時間です。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
{
"onHostMaintenance": "MAINTENANCE_POLICY",
"automaticRestart": RESTART_POLICY,
"localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
}
次のように置き換えます。
PROJECT_ID
: VM のプロジェクト。ZONE
: VM が配置されているゾーン。VM_NAME
: VM 名。MAINTENANCE_POLICY
: この VM のメンテナンス ポリシー(TERMINATE
またはMIGRATE
)。RESTART_POLICY
: この VM の再起動ポリシー(true
またはfalse
)。SSD_RECOVERY_TIMEOUT
: 応答しない VM にアタッチされたローカル SSD ディスクの復旧に Compute Engine が費やした時間(時間単位)。有効な値は 0~168 です。
ホストエラー検出タイムアウトを更新する
Compute Engine が応答しない VM の再起動や終了を待機する最大時間を更新するには、ベータ版 instances.setScheduling
メソッドを使用する必要があります。この機能はプレビューで利用可能なためです。
リクエストの本文に hostErrorTimeoutSeconds
パラメータを追加します。
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
{
"hostErrorTimeoutSeconds": NUMBER_OF_SECONDS,
}
次のように置き換えます。
PROJECT_ID
: VM のプロジェクト。ZONE
: VM が配置されているゾーン。VM_NAME
: VM 名。NUMBER_OF_SECONDS
: 応答しない VM を再起動または終了するまで Compute Engine が待機する秒数(90~330)。30 単位で指定します。
VM のホスト メンテナンス ポリシー設定を表示する
コンソール
[VM インスタンス] ページに移動します。
設定を表示する VM の名前をクリックします。[VM インスタンスの詳細] ページが開きます。
[管理] セクションに移動します。[可用性ポリシー] サブセクションには、[ホスト メンテナンス] と [自動再起動] の現在の設定が表示されます。
gcloud
gcloud compute instances describe
コマンドを使用して、VM のホスト メンテナンス オプションの設定を表示します。
gcloud compute instances describe VM_NAME --format="yaml(scheduling)"
VM_NAME
は、VM 名に置き換えます。
出力には、次のように VM のホストエラー検出タイムアウトが含まれます。
scheduling:
automaticRestart: true
localSsdRecoveryTimeout:
nanos: 0
seconds: '10800'
onHostMaintenance: MIGRATE
preemptible: false
provisioningModel: STANDARD
ホストエラー検出のタイムアウト設定を表示する
gcloud beta compute instances describe
コマンドで hostErrorTimeoutSeconds
の現在の値を表示します。このオプションはプレビューでのみ利用可能なためです。
gcloud beta compute instances describe VM_NAME --format="yaml(scheduling)"
VM_NAME
は、VM 名に置き換えます。
出力には、次のように VM のホストエラー検出タイムアウトが含まれます。
scheduling:
automaticRestart: true
hostErrorTimeoutSeconds: 120
localSsdRecoveryTimeout:
nanos: 0
seconds: '10800'
onHostMaintenance: MIGRATE
preemptible: false
provisioningModel: STANDARD
REST
VM のホスト メンテナンス設定を表示するには、instances.get
メソッドを使用します。
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
次のように置き換えます。
PROJECT_ID
: VM が配置されているプロジェクト。ZONE
: VM が配置されているゾーン。VM_NAME
: VM 名。
出力の scheduling
オブジェクトには、VM のホスト メンテナンス ポリシーが含まれます。次に例を示します。
"scheduling": {
"onHostMaintenance": "MIGRATE",
"automaticRestart": true,
"preemptible": false,
"provisioningModel": "STANDARD",
"localSsdRecoveryTimeout": {
"seconds": "10800",
"nanos": 0
}
}
ホストエラー タイムアウトの設定を表示する
ベータ版の instances.get
メソッドに対して GET
リクエストを使用して現在の hostErrorTimeoutSeconds
設定を表示します。このオプションはプレビューでのみ利用可能なためです。
GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
次のように置き換えます。
PROJECT_ID
: VM のプロジェクト。ZONE
: VM が配置されているゾーン。VM_NAME
: VM 名。
出力の scheduling
オブジェクトには、VM のホストエラー検出タイムアウトが含まれます。次に例を示します。
"scheduling": {
"hostErrorTimeoutSeconds": 120
}
次のステップ
- ホスト メンテナンスの詳細を見る。
- ライブ マイグレーションの詳細を見る。
- ライブ マイグレーション イベントを検出する方法を学習する。