本文档介绍如何设置虚拟机 (VM) 实例的主机维护政策,以控制虚拟机在发生主机事件时的行为。
准备工作
-
设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- 您无法更改抢占式虚拟机的主机维护政策。发生维护事件时,抢占式虚拟机会停止且不会迁移。您必须手动重启抢占的虚拟机。
- 使用 E2 机器类型创建虚拟机后,您无法将虚拟机的主机维护设置从
MIGRATE
更改为TERMINATE
,反之亦然。 onHostMaintenance
:确定发生可能造成实例重新启动的维护事件时的行为。MIGRATE
(默认值):在发生维护事件时,Compute Engine 会实时迁移实例。TERMINATE
:停止虚拟机,而不是迁移虚拟机。
automaticRestart
:确定虚拟机崩溃或被系统停止时的行为。true
(默认值):如果实例崩溃或停止,则 Compute Engine 会重启实例。false
:如果虚拟机崩溃或停止,则 Compute Engine 不会重启虚拟机。
localSsdRecoveryTimeout
:设置本地 SSD 恢复超时。这是 Compute Engine 在主机错误后等待恢复本地 SSD 数据的最长时间(以小时为单位)。此设置仅适用于挂接了本地 SSD 磁盘的虚拟机。- 未设置(默认值):Compute Engine 最长会等待 1 小时来恢复磁盘。对于 Z3 虚拟机,默认等待时间为 6 小时。
- 介于 0 到 168 之间的数字:指定 Compute Engine 等待恢复磁盘的时长。该数字必须是整数,以 1 小时为增量,最大值为 7 天。值为 0 表示 Compute Engine 不会等待恢复数据。
hostErrorTimeoutSeconds
(预览版):设置 Compute Engine 在检测到虚拟机无响应后等待重启或终止虚拟机的最长时间(以秒为单位)。- 未设置(默认值):Compute Engine 最长会等待 5.5 分钟(330 秒),然后再重启无响应的虚拟机。
- 介于 90 到 330 之间的数字:指定 Compute Engine 在重启无响应的虚拟机之前等待的秒数(以 30 为增量)。
在 Google Cloud 控制台中,转到创建实例页面。
为虚拟机指定名称。
为虚拟机选择区域和可用区。
在机器配置部分中,执行以下操作:
- 指定虚拟机的机器类型的详细信息。
- 展开虚拟机预配模型高级设置菜单。
- 在主机维护时菜单中,选择以下步骤之一:
- 如需在维护事件期间迁移虚拟机,请选择迁移虚拟机实例。
- 如需在维护事件期间停止虚拟机,请选择终止虚拟机实例。
如需创建虚拟机,请点击创建。
--maintenance-policy
:在主机维护期间,虚拟机是迁移还是停止。如果您省略此属性,则默认迁移虚拟机。--no-restart-on-failure
或--restart-on-failure
:虚拟机是否在发生主机错误后自动重启。默认情况下,虚拟机在检测到故障时始终会重启。--local-ssd-recovery-timeout
:Compute Engine 在主机错误发生后恢复任何已挂接的本地 SSD 磁盘所用的时间。默认值为 1 小时。VM_NAME
:虚拟机名称。MAINTENANCE_POLICY
:此虚拟机的维护政策,即TERMINATE
或MIGRATE
。RESTART_ON_FAILURE_BEHAVIOR
:虚拟机的重启行为,设置为--no-restart-on-failure
或--restart-on-failure
。SSD_RECOVERY_TIMEOUT
:恢复挂接到无响应的虚拟机的本地 SSD 所花费的小时数。有效值介于 0 到 168 之间,以 1 小时为增量。VM_NAME
:虚拟机名称。MAINTENANCE_POLICY
:此虚拟机的维护政策,即TERMINATE
或MIGRATE
。RESTART_ON_FAILURE_BEHAVIOR
:虚拟机的重启行为,设置为--no-restart-on-failure
或--restart-on-failure
。SSD_RECOVERY_TIMEOUT
:Compute Engine 恢复挂接到无响应的虚拟机的本地 SSD 所花费的小时数。有效值介于 0 到 168 之间,以 1 小时为增量。ERROR_DETECTION_TIMEOUT
:Compute Engine 在重启无响应虚拟机之前等待的秒数,从 90 到 330(以 30 为增量)。onHostMaintenance
:在主机维护期间,虚拟机是迁移还是停止。默认情况下,虚拟机会迁移。automaticRestart
:虚拟机是否在主机发生错误后自动重启。默认情况下,虚拟机会自动重启。localSsdRecoveryTimeout
:Compute Engine 在检测到主机错误后恢复任何已挂接的本地 SSD 磁盘所用的时间。默认值为 1 小时。PROJECT_ID
:虚拟机的项目。ZONE
:您要在其中创建虚拟机的可用区。VM_NAME
:虚拟机名称。MAINTENANCE_POLICY
:此虚拟机的维护政策,即TERMINATE
或MIGRATE
。RESTART_POLICY
:此虚拟机的重启政策,即true
或false
。SSD_RECOVERY_TIMEOUT
:Compute Engine 用于恢复挂接到无响应虚拟机的本地 SSD 磁盘的小时数。有效值介于 0 到 168 之间,以 1 小时为增量。PROJECT_ID
:虚拟机的项目。ZONE
:您要在其中创建虚拟机的可用区。VM_NAME
:虚拟机名称。MAINTENANCE_POLICY
:此虚拟机的维护政策,即TERMINATE
或MIGRATE
。RESTART_POLICY
:此虚拟机的重启政策,即true
或false
。SSD_RECOVERY_TIMEOUT
:Compute Engine 用于恢复挂接到无响应虚拟机的本地 SSD 磁盘的小时数。有效值介于 0 到 168 之间,以 1 小时为增量。HOST_ERROR_TIMEOUT
:Compute Engine 在重启或终止无响应虚拟机之前等待的秒数。有效值介于 90 到 330 之间,以 30 为增量。在 Google Cloud 控制台中,转到虚拟机实例页面。
点击您要更改设置的虚拟机。此时将显示虚拟机详情页面。
在虚拟机详情页面上,完成以下步骤:
- 点击页面顶部的修改按钮。
- 找到管理部分。 在可用性政策部分中,您可以设置主机维护时和自动重启选项。
- 点击保存。
VM_NAME
:虚拟机名称。MAINTENANCE_POLICY
:此虚拟机的政策,即TERMINATE
或MIGRATE
。RESTART_ON_FAILURE_BEHAVIOR
:虚拟机的重启行为,即--no-restart-on-failure
或--restart-on-failure
。SSD_RECOVERY_TIMEOUT
:Compute Engine 用于恢复挂接到无响应虚拟机的本地 SSD 磁盘的时间(以小时为单位)。有效值介于 0 到 168 之间。VM_NAME
:虚拟机名称。MAINTENANCE_POLICY
:此虚拟机的维护政策,即TERMINATE
或MIGRATE
。RESTART_ON_FAILURE_BEHAVIOR
:虚拟机的重启行为,设置为--no-restart-on-failure
或--restart-on-failure
。SSD_RECOVERY_TIMEOUT
:Compute Engine 用于恢复挂接到无响应虚拟机的本地 SSD 磁盘的时间(以小时为单位)。有效值介于 0 到 168 之间。NUMBER_OF_SECONDS
:Compute Engine 在重启或终止无响应虚拟机之前等待的秒数,从 90 到 330(以 30 为增量)onHostMaintenance
:在主机维护期间,虚拟机是迁移还是停止。默认情况下,虚拟机会迁移。automaticRestart
:虚拟机是否在主机发生错误后自动重启。默认情况下,虚拟机会自动重启。localSsdRecoveryTimeout
:Compute Engine 在检测到主机错误后恢复任何已挂接的本地 SSD 磁盘所用的时间。如果省略,则默认值为 1 小时。PROJECT_ID
:虚拟机的项目。ZONE
:该虚拟机所在的可用区。VM_NAME
:虚拟机名称。MAINTENANCE_POLICY
:此虚拟机的维护政策,即TERMINATE
或MIGRATE
。RESTART_POLICY
:此虚拟机的重启政策,即true
或false
。SSD_RECOVERY_TIMEOUT
:Compute Engine 用于恢复挂接到无响应虚拟机的本地 SSD 磁盘的时间(以小时为单位)。有效值介于 0 到 168 之间。PROJECT_ID
:虚拟机的项目。ZONE
:该虚拟机所在的可用区。VM_NAME
:虚拟机名称。NUMBER_OF_SECONDS
:Compute Engine 在重启或终止无响应虚拟机之前等待的秒数,从 90 到 330(以 30 为增量)转到虚拟机实例页面。
点击要查看其设置的虚拟机的名称。虚拟机实例详情页面随即打开。
找到管理部分。 可用性政策子部分会显示主机维护时和自动重启的当前设置。
PROJECT_ID
:虚拟机所在的项目。ZONE
:该虚拟机所在的可用区。VM_NAME
:虚拟机名称。PROJECT_ID
:虚拟机的项目。ZONE
:该虚拟机所在的可用区。VM_NAME
:虚拟机名称。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
限制
可用的主机维护属性
您可以使用以下属性配置虚拟机的维护行为、重启行为和主机错误发生后的行为。
除非您另行指定,否则 Compute Engine 会使用默认值配置每个虚拟机。
在主机事件期间,根据配置的主机维护政策,不支持实时迁移的虚拟机会被终止或自动重启。
设置虚拟机的主机维护政策
当您首次创建虚拟机时或创建虚拟机后,可以更改虚拟机的主机维护政策。
在创建虚拟机期间设置主机维护政策
本部分中的信息重点介绍了如何在创建虚拟机时设置主机维护政策。如需查看更多虚拟机创建示例,请参阅创建和启动虚拟机实例。
您可以使用 Google Cloud 控制台、gcloud CLI 或 Compute Engine API 在创建虚拟机时设置主机维护政策。
控制台
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 create
命令。包含以下一个或多个参数:使用以下命令设置新虚拟机的主机维护政策。 如果您省略任何标志,系统会使用该标志的默认值。
gcloud compute instances create VM_NAME \ --maintenance-policy=MAINTENANCE_POLICY \ --RESTART_ON_FAILURE_BEHAVIOR \ --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT
替换以下内容:
设置主机错误检测超时
如需指定 Compute Engine 在重启或终止无响应的虚拟机之前等待的最长时间,请使用
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
替换以下内容:
REST
如需使用 Compute Engine API 设置新虚拟机的主机维护政策,请使用
instances.insert
方法。 在请求正文的scheduling
对象中添加以下一个或多个属性: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 } }
替换以下内容:
设置主机错误检测超时
如需设置 Compute Engine 等待重启或终止无响应虚拟机的最长时间,请使用 Beta 版
instances.insert
方法,因为此选项在预览版中可用。将
hostErrorTimeoutSeconds
属性添加到请求正文的scheduling
对象中。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, } }
替换以下内容:
更新现有虚拟机的主机维护政策
控制台
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
命令更新现有虚拟机的主机维护政策。使用上一部分中的虚拟机创建命令中所述的相同参数。gcloud compute instances set-scheduling VM_NAME \ --maintenance-policy=MAINTENANCE_POLICY \ --RESTART_ON_FAILURE_BEHAVIOR \ --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT
替换以下内容:
更新主机错误检测超时
如需更新 Compute Engine 等待重启或终止无响应虚拟机的最长时间,请使用
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
替换以下内容:
REST
向
instances.setScheduling
方法 发出的POST
请求,以更新现有虚拟机的主机维护政策。在请求正文中添加以下一个或多个属性:
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 }
替换以下内容:
更新主机错误检测超时
如需更新 Compute Engine 等待重启或终止无响应虚拟机的最长时间,您必须使用 Beta 版
instances.setScheduling
方法,因为此功能在预览版中可用。将
hostErrorTimeoutSeconds
参数添加到请求正文中。POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling { "hostErrorTimeoutSeconds": NUMBER_OF_SECONDS, }
替换以下内容:
查看虚拟机的主机维护政策设置
控制台
gcloud
使用
gcloud compute instances describe
命令查看虚拟机的主机维护选项设置:gcloud compute instances describe VM_NAME --format="yaml(scheduling)"
将
VM_NAME
替换为虚拟机名称。输出包括虚拟机的主机错误检测超时,例如:
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
替换为虚拟机名称。输出包括虚拟机的主机错误检测超时,例如:
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/VM_NAME
替换以下内容:
在输出中,
scheduling
对象包含虚拟机的主机维护政策,例如:"scheduling": { "onHostMaintenance": "MIGRATE", "automaticRestart": true, "preemptible": false, "provisioningModel": "STANDARD", "localSsdRecoveryTimeout": { "seconds": "10800", "nanos": 0 } }
查看主机错误超时设置
使用 Beta 版
instances.get
方法的GET
请求来查看当前hostErrorTimeoutSeconds
设置,因为此选项仅在预览版中可用。GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
替换以下内容:
在输出中,
scheduling
对象包含虚拟机的主机错误检测超时,例如:"scheduling": { "hostErrorTimeoutSeconds": 120 }
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-18。
-