报告有故障的主机

如果您发现 A4X Max、A4X、A4、A3 Ultra、A3 Mega 和 A3 High(8 个 GPU)实例上存在无法自行解决的问题,则可以将相应主机报告为有故障。此类问题的一个示例是集群内的性能变慢,或 GPU 温度持续偏高。

当您将主机报告为有故障时,Compute Engine 会通过运行主机维护来自动修复计算实例。

  • 对于 A4 和 A3 Ultra 实例,如果您有未使用的预留容量或实例所在可用区中有可用容量,Compute Engine 会在维护开始时尝试将实例迁移到其他主机。将主机报告为有故障有助于最大限度地减少工作负载的停机时间。
  • 对于 A3 Mega 和 A3 High 实例,Compute Engine 会停止实例,执行必要的主机修复,然后在同一主机上重启实例。

本文档介绍了如何报告和修复 Slurm 集群或其他基于计算实例的集群中的故障主机实例。如需报告 Google Kubernetes Engine (GKE) 集群中的故障主机,请参阅通过 GKE 报告故障主机

限制

报告故障主机时,需要遵守以下限制:

  • 只有当在主机上运行的计算实例满足以下所有条件时,您才能报告主机故障:

    • 计算实例正在运行。

    • 计算实例使用 A4X Max、A4X、A4、A3 Ultra、A3 Mega 和 A3 High(8 个 GPU)机器类型。

    • 计算实例使用受预留约束的预配模型

  • 如果您在 reportHostAsFaulty 操作正在进行时删除计算实例,则 reportHostAsFaulty 操作会失败。

  • Google Cloud 会尽力满足您报告主机故障的所有请求。不过,由于容量限制或速率限制,请求可能并不总是能够得到满足。

准备工作

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

In the Google Cloud console, activate Cloud Shell.

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.

REST

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

    Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI by running the following command:

    gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

所需的角色

如需获得报告故障主机所需的权限,请让您的管理员为您授予以下 IAM 角色:

  • 针对 Compute 实例或项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1)
  • 使用 Cloud Logging 查看故障主机报告操作的状态:针对项目的 Logs Viewer (roles/logging.viewer) 角色

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色包含报告故障主机所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需报告故障主机,您必须具备以下权限:

  • 创建有故障的主机报告:针对计算实例的 compute.instances.update 权限
  • 使用 Logging 查看操作列表:针对项目的 logging.operations.list 权限
  • 使用 Logging 查看操作的详细信息:针对项目的 logging.operations.get 权限
  • 查看 Compute Engine 中的操作列表:针对项目的 compute.zoneOperations.list 权限
  • 查看 Compute Engine 中某项操作的详细信息:针对项目的 compute.zoneOperations.describe 权限

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

了解有故障的主机报告流程

为计算实例报告故障主机后,计算实例的重启时间会因计算实例使用的预留中指定的预留运行模式而异。如需验证预留的预留运行模式,请查看预留中的 reservationOperationalMode 字段。 下表总结了两种可用预留运行模式(全容量模式受管模式)的故障主机进程。
全容量模式 (ALL_CAPACITY) 托管模式 (HIGHLY_AVAILABLE_CAPACITY)
支持的机器类型 A4X Max 和 A4X A4、A3 Ultra、A3 Mega 和 A3 High
故障主机报告 API 速率限制 无速率限制。 对 API 的调用可能会受到速率限制。
有故障的主机报告流程

当您为以全容量模式运行的计算实例报告故障主机时,会发生以下情况:

  1. 报告故障主机:在整个报告故障主机操作期间,实例将保持 RUNNING 状态,该操作通常需要 10-12 分钟才能完成。如需查看操作状态,请参阅本文档中的查看报告故障主机操作
  2. 修复主机:在报告故障主机操作完成后,主机修复操作会在 1 分钟内开始。

    当修复主机操作开始时,实例会停止运行,其状态会根据为实例指定的自动重启 (automaticRestart) 设置而发生变化:

    • 如果为实例启用了自动重启,则实例的状态会更改为 REPAIRING。当实例的主机健康状况良好时,该实例会自动重启,除非您在此之前停止了该实例。
    • 如果为实例停用了自动重启,则实例的状态会更改为 TERMINATED。在实例的主机恢复正常后,您需要手动重启实例。

    修复故障主机可能需要 3-14 天,有时甚至更长时间。

  3. 重启实例:在主机修复操作完成后(通常需要 3-14 天),会发生以下情况之一:

    • 如果实例处于 REPAIRING 状态,并且在修复完成时资源可用,则 Compute Engine 会在修复后的主机上自动重启实例。
    • 否则,如果实例处于 TERMINATED 状态,或者在修复完成时资源不可用,则实例的状态将保持为 TERMINATED 或更改为 TERMINATED。您必须在需要时手动重启实例。不过,如果您在重启实例时没有可用的资源,则重启可能会失败;例如,如果其他实例已在使用修复后的主机,则可能会发生这种情况。

当您为以受管模式运行的计算实例报告故障主机时,会发生以下情况:

  1. 报告故障主机:在整个报告故障主机操作期间,实例将保持 RUNNING 状态,该操作通常需要 10-12 分钟才能完成。如需查看操作状态,请参阅本文档中的查看报告故障主机操作
  2. 开始修复主机:在报告故障主机操作完成后,主机修复操作会在 1 分钟内开始。

    当修复主机操作开始时,实例会停止运行,其状态会根据为实例指定的自动重启 (automaticRestart) 设置而发生变化:

    • 如果为实例启用了自动重启,则实例的状态会更改为 REPAIRING。当实例的主机健康状况良好时,该实例会自动重启,除非您在此之前停止了该实例。
    • 如果为实例停用了自动重启,则实例的状态会更改为 TERMINATED。在实例的主机恢复正常后,您需要手动重启实例。

    修复故障主机可能需要 3-14 天,有时甚至更长时间。

  3. 迁移并重启实例:在主机修复操作开始(通常需要 10-12 分钟)后,Compute Engine 会尝试预留一个额外的宿主机来替换您在预留容量中报告的故障宿主机。如果 Compute Engine 找到健康的主机(成功替换故障主机或在预留容量中找到匹配的健康主机),则会将实例迁移到该主机。然后,通过以下方式之一重启实例:

    • 如果实例处于 REPAIRING 状态,并且在修复完成之前或完成时资源可用,则 Compute Engine 会在健康状况良好的主机上自动重启实例。
    • 否则,如果实例处于 TERMINATED 状态,或者在修复完成之前或完成时资源不可用,则实例的状态将保持为 TERMINATED 或更改为 TERMINATED。您必须在需要时手动重启实例。不过,如果您在重启实例时没有可用的资源,则重启可能会失败;例如,如果其他实例已在使用修复后的主机,则可能会发生这种情况。

报告有故障的主机

如需报告有故障的主机,请完成以下步骤:

  1. 查看计算实例运行的主机

    如需查看相关说明,请参阅查看计算实例的拓扑

  2. 可选:备份本地 SSD 数据。当实例停止时,Compute Engine 会自动舍弃挂接到该实例的任何本地 SSD 磁盘的数据。Compute Engine 舍弃本地 SSD 数据后,您将无法恢复这些数据。

    如需了解如何保留本地 SSD 数据,请参阅本地 SSD 数据备份

  3. 报告有故障的主机。如需报告有故障的主机,请选择以下选项之一。主机修复操作会在报告故障主机操作完成后立即(一分钟内)开始。如果您在启动故障主机报告操作后发现实例无响应,建议您等待至少 15 分钟,然后重启计算实例。

    gcloud

    如需报告有故障的主机,请使用以下 gcloud compute instances report-host-as-faulty 命令

    gcloud compute instances report-host-as-faulty INSTANCE_NAME \
        --async \
        --disruption-schedule=IMMEDIATE \
        --fault-reasons=behavior=FAULT_REASON,description=DESCRIPTION \
        --zone=ZONE
    

    替换以下内容:

    • INSTANCE_NAME:计算实例的名称。

    • FAULT_REASON:计算实例遇到的主机问题列表,以英文逗号分隔,例如 ISSUE_1,ISSUE_2。您可以指定以下值:

      • PERFORMANCE:与集群中的其他 GPU 相比,附加到计算实例的 GPU 存在性能问题;您在日志中未看到任何 XID 错误;Compute Engine 未检测到其他异常故障模式,例如静默数据损坏。

      • SILENT_DATA_CORRUPTION:您发现计算实例中的数据损坏,但计算实例仍在运行。静默数据损坏可能是由 vCPU 缺陷、软件 bug 或内核问题等原因造成的。

      • UNRECOVERABLE_GPU_ERROR:您发现了一个 XID 对应的不可恢复的 GPU 错误。

      • BEHAVIOR_UNSPECIFIED:您不确定计算实例的具体问题。

    • DESCRIPTION:影响计算实例的问题的说明,例如 XID 信息或疑似性能问题。

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

    REST

    如需报告故障主机,请向 instances.reportHostAsFaulty 方法发出以下 POST 请求。

    举报有问题的宿主时,您可以一次指定多个问题原因。例如,如需指定两个故障原因,请发出如下请求:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/reportHostAsFaulty
    
    {
      "disruptionSchedule": "IMMEDIATE",
      "faultReasons": [
        {
          "behavior": "FAULT_REASON_1",
          "description": "DESCRIPTION_1"
        },
        {
          "behavior": "FAULT_REASON_2",
          "description": "DESCRIPTION_2"
        }
      ]
    }
    

    替换以下内容:

    • PROJECT_ID:计算实例所在项目的 ID。

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

    • INSTANCE_NAME:计算实例的名称。

    • FAULT_REASON_1FAULT_REASON_2:计算实例遇到的每个主机问题。您可以指定以下值:

      • PERFORMANCE:与集群中的其他 GPU 相比,附加到计算实例的 GPU 存在性能问题;您在日志中未看到任何 XID 错误;Compute Engine 未检测到其他异常故障模式,例如静默数据损坏。

      • SILENT_DATA_CORRUPTION:您发现计算实例中的数据损坏,但计算实例仍在运行。静默数据损坏可能是由 vCPU 缺陷、软件 bug 或内核问题等原因造成的。

      • UNRECOVERABLE_GPU_ERROR:您发现了一个 XID 对应的不可恢复的 GPU 错误。

      • BEHAVIOR_UNSPECIFIED:您不确定计算实例的具体问题。

    • DESCRIPTION_1DESCRIPTION_2:您指定的每个主机问题的说明,例如 XID 信息或可疑的性能问题。

查看报告有故障的主机操作

报告故障主机后,Compute Engine 会开始一系列操作,将该主机标记为故障并准备维修该主机。具体而言,在报告故障主机操作期间,会发生以下流程:

  1. 将主机标记为有故障。Compute Engine 会创建报告故障主机操作。报告故障主机操作随后会创建一系列子操作。这些子操作会将底层主机标记为有故障。

  2. 准备好主机以进行维修。所有子操作完成后,系统会开始报告故障主机操作。Compute Engine 会停止计算实例,并开始修复故障主机操作。根据计算实例所用预留中指定的预留运行模式,以及是否有健康的主机可用,Compute Engine 会让计算实例保持停止状态,或者尝试自动迁移并重启计算实例。

  3. 报告完成情况并修复主机。Compute Engine 完成报告主机故障操作,并运行主机修复操作。

如需跟踪项目中报告故障主机 (compute.instances.reportHostAsFaulty) 操作的状态,请选择以下选项之一。如需详细了解可用于跟踪修复、迁移和自动重启的其他操作,请参阅 Compute Engine 文档中的维护和重启行为以及监控和规划主机维护事件

控制台(实例操作)

  1. 在 Google Cloud 控制台中,前往操作页面。

    转到运营

  2. 在显示的表格中,找到您报告的计算实例。

  3. 在包含计算实例的行中,您可以在状态列中查看“报告故障主机”操作的状态。操作完成后,该值为完成

  4. 可选:如需验证 Compute Engine 是否已重启计算实例,请查看实例的详细信息

控制台(计算实例日志)

  1. 在 Google Cloud 控制台中,前往 Logs Explorer 页面。

    转到日志浏览器

  2. 验证显示查询开关是否已设置为开启位置。

  3. 在查询编辑器中输入以下查询:

    resource.type="gce_instance" AND protoPayload.methodName=~"compute\.instances\.reportHostAsFaulty"
    
  4. 点击运行查询查询结果窗格会显示查询结果。

gcloud

  1. 如需查看项目中的“报告故障主机”操作的状态,请使用 gcloud compute operations list 命令,并将 --filter 标志设置为 operationType:reportHostAsFaulty

    gcloud compute operations list --filter="operationType:reportHostAsFaulty"
    
  2. 如果您想查看特定故障主机操作的详细信息,请使用 gcloud compute operations describe 命令

    gcloud compute operations describe OPERATION_NAME \
        --zone="ZONE"
    

    替换以下内容:

    • OPERATION_NAME:操作的名称。

    • ZONE:操作所在的可用区。

REST

如需查看项目中的“报告故障主机”操作的状态,请向 zoneOperations.list 方法发出 GET 请求。在请求网址中添加 filter 查询参数并设置为 items.operationType:reportHostAsFaulty

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations&filter=items.operationType:reportHostAsFaulty

替换以下内容:

  • PROJECT_ID:操作的名称。

  • ZONE:操作所在的可用区。

后续步骤