您可以通过在创建虚拟机期间设置主机维护政策,在主机事件期间或之后选择虚拟机 (VM) 实例的响应方式。 主机事件可能包括 Compute Engine 基础设施的定期维护或虚拟机上的主机错误。默认情况下,虚拟机在主机系统事件期间设置为实时迁移,但您可以将它们设置为终止并视需要重启。Z3 虚拟机是实时迁移的例外情况,因为它们默认就地重启。
以下主机事件会导致虚拟机实时迁移或终止,具体取决于您设置的主机维护政策:
维护事件
维护事件是 Compute Engine 停止虚拟机以执行硬件或软件更新的时间。如果您启用了实时迁移主机维护政策,Compute Engine 会将虚拟机迁移到新主机,并且您的应用不会中断。
维护事件期间的虚拟机行为可能会因虚拟机租用而异。下表显示了维护事件期间多租户和单租户虚拟机之间的一些行为差异。
主机租用 | 大概频率* | 实时迁移到新主机 | 主机选择 |
---|---|---|---|
多租户 | 每 2 周 | 是 | Compute Engine |
单租户 | 每 4 到 6 周 | 取决于主机维护政策 | 取决于主机维护政策 |
Compute Engine 还会在后台应用一些轻量级 Hypervisor 和网络升级,而不会发生中断。
主机维护政策
虚拟机的主机维护政策决定了它在以下事件期间的行为方式:
- 发生维护事件时,Google 必须将虚拟机移动到其他宿主机
- 发生主机错误时,Google 必须终止或重启虚拟机
您可以将虚拟机配置为在主机维护期间继续运行,同时 Compute Engine 会将虚拟机实时迁移到另一个主机上,或者您也可以选择停止虚拟机。您可以随时更新虚拟机的主机维护政策,以控制虚拟机的行为方式。
您可以通过配置以下设置来更改虚拟机的主机维护政策:
- 维护行为:发生维护事件时,实时迁移还是停止虚拟机。
- 重启行为:Compute Engine 在虚拟机崩溃或遇到主机错误时重启还是终止虚拟机。
- 主机错误检测时间:Compute Engine 在检测到虚拟机无响应后等待重启或终止虚拟机的最长时间。
- 本地 SSD 恢复时间:Compute Engine 在检测到主机错误后恢复本地 SSD 磁盘上的数据所用的最长时间。如果指定的时间已过,但未成功恢复,则本地 SSD 数据将丢失。
维护调度
Google Cloud 提供了可让您更严格地控制维护的功能。通过使用某些虚拟机系列,您可以指定维护偏好设置,以通过 Cloud Logging 接收多天通知。收到通知后,您可以在预定事件之前选择的任何时间点触发维护。
您可以将这些功能与主机维护政策结合使用,以自定义满足您的工作负载需求的时间表。
实时迁移
默认情况下,除 Z3 虚拟机之外的所有虚拟机都设置为实时迁移,在这种情况下,Compute Engine 会自动迁移虚拟机以使其不受基础设施维护事件影响,并且虚拟机在迁移过程中保持运行状态。虚拟机可能会遭遇短暂的性能下降情况,但一般而言,大多数虚拟机的性能应该不会有显著差异。这非常适合那些需要维持正常运行时间并且能够承受短暂性能下降的虚拟机。
Compute Engine 迁移虚拟机时,会报告一个系统事件,而该事件会发布到地区操作列表。您可以通过查看特定可用区的 Compute Engine 操作来检查此事件。实时迁移事件的操作类型如下:
compute.instances.migrateOnHostMaintenance
停止和(可选)重启
如果您不希望实时迁移虚拟机,可以选择停止并视需要重启虚拟机。对于设置为停止并视情况重启的虚拟机,Compute Engine 会发送软关闭信号以关停虚拟机。然后,它会等待 60 秒钟让虚拟机完全关停,终止虚拟机,然后在不受维护事件影响的其他地方重启实例。如果虚拟机未在 60 秒内完全关停,它将终止。
如果您的虚拟机需要持续保持最高性能,并且您的整个应用设计为可应对虚拟机故障或重启,则此选项非常适用。
Compute Engine 停止并重启虚拟机时,会报告一个系统事件,而该事件会发布到地区操作列表。您可以通过查看特定可用区的 Compute Engine 操作来检查此事件。已停止事件的操作类型如下:
compute.instances.terminateOnHostMaintenance
您的虚拟机重启时,会使用同一块永久性启动磁盘,并且会重新挂接您配置的辅助永久性磁盘。这些磁盘中的数据在虚拟机迁移和重启过程中会继续保留。
当虚拟机由于维护事件而停止时,系统不会保留本地 SSD 数据。虚拟机重启时,会创建一个您必须格式化和装载的新本地 SSD。
本地 SSD 数据会保留在存储优化 Z3 虚拟机上。发生维护事件时,Z3 虚拟机会就地重启,而不是迁移到新主机。在日常维护结束时,虚拟机会重启。Google Cloud 会尽最大努力确保您的本地 SSD 数据保持不变。但是,在某些情况下(例如超时情况),无法恢复数据。
自动重启
如果您的虚拟机设置为在发生维护事件时停止,或者由于底层硬件问题导致虚拟机崩溃,则可以将 Compute Engine 设置为自动重启虚拟机,将 automaticRestart
字段设置为 true
即可。如果虚拟机在用户操作(如调用 sudo shutdown
)过程中或在地区服务中断期间离线,则此设置不适用。
Compute Engine 自动重启虚拟机时,会报告一个系统事件,而该事件会发布到区域操作列表。您可以通过查看特定可用区的 Compute Engine 操作来检查此事件。自动重启事件的操作类型如下:
compute.instances.automaticRestart
主机错误
主机错误 (compute.instances.hostError
) 意味着托管虚拟机的物理机器上存在硬件或软件问题,进而导致虚拟机崩溃。如果主机错误涉及硬件完全无法运行或其他硬件问题,则可能会阻止虚拟机实时迁移。如果您的虚拟机设置为自动重启(这是默认设置),Google 通常会在检测到错误后的 3 分钟内重启您的虚拟机。重启可能最多需要 5.5 分钟,具体取决于问题。
具有本地 SSD 磁盘的虚拟机
如果挂接了一个或多个本地 SSD 磁盘的虚拟机上出现主机错误,Compute Engine 会尽力重新连接到该虚拟机并保留本地 SSD 数据。在 Compute Engine 恢复您的虚拟机和本地 SSD 磁盘时,主机系统和底层磁盘无响应。
您可以通过设置本地 SSD 恢复超时来指定 Compute Engine 尝试恢复本地 SSD 数据的时间。
如需详细了解发生主机错误时本地 SSD 磁盘的行为,请参阅本地 SSD 数据持久性。
无响应的虚拟机
有时,虚拟机可能会在检测到主机错误之前无响应。您可以通过设置主机错误恢复超时(预览版)来缩短 Compute Engine 等待重启或终止虚拟机的时间。如需了解详情,请参阅设置可用性政策。
物理硬件故障和软件故障可能会不时发生,但这种情况很少见。为了保护您的应用和服务免受这些可能具有中断性的系统事件的影响,请查看以下资源:
Google 还提供 App Engine 等代管式服务以及 App Engine 柔性环境。
本地 SSD 恢复超时
发生主机错误时,Compute Engine 会尝试恢复挂接到虚拟机的任何本地 SSD 磁盘。您可以使用本地 SSD 恢复超时来控制 Compute Engine 尝试恢复数据所用的时间。默认情况下,Compute Engine 使用 1 小时来恢复数据,但有效值介于 0 到 168 之间(以 1 小时为增量)。 例外情况是 Z3,它的默认恢复时间最长为 6 小时。
如果超时到期,并且数据仍无法恢复,则 Compute Engine 会重启没有本地 SSD 磁盘的虚拟机。Compute Engine 会将新的空白本地 SSD 磁盘挂接到重启的虚拟机。
如果超时为 1 小时或更长时间,则虚拟机会处于 REPAIRING
状态,而 Compute Engine 会恢复任何挂接的本地 SSD 磁盘。虚拟机和本地 SSD 磁盘在恢复期间无响应。
如果超时为 0,则 Compute Engine 不会尝试恢复本地 SSD 磁盘,且数据无法恢复。如果恢复工作负载比恢复本地 SSD 数据更重要,则可以将恢复超时设置为 0。
停止本地 SSD 磁盘恢复
您可以在本地 SSD 恢复超时到期之前中断恢复过程。 为此,请在 gcloud compute instances stop
命令中使用 --discard-local-ssd=True
标志。
这将停止恢复过程,停止虚拟机,并舍弃本地 SSD 数据。您可以稍后重启虚拟机。如需了解详情,请参阅停止具有本地 SSD 的虚拟机。
如需设置本地 SSD 恢复超时,请参阅设置虚拟机主机维护政策。
后续步骤
- 详细了解实时迁移。
- 详细了解如何设置虚拟机主机维护政策。
- 详细了解如何获取实时迁移通知。
- 详细了解如何模拟主机维护。
- 详细了解如何处理 GPU 主机维护事件。
- 详细了解如何手动实时迁移单租户虚拟机。