手动启动主机维护事件


本页介绍了如何在受支持的 Compute Engine 实例上手动启动主机维护事件。借助此功能,您可以启动维护事件以控制实例的维护时间。这对于可能受性能下降或停机时间影响的工作负载非常有用,因为您需要维护窗口在特定时间开始。

手动启动维护事件后,主机维护会立即开始。您无法指定维护活动的开始日期或时间。如果您不使用此功能,则维护事件会在即将进行的维护通知中所示的时间进行。

如果您想先测试应用将如何处理维护事件,可以模拟维护事件

限制

您可以为使用以下机器类型的实例手动启动主机维护事件:

准备工作

  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

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

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

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

所需的角色

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

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

所需权限

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

  • 如需获取计算实例的相关信息,请执行以下操作: compute.instances.get

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

手动启动主机维护事件

Compute Engine 会通过多种方法针对即将进行的维护事件发送通知。您可以根据通知中的信息确定手动启动维护事件的时间范围。

查看通知信息

您可以通过以下方式查找维护事件通知:

如果有关主机维护事件的通知包含 canReschedule=TruemaintenanceStatus=Pending,则您可以选择在自己选择的时间开始维护,也可以等待维护事件在 windowStartTime 指定的时间发生。

如果没有收到通知,并且您尝试手动启动维护事件,则会显示以下消息:

There is no reschedulable upcoming maintenance.

这表示未安排维护事件,无需执行任何操作。

启动维护事件

您可以选择何时开始主机维护,而不必等到安排的时间。使用 Google Cloud CLI 或 REST 触发维护事件,该事件会立即开始。

gcloud

如需启动维护事件,请使用 compute instances perform-maintenance 命令。输入命令后,主机维护会立即开始。

gcloud compute instances perform-maintenance INSTANCE_NAME \
    --zone=ZONE

替换以下内容:

  • INSTANCE_NAME:计算实例的名称。
  • ZONE:实例所在的可用区。

响应类似于以下示例:

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

在响应中,canReschedule 设置为 falsemaintenanceStatus 设置为 ONGOING,这表示主机维护操作正在进行中。

REST

如需启动维护事件,请使用 instances.performMaintenance 方法构建 POST 请求。

POST: https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/INSTANCE_NAME/performMaintenance

替换以下内容:

  • PROJECT_NAME:项目的名称
  • ZONE:计算实例所在的可用区
  • INSTANCE_NAME:实例的名称

响应如下所示:

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

在响应中,canReschedule 设置为 falsemaintenanceStatus 设置为 ONGOING,这表示主机维护操作正在进行中。

后续步骤