监控和规划主机维护事件


所有虚拟机实例的维护均取决于您在创建虚拟机时选择的主机维护政策。某些虚拟机提供了提前查看虚拟机的维护时间表的其他选项。

本页面介绍了如何监控和规划 Compute Engine 虚拟机上的主机维护事件。如需查看虚拟机的维护时间表,虚拟机必须运行下列其中一个机器系列中的机器类型:

  • 通用 C3 虚拟机
  • 通用 C3D 虚拟机
  • 存储优化 Z3 虚拟机
  • 内存优化 M1、M2、M3 虚拟机

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 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

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

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

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

所需的角色

如需获得创建虚拟机和管理虚拟机维护所需的权限,请让管理员向您授予项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

此预定义角色包含创建虚拟机和管理虚拟机维护所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

创建虚拟机和管理虚拟机维护需要以下权限:

  • 获取虚拟机的相关信息: compute.instances.get
  • 创建虚拟机: compute.instances.create

您也可以使用自定义角色或其他预定义角色来获取这些权限。

监控维护通知

Google 会通过多种方法针对即将进行的虚拟机维护发送通知。您可以通过查询虚拟机、元数据服务器或 Cloud Logging 来查找通知。当预定维护窗口打开时,Google Cloud 会自动对虚拟机执行维护。通过监控虚拟机的预定维护窗口,您可以主动准备工作负载以处理即将进行的维护,同时将中断降至最低。

存在维护事件通知的虚拟机具有以下特征:

  • 维护事件较少:通常,具有周期性维护间隔的虚拟机的维护事件应该较少。
  • 维护通知较长:提前收到计划内维护事件通知,以便进行规划。
  • 监控和规划:使用 Cloud Logging 跟踪维护时间表。使用突发事件和提醒随时了解最新动态。
  • 按需维护控制:在通知期内开始维护,以便在维护符合时间表时更新虚拟机。

检查虚拟机是否存在维护事件通知

使用 Google Cloud CLI、REST 方法或元数据服务器查看是否有即将发生的虚拟机维护事件。

gcloud

如需查看虚拟机以后的维护窗口,请使用 gcloud compute instances describe 命令。您必须添加 --zone=[ZONE_NAME]

gcloud compute instances describe VM_NAME \
  --zone=ZONE

替换以下内容:

  • VM_NAME:虚拟机的名称。
  • ZONE:虚拟机所在的可用区。

响应如下所示:

  upcomingMaintenance:{
    "canReschedule":True
    "latestWindowStartTime": "2023-12-01T19:00:01Z"
    "maintenanceStatus":"PENDING"
    "type":"SCHEDULED"
    "windowEndTime": "2023-12-01T22:00:00Z"
    "windowStartTime": "2023-12-01T19:00:00Z"
  }

在此响应中,canReschedule 设置为 TruemaintenanceStatus 设置为 PENDING。系统会按显示的日期和时间安排维护。这些设置表明您可以提前手动触发此事件。

REST

如需查看虚拟机是否即将进行维护,请运行 instances.get 命令:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME

替换以下内容:

  • PROJECT_NAME:项目的名称。
  • ZONE:虚拟机所在的可用区。
  • VM_NAME:虚拟机的名称。

响应如下所示:

  upcomingMaintenance:{
    "canReschedule":True
    "latestWindowStartTime": "2023-12-01T19:00:01Z"
    "maintenanceStatus":"PENDING"
    "type":"SCHEDULED"
    "windowEndTime": "2023-12-01T22:00:00Z"
    "windowStartTime": "2023-12-01T19:00:00Z"
  }

在此响应中,canReschedule 设置为 TRUEmaintenanceStatus 设置为 PENDING。系统会按显示的日期和时间安排维护。

元数据服务器

在客机操作系统中,查询元数据服务器以查看下一个维护事件。

$ curl http://metadata.google.internal/computeMetadata/v1/instance/upcoming-maintenance?alt=json -H "Metadata-Flavor: Google"

检查 Cloud Logging 是否存在维护事件通知

Google 会在维护虚拟机之前向 Cloud Logging 发送通知。Cloud Logging 会在 Logs Explorer 中生成系统事件。虚拟机的预定维护在 Cloud Logging 中显示为:compute.instances.upcomingMaintenance

根据您的虚拟机配置,Cloud Logging 会通过以下方式显示该事件:

  • 对于配置为使用实时迁移进行维护的虚拟机,该事件会以方法名称 compute.instances.migrateOnHostMaintenance 显示。
  • 对于配置为使用终止和自动重启进行维护的虚拟机,该事件会以方法名称 compute.instances.terminateOnHostMaintenance 显示。

如果虚拟机配置为使用实时迁移,则在维护完成后,系统会显示 compute.instances.upcomingMaintenance,表示通知已被清除。

设置提醒来接收维护通知可获益。如需了解详情,请参阅配置基于日志的提醒以及创建和管理通知渠道

维护状态定义

以下状态定义说明了对虚拟机维护查询的响应。这些定义提供了与虚拟机维护相关的信息。Google Cloud CLI、REST 和元数据服务器使用以下相同的响应:

  • windowStartTime:发生维护的时段的开始时间
  • windowEndTime:发生维护的时段的结束时间
  • latestWindowStartTime:该时段可移至的最早时间
  • maintenanceType:要执行的维护类型
    • NONE:此虚拟机未安排维护
    • SCHEDULED:提前 7 天发出维护通知
    • UNSCHEDULED:维护包含重要更新,仅在短时间内通知。
  • canReschedule:是否可以在通知期内对此虚拟机触发维护
    • TRUE:可以在通知期内执行客户触发的维护
    • FALSE:无法对此虚拟机执行客户触发的维护。这通常在虚拟机进行维护期间发生
  • maintenanceStatus:当前维护操作的状态
    • ONGOING:维护操作正在进行中
    • PENDING:维护操作已安排,但尚未开始

维护状态行为

在管理维护时间表时,请检查 canReschedule=maintenanceStatus= 的状态,这些响应组合描述了功能预期行为,并显示以下状态组合之一:

  • 如果 canReschedule=YesmaintenanceStatus=Pending,则表示您可以对虚拟机触发维护。
  • 如果 canReschedule=NomaintenanceStatus=Ongoing,则表示维护已在进行中。
  • 如果 canReschedule=NomaintenanceStatus=Pending,则表示虚拟机不支持手动触发的维护。

后续步骤