本文档介绍了如何为虚拟机 (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
,反之亦然。 - 您无法更改裸机实例(例如
c3-standard-192-metal
或x4-megamem-1920-metal
)的维护行为,这些实例会设置为TERMINATE
并自动重启。 onHostMaintenance
:确定可能造成实例重启的维护事件发生时的行为。MIGRATE
:在发生维护事件时,Compute Engine 会实时迁移实例。这是大多数虚拟机的默认值。TERMINATE
:停止实例,而不是使用实时迁移。这是 Z3、裸机实例以及具有 GPU 和 TPU 等加速器的实例的默认选项。对于这些实例类型,您无法更改onHostMaintenance
的设置。
automaticRestart
:确定实例发生崩溃或被系统停止时的行为。true
(默认值):如果实例崩溃或停止,则 Compute Engine 会重启实例。false
:如果实例崩溃或停止,Compute Engine 不会重启实例。
localSsdRecoveryTimeout
:设置本地 SSD 恢复超时。这是 Compute Engine 在主机错误后等待恢复本地 SSD 数据的最长时间(以小时为单位)。此设置仅适用于挂接了本地 SSD 磁盘的虚拟机。如果您为未附加本地 SSD 磁盘的实例配置此设置,系统会忽略此设置。- 未设置(默认值):Compute Engine 最长会等待 1 小时来恢复本地 SSD 数据。对于 Z3 虚拟机,默认等待时间为 6 小时。
- 介于 0 到 168 之间的整数:指定 Compute Engine 等待恢复本地 SSD 数据的时长(以小时为单位)。最大值等于 7 天。值为 0 表示 Compute Engine 不会等待恢复本地 SSD 数据,而是立即重启实例。
hostErrorTimeoutSeconds
(预览版):设置 Compute Engine 在检测到计算实例无响应后等待重启或终止计算实例的最长时间(以秒为单位)。- 未设置(默认值):Compute Engine 最长会等待 5.5 分钟(330 秒),然后再重启无响应的实例。
- 介于 90 到 330 之间的整数:指定 Compute Engine 在重启无响应的计算实例之前等待的秒数(以 30 为增量)。
在 Google Cloud 控制台中,转到创建实例页面。
为该实例指定名称。
为实例选择区域和可用区。
在机器配置部分中,执行以下操作:
- 指定实例的机器类型的详细信息。
- 展开虚拟机预配模型高级设置菜单。
- 在主机维护时菜单中,选择以下步骤之一:
- 如需在维护事件期间迁移虚拟机,请选择迁移虚拟机实例。
- 如需在维护事件期间停止实例,请选择终止虚拟机实例。
如需创建实例,请点击创建。
INSTANCE_NAME
:实例名称。- ZONE:实例所在的可用区,
MAINTENANCE_BEHAVIOR
:实例的维护事件行为,即TERMINATE
或MIGRATE
。对于大多数机器类型,如果您省略此属性,系统会默认迁移虚拟机。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 秒为增量。PROJECT_ID
:实例的项目。ZONE
:您要在其中创建实例的可用区。INSTANCE_NAME
:实例名称。MAINTENANCE_BEHAVIOR
:实例的维护事件行为,即TERMINATE
或MIGRATE
。对于大多数机器类型,如果您省略此字段,系统会默认迁移虚拟机。Z3 实例和裸金属实例会终止。RESTART_POLICY
:实例是否在发生维护事件或主机发生错误后自动重启,值为true
(默认)或false
。SSD_RECOVERY_TIMEOUT
:Compute Engine 用于恢复挂接到无响应或已终止实例的任何本地 SSD 磁盘的小时数。有效值介于 0 到 168 之间,以 1 小时为增量。Z3 的默认值为 6 小时,所有其他虚拟机的默认值为 1 小时。在 Google Cloud 控制台中,转到虚拟机实例页面。
点击您要更改设置的实例的名称。此时将显示实例详细信息页面。
选择详细信息标签页,然后完成以下步骤:
- 点击页面顶部的修改按钮。
- 找到管理部分。 在可用性政策部分中,您可以更改主机维护选项。
- 点击保存。
NUMBER_OF_SECONDS
:Compute Engine 在重启或终止无响应虚拟机之前等待的秒数,从 90 到 330(5.5 分钟),以 30 秒为增量。INSTANCE_NAME
:实例名称。MAINTENANCE_BEHAVIOR
:实例的维护事件行为,即TERMINATE
或MIGRATE
。对于大多数机器类型,如果您省略此属性,系统会默认迁移虚拟机。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 秒为增量。
PROJECT_ID
:实例的项目。ZONE
:实例所在的区域。INSTANCE_NAME
:实例名称。MAINTENANCE_BEHAVIOR
:此实例的维护事件行为,即TERMINATE
或MIGRATE
。RESTART_POLICY
:实例是否自动重启,值为true
或false
。SSD_RECOVERY_TIMEOUT
:恢复挂接到实例的本地 SSD 磁盘所花费的小时数。有效值介于 0 到 168 之间,以 1 小时为增量。
转到虚拟机实例页面。
点击要查看其设置的实例的名称。实例详情页面会打开。
前往管理部分。可用性政策子部分会显示以下各项的当前设置:
- 主机维护时
- 自动重启
- 主机错误超时
INSTANCE_NAME
:实例的名称ZONE
:实例所在的区域PROJECT_ID
:实例所在的项目。ZONE
:实例所在的区域。INSTANCE_NAME
:实例名称。PROJECT_ID
:实例的项目。ZONE
:实例所在的区域。INSTANCE_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 会使用默认值配置每个实例。
在主机事件期间,根据配置的主机维护政策,不支持实时迁移的实例会被终止并自动重启。
设置实例的主机维护政策
当您首次创建实例时或创建实例后,可以更改实例的主机维护政策。
在实例创建期间设置主机维护政策
本部分中的信息重点介绍了如何在创建实例时设置主机维护政策。如需查看更多实例创建示例,请参阅创建和启动 Compute Engine 实例。
您可以使用 Google Cloud 控制台、gcloud CLI 或 REST 在创建计算实例时设置主机维护政策。
控制台
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
替换以下内容:
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 } }
替换以下内容:
设置主机错误检测超时
如需设置 Compute Engine 等待重启或终止无响应实例的最长时间,请使用 Beta 版
instances.insert
方法,因为此选项在预览版中可用。将
hostErrorTimeoutSeconds
属性添加到请求正文的scheduling
对象,其中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, } }
更新现有实例的主机维护政策
控制台
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
替换以下内容:
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 }
替换以下内容:
更新主机错误检测超时
如需更新 Compute Engine 等待重启或终止无响应虚拟机的最长时间,您必须使用 Beta 版
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 }
查看实例的主机维护政策设置
控制台
gcloud
使用
gcloud compute instances describe
命令查看实例的主机维护选项设置。如需查看
hostErrorTimeoutSeconds
设置的当前值(预览版),请使用gcloud beta compute instances describe
命令。gcloud compute instances describe INSTANCE_NAME \ --zone ZONE --format="yaml(scheduling)"
替换以下内容:
输出包括主机维护政策的当前设置,例如:
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
替换以下内容:
在输出中,
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/INSTANCE_NAME
替换以下内容:
在输出中,
scheduling
对象包含实例的主机错误检测超时,例如:{ ... "scheduling": { "onHostMaintenance": "MIGRATE", "automaticRestart": true, "preemptible": false, "provisioningModel": "STANDARD", "hostErrorTimeoutSeconds": 120, "localSsdRecoveryTimeout": { "seconds": "10800", "nanos": 0 } }, ... }
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-22。
-