View a markdown version of this page

对中的计算节点引导和注册问题进行故障排除 AWS 个 - AWS 个

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

对中的计算节点引导和注册问题进行故障排除 AWS 个

当计算节点无法引导或正确注册到您的 AWS PCS 集群时,您可能会遇到以下症状:

  • 工作无法开始

  • 你无法连接到中的实例 AWS Systems Manager

  • 实例意外关闭

  • 实例不断更换

这些故障可能是由 EC2 实例启动期间或 AWS PCS 计算节点引导过程中的问题引起的。本主题介绍可帮助您排除 AWS PCS 节点引导过程中的问题的程序。有关 EC2 实例启动故障排除的更多信息,请参阅《亚马逊弹性计算云用户指南》中的 Amazon EC2 实例启动问题疑难解答。

当 EC2 实例成功启动但在加入 AWS PCS 集群的过程中失败时,就会出现引导失败。引导过程包括两个主要阶段:

Slurm 是如何运作的 AWS 个

它可以帮助你将 Slurm 的标准工作方式与 Slurm 在 PC 上的运行方式进行比较。 AWS

标准 Slurm 任务处理

标准的 Slurm 任务处理中会出现以下步骤:

  1. 当您提交任务时,对任务slurmctld进行验证并排队。

  2. 当资源可用时,slurmctld分配现有节点。

  3. slurmd守护程序在分配的节点上运行作业。

Slurm 任务处理已开启 AWS 个

AWS PCS 任务处理中会出现以下步骤:

  1. 当您提交任务时,对任务slurmctld进行验证并排队。

  2. 当需要额外容量时, AWS PCS 使用计算节点组的启动模板来启动新的 EC2 实例。

  3. 新实例引导到集群中:

    1. 实例向 AWS PCS 注册。

    2. 实例加入 Slurm 集群。

  4. 当资源准备就绪时,slurmctld分配节点(包括新引导的节点)。

  5. slurmd守护程序在分配的节点上运行作业。

检索实例日志

排除计算节点引导问题的第一步是检索实例日志。您可以使用以下方法之一:

AWS CLI

使用以下命令从计算节点检索控制台输出:

aws ec2 get-console-output --region us-east-1 --instance-id i-1234567890abcdef0 --output text

us-east-1替换为您的 AWS 地区i-1234567890abcdef0和您的实例 ID。

AWS Systems Manager

如果您可以使用 Systems Manager 连接到实例,则可以直接查看引导日志文件:

  1. 使用系统管理器连接到实例。有关更多信息,请参阅《系统管理器用户指南》中的启动会话

  2. 查看引导日志文件:

    sudo cat /var/log/amazon/pcs/bootstrap.log
注意

如果在初始化阶段出现问题,您可能需要等待大约 20 分钟才能连接到实例。Systems Manager 和 SSH 服务仅在初始化完成后或在失败时引导执行超时时时启动。

从实例 ID 检索 VPC/Subnet/Security 群组

要解决计算节点的问题,您可能需要检索有关与您的实例关联的 VPC、子网和安全组的信息。如果您不知道自己的实例 ID,请参阅在 AWS PCS 中查找计算节点组实例

AWS 管理控制台
获取 VPC、子网和安全组
  1. 打开 Amazon EC2 控制台

  2. 选择实例

  3. 实例表中,选择实例 ID。

  4. 在显示的实例摘要中查找 VPC ID 子网 ID。

  5. 在实例摘要中,选择安全选项卡。

  6. 在 “安全” 选项卡中找到安全组。

AWS CLI

使用以下命令检索您的实例的 VPC、子网和安全组信息:

aws ec2 describe-instances --instance-ids i-1234567890abcdef0 --query 'Reservations[*].Instances[*].{InstanceId:InstanceId,VpcId:VpcId,SubnetId:SubnetId,SecurityGroups:SecurityGroups[*].GroupId}' --output table

节点注册问题

节点注册是计算节点在引导期间执行的第一个操作。该节点调用 AWS PCS API 端点以向 AWS PCS 注册自己。注册失败通常会显示类似于以下内容的错误消息:

<13>Nov 13 16:23:50 user-data: [2025-11-13T16:23:50.510+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Registering node to cluster <clusterId>
<13>Nov 13 16:24:18 user-data: [2025-11-13T16:24:18.192+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Retriable exception detected.
<13>Nov 13 16:24:18 user-data: [2025-11-13T16:24:18.193+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Response is [specific error message]
<13>Nov 13 16:24:18 user-data: [2025-11-13T16:24:18.194+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Retrying in 31 seconds...
<13>Nov 13 16:24:18 user-data: [2025-11-13T16:24:18.192+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Retriable exception detected.
...
<13>Nov 13 16:25:18 user-data: [2025-11-13T16:25:18.195+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Registration timeout (600 seconds) reached. Exiting.
<13>Nov 13 16:25:18 user-data: [2025-11-13T16:25:18.200+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_init.sh: ERROR: Error: (2) occurred on line 1 when running /opt/aws/pcs/bin/pcs_bootstrap_init.sh. Shutting down instance.

错误的实例配置文件

如果该节点由于错误的实例配置文件而无法注册,您将看到以下错误:

<13>Nov 13 18:43:08 user-data: [2025-11-13T18:43:08.268+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Response is {
<13>Nov 13 18:43:08 user-data:   "__type": "com.amazon.coral.service#AccessDeniedException",
<13>Nov 13 18:43:08 user-data:   "Message": "User: arn:aws:sts::<accountId>:assumed-role/<roleName>/<instanceId> is not authorized to perform: pcs:RegisterComputeNodeGroupInstance on resource: arn:aws:pcs:<regionCode>:<accountId>:cluster/<clusterId> as either the resource does not exist, some policy explicitly denies access, or no policy grants access",
<13>Nov 13 18:43:08 user-data:   "nodeID": null
<13>Nov 13 18:43:08 user-data: }

验证与计算节点关联的实例配置文件是否具有pcs:RegisterComputeNodeGroupInstance权限。有关如何创建有效实例配置文件的更多信息,请参阅为创建实例配置文件 AWS PCS

无法连接到 AWS PCS 端点

如果您的计算节点位于私有子网中,请确保已为 PC AWS S 配置 VPC 终端节点。或者,请确保您的子网有指向 NAT 网关的路由,用于访问互联网。默认情况下, AWS PCS 代理使用双栈非 FIPS 端点。pcs.region.api.aws如果您使用自定义 DNS,请确保它可以解析pcs.region.api.aws到终端节点。有关更多信息,请参阅下列内容:

配置错误 AWS PCS 端点

如果您看到类似以下内容的错误消息,请验证与您的 AWS PCS VPC 终端节点关联的策略:

com.amazon.coral.security.AccessDeniedException: User: arn:aws:sts::xxx:assumed-role/<roleName>/<instanceId> is not authorized to perform: pcs:RegisterComputeNodeGroupInstance on resource: arn:aws:pcs:<regionCode>:<accountId>:cluster/<clusterId> as either the resource does not exist, some policy explicitly denies access, or no policy grants access

有关如何为 PC AWS S 配置 VPC 接口终端节点的更多信息,请参阅访问 AWS 并行计算服务 使用接口端点 (AWS PrivateLink)

没有公有 IP 的公有子网中的实例

如果您的子网未启用自动分配公有 IP,并且您的路由配置使用互联网网关,则实例无法与 AWS PCS API 通信。

带有互联网网关的子网中的实例必须具有公有 IP 地址。要解决此问题,请选择以下选项之一:

  • 将 PC AWS S 的 VPC 终端节点添加到您的集群 VPC。这使实例无需公有 IP 地址通过互联网网关即可与 AWS PCS 通信。

  • 使用带有 NAT 网关的私有子网,这样就不需要公有 IP 地址。

  • 通过您的子网或启动模板启用自动公有 IP 地址分配,以便实例可以通过互联网网关联系 API。请注意,此选项对多网络接口实例无效。

Multi-NIC 公有子网中的实例

如果您使用具有多个网络接口 (NIC) 的实例类型,则必须使用私有子网。

AWS 公有 IP 地址只能分配给使用单个网络接口启动的实例。有关 IP 地址的更多信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的在实例启动期间分配公有 IPv4 地址。

Multi-NIC 实例类型需要子网中的 NAT 网关或内部代理才能访问 AWS PCS 终端节点。或者,您可以将 PC AWS S 的 VPC 终端节点添加到您的集群 VPC。

集群密钥已被删除或标记为删除

如果 Secre AWS ts Manager 中的 Slurm 共享密钥已被删除或标记为删除,则计算节点将无法注册,您的集群将受到损害。

AWS 创建集群时,PCS 会自动在 Secre AWS ts Manager 中创建 Slurm 共享密钥(名称格式:pcs!slurm-secret-<cluster-id>)。此密钥是集群中安全通信所必需的。有关更多信息,请参阅 在中使用集群密钥 AWS PCS

如果此密钥被删除或标记为删除,则新节点将无法加入群集,并且控制器或其他群集守护程序(例如slurmdslurmdbd)在重新启动后可能无法重新加入群集。

要解决此问题,如果已删除的密钥仍在恢复窗口内,则可以将其恢复。有关详细说明,请参阅还原凭据管理器 AWS 密钥

如果恢复窗口到期,则无法恢复密钥,也无法恢复受影响的 AWS PCS 集群。你需要使用相同的配置创建一个新集群。 AWS PCS 会自动创建新的调度器密钥。

Slurm 集群加入问题

成功注册节点后,计算节点将尝试加入 Slurm 集群。节点slurmd上的守护程序联系 Slurm 控制器以向集群注册。Slurm 加入失败通常会显示类似于以下内容的错误消息:

<13>Nov  5 17:20:29 user-data: [2024-11-05T17:20:28+00:00] FATAL: Mixlib::ShellOut::ShellCommandFailed: service[slurmd] (aws-pcs-slurm::finalize_slurm line 18) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'  
<13>Nov  5 17:20:29 user-data: ---- Begin output of ["/usr/bin/systemctl", "--system", "start", "slurmd"] ----  
<13>Nov  5 17:20:29 user-data: STDOUT:   
<13>Nov  5 17:20:29 user-data: STDERR: Job for slurmd.service failed because the control process exited with error code. See "systemctl status slurmd.service" and "journalctl -xe" for details.  
<13>Nov  5 17:20:29 user-data: ---- End output of ["/usr/bin/systemctl", "--system", "start", "slurmd"] ----

安全组配置

确认您的安全组配置正确,允许计算节点和 Slurm 控制器之间进行通信。安全组必须允许以下流量:

  • 用于slurmd与之通信的端口 6817 slurmctld

  • slurmctld于 ping 的 6818 端口 slurmd

有关安全组要求的更多信息,请参阅以下主题:

重要

还必须在计算节点组安全组中配置您在集群创建期间与集群关联的集群安全组,以允许计算节点与控制器通信。

缺少英伟达驱动程序

如果实例启动正确,但任务无法启动,并且您在实例日志中看到类似以下内容的错误消息,则可能缺少 NVIDIA 驱动程序:

<13>Dec  2 13:52:00 user-data: [2024-12-02T13:52:00.094+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_config_always.sh: INFO: nvidia-smi not found!  
...  
<13>Dec  2 13:54:10 user-data: Job for slurmd.service failed because the control process exited with error code. See "systemctl status slurmd.service" and "journalctl -xe" for details.  
<13>Dec  2 13:54:12 user-data: [2024-12-02T13:54:12.718+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_finalize.sh: INFO: systemctl could not start slurmd!

如果您连接到实例并检查slurmd守护程序状态,则可能会看到类似以下内容的错误:

$ systemctl status slurmd  
...  
fatal: can't stat gres.conf file /dev/nvidia0: No such file or directory

要解决此问题,请在您的自定义 AMI 上安装 NVIDIA 驱动程序。有关更多信息,请参阅 步骤 4-(可选)安装其他驱动程序、库和应用程序软件

ResumeTimeout 到达

如果计算节点及其 EC2 实例因节点运行状况不佳而终止,则 AWS PCS 可能不支持 AMI 或者可能存在网络问题。EC2 实例将运行大约 30 分钟,直到到达 Slurm 并将该节点标记 ResumeTimeout 为。DOWN

如果实例无法正确引导并且未在 AWS PCS 中注册(不RegisterComputeNodeGroupInstance调用 EC2 实例),请检查您的实例日志中是否有类似于以下内容的错误消息:

/opt/aws/pcs/bin/pcs_bootstrap_init.sh: No such file or directory

此错误表明 AWS PCS 引导软件不是 AMI 的一部分。要解决此问题,请确保您的自定义 AMI 包含 AWS PCS 引导软件。有关更多信息,请参阅 适用于 AWS PCS 的自定义 Amazon 机器映像 (AMIs)

Slurmctld 无法 ping 计算节点

如果该实例正确执行了引导程序并在 AWS PCS 中注册,但slurmctld无法看到它并向其提交任务,则该实例将在一段时间DOWN后设置为,然后终止。

这可能是由于安全组配置不当造成的。例如,如果端口 6817 启用了slurmd允许与之通信slurmctld,但缺少端口 6818 slurmctld 以允许 ping 通。slurmd

验证您的安全组是否包含中记录的所有必需规则安全组要求和注意事项