Amazon ParallelCluster 故障排除 - Amazon ParallelCluster
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Amazon ParallelCluster 故障排除

这些区域有:Amazon ParallelCluster社区维护了一个 Wiki 页面,该页面提供了Amazon ParallelClusterGitHub 维基。有关已知问题的列表,请参阅已知问题

检索和保留日志

日志是对问题进行故障排除的有用资源。在您可以使用日志对Amazon ParallelCluster资源,您应该首先创建群集日志的归档文件。执行创建集群日志的归档主题上的AmazonParallelCluster GitHub Wiki启动此过程。

如果其中一个正在运行的群集遇到问题,您应该将群集放在STOPPED状态,通过运行pcluster stop <cluster_name>命令,然后再开始进行故障排除。这样可以防止产生任何意外成本。

如果pcluster停止工作,或者如果要删除集群,同时仍保留其日志,请运行pcluster delete —keep-logs <cluster_name>命令。运行此命令会删除集群,但保留存储在 Amazon CloudWatch 中的日志组。有关此命令的更多信息,请参阅pcluster delete文档中)。

排查堆栈部署问题

如果您的集群无法创建并回滚堆栈创建,您可以通过以下日志文件查看问题。你想要查找ROLLBACK_IN_PROGRESS中的日志。失败消息的内容应与以下内容类似:

$ pcluster create mycluster Creating stack named: parallelcluster-mycluster Status: parallelcluster-mycluster - ROLLBACK_IN_PROGRESS Cluster creation failed. Failed events: - AWS::EC2::Instance MasterServer Received FAILURE signal with UniqueId i-07af1cb218dd6a081

要诊断问题,请使用pcluster create,包括--norollback标志。然后,SSH 进入集群:

$ pcluster create mycluster --norollback ... $ pcluster ssh mycluster

登录到头节点后,您应该找到三个可用于查明错误的主日志文件。

  • /var/log/cfn-init.logcfn-init脚本。首先检查此日志。你可能会看到像Command chef failed在此日志中。查看此行前面的行,了解与错误消息相关的更多详细信息。有关更多信息,请参阅 。cfn-init

  • /var/log/cloud-init.logcloud-init。如果您在cfn-init.log,然后尝试检查此日志。

  • /var/log/cloud-init-output.log是运行的命令的输出cloud-init。这包括来自cfn-init。在大多数情况下,您无需查看此日志即可排查此类问题。

排除多个队列模式群集中的问题

本节与使用Amazon ParallelCluster版本 2.9.0 及更高版本,并使用Slurm作业计划程序。有关多队列模式的更多信息,请参阅多队列模式

密钥日志

下表概述了 Head 节点的密钥日志:

/var/log/cfn-init.log

这是Amazon CloudFormation初始化日志。它包含设置实例时运行的所有命令。它对于初始化问题进行故障排除非常有用。

/var/log/chef-client.log

这是 Chef 客户端日志。它包含通过 Cheef/CINC 运行的所有命令。它对于初始化问题进行故障排除非常有用。

/var/log/parallelcluster/slurm_resume.log

这是ResumeProgram日志。它为动态节点启动实例,对于动态节点启动问题进行故障排除非常有用。

/var/log/parallelcluster/slurm_suspend.log

这是SuspendProgram日志。它在动态节点的实例终止时被调用,对于动态节点终止问题进行故障排除非常有用。检查此日志时,还应检查clustermgtd日志。

/var/log/parallelcluster/clustermgtd

这是clustermgtd日志。它作为管理大多数集群操作操作的集中式守护程序运行。它可用于排除任何启动、终止或群集操作问题。

/var/log/slurmctld.log

这是Slurm控制守护程序日志。Amazon ParallelCluster不会做出扩展决策。相反,它只会尝试启动资源来满足Slurm要求。它对于扩展和分配问题、作业相关问题以及任何与调度程序相关的启动和终止问题非常有用。

以下是计算节点的关键注释:

/var/log/cloud-init-output.log

这是cloud-init日志。它包含设置实例时运行的所有命令。它对于初始化问题进行故障排除非常有用。

/var/log/parallelcluster/computemgtd

这是computemgtd日志。它在每个计算节点上运行,以便在极少数情况下监视节点computemgtd守护程序处于脱机状态。它对于解决意外终止问题非常有用。

/var/log/slurmd.log

这是Slurm计算守护程序日志。它对于初始化和计算故障相关问题进行故障排除非常有用。

节点初始化问题疑难解答

本节介绍如何解决节点初始化问题。这包括节点无法启动、启动或加入群集的问题。

Head 节点:

适用的日志:

  • /var/log/cfn-init.log

  • /var/log/chef-client.log

  • /var/log/parallelcluster/clustermgtd

  • /var/log/parallelcluster/slurm_resume.log

  • /var/log/slurmctld.log

检查/var/log/cfn-init.log/var/log/chef-client.log日志。这些日志应包含设置头节点时运行的所有操作。在安装过程中发生的大多数错误应该有一个错误消息位于/var/log/chef-client.log日志。如果在群集的配置中指定了安装前脚本或安装后脚本,请仔细检查脚本是否通过日志消息成功运行。

创建群集时,头节点需要等待计算节点加入群集,然后才能加入群集。因此,如果计算节点无法加入集群,则头节点也会失败。您可以按照其中一组过程操作,具体取决于您使用的计算注释的类型:

动态计算节点:

  • 搜索ResumeProgram日志 (/var/log/parallelcluster/slurm_resume.log)中的计算节点名称,以查看是否ResumeProgram曾经与节点一起调用。(如果ResumeProgram从未调用过,则可以检查slurmctld日志 (/var/log/slurmctld.log)来确定Slurm曾经试图调用ResumeProgram与节点一起使用。)

  • 请注意,不正确的权限ResumeProgram可能会导致ResumeProgram默示失败。如果您使用的是自定义 AMI,并对ResumeProgram设置,请检查ResumeProgram属于slurm用户,并具有744(rwxr--r--) 权限。

  • 如果ResumeProgram,请检查是否为节点启动了实例。如果没有启动实例,您应该能够看到描述启动失败的错误消息。

  • 如果实例已启动,则在安装过程中可能出现问题。您应该看到相应的私有 IP 地址和实例 ID,从ResumeProgram日志。此外,您还可以查看特定实例的相应安装日志。有关计算节点的安装错误故障诊断的详细信息,请参阅下一节。

静态计算节点:

  • 检查clustermgtd(/var/log/parallelcluster/clustermgtd) 日志以查看是否为节点启动了实例。如果它们未启动,则应显示明确的错误消息,详细说明启动失败。

  • 如果实例已启动,则在安装过程中会出现一些问题。您应该看到相应的私有 IP 地址和实例 ID,从ResumeProgram日志。此外,您还可以查看特定实例的相应安装日志。

  • 计算节点:

    • 适用日志:

      • /var/log/cloud-init-output.log

      • /var/log/slurmd.log

    • 如果启动了计算节点,请先检查/var/log/cloud-init-output.log,它应该包含类似于/var/log/chef-client.log登录头节点。在安装过程中发生的大多数错误应该有错误消息位于/var/log/cloud-init-output.log日志。如果在群集配置中指定了预安装或安装后脚本,请检查它们是否成功运行。

    • 如果您使用的是自定义 AMI,并对Slurm配置,那么可能会有Slurm相关的错误,该错误会阻止计算节点加入群集。有关调度程序相关的错误,请检查/var/log/slurmd.log日志。

故障排除意外的节点更换和终止

本节将继续探讨如何解决与节点相关的问题,特别是当节点被意外替换或终止时。

  • 适用日志:

    • /var/log/parallelcluster/clustermgtd(头节点)

    • /var/log/slurmctld.log(头节点)

    • /var/log/parallelcluster/computemgtd(计算节点)

  • 意外替换或终止的节点

    • 签入clustermgtd日志 (/var/log/parallelcluster/clustermgtd)以查看clustermgtd采取操作来替换或终止节点。请注意,clustermgtd处理所有正常节点维护操作。

    • 如果clustermgtd替换或终止节点,则应显示一条消息,详细说明为什么在节点上执行此操作。如果原因与调度程序相关(例如,因为节点位于DOWN), 签入slurmctld日志以获得更多信息。如果原因与 Amazon EC2 相关,则应该有详细信息消息,详细说明需要更换的 Amazon EC2 相关问题。

    • 如果clustermgtd没有终止节点,首先检查这是否是 Amazon EC2 的预期终止,更具体地说是竞价终止。computemgtd在 Compute 节点上运行,也可以采取操作来终止节点,如果clustermgtd被确定为不健康。Checkcomputemgtd日志 (/var/log/parallelcluster/computemgtd)以查看computemgtd终止了节点。

  • 节点失败

    • 签入slurmctld日志 (/var/log/slurmctld.log),查看作业或节点失败的原因。请注意,如果节点出现故障,作业将自动重新排队。

    • 如果slurm_resume报告节点已启动,clustermgtd之后的报告几分钟Amazon EC2 中没有该节点的相应实例,则该节点可能会在安装过程中失败。要从计算中检索日志 (/var/log/cloud-init-output.log),请执行以下步骤:

      • 提交一份工作以让Slurm启动一个新节点。

      • 节点启动后,使用此命令启用终止保护。

        aws ec2 modify-instance-attribute --instance-id i-xyz --disable-api-termination
      • 使用此命令从节点检索控制台输出。

        aws ec2 get-console-output --instance-id i-xyz --output text

替换、终止或关闭问题实例和节点

  • 适用日志:

    • /var/log/parallelcluster/clustermgtd(头节点)

    • /var/log/parallelcluster/slurm_suspend.log(头节点)

  • 在大多数情况下,clustermgtd处理所有预期的实例终止操作。签入clustermgtd日志,查看它无法替换或终止节点的原因。

  • 对于动态节点出现故障scaledown_idletime,请检入SuspendProgram日志以查看是否SuspendProgram调用slurmctld以特定节点作为参数。请注意,SuspendProgram实际上没有执行任何操作。相反,它只在调用时记录。所有实例终止和NodeAddr重置完成clustermgtd。Slurm将节点放回POWER_SAVING后的状态SuspendTimeout自动使用。

故障排除其他已知节点和作业问题

另一种类型的已知问题是Amazon ParallelCluster可能无法分配作业或做出扩展决策。有了这种类型的问题,Amazon ParallelCluster仅启动、终止或维护资源Slurm说明。对于这些问题,请检查slurmctld日志来解决这些问题。

排除单队列模式群集中的问题

此部分适用于没有多个队列模式的群集,具有以下两种配置之一:

  • 启动时使用Amazon ParallelCluster版本 2.9.之前的版本和SGE、Torque,或者Slurm作业调度程序。

  • 使用启动Amazon ParallelCluster版本 2.9.0 或更高版本,SGE或者Torque作业调度程序。

密钥日志

以下日志文件是头节点的关键日志。

适用于Amazon ParallelCluster版本 2.9.0 或更高版本:

/var/log/chef-client.log

这是 CINC(厨师)客户端日志。它包含通过 CINC 运行的所有命令。它对于初始化问题进行故障排除非常有用。

FORLAmazon ParallelCluster版本:

/var/log/cfn-init.log

这是cfn-init日志。它包含在设置实例时运行的所有命令,因此对于初始化问题进行故障排除非常有用。有关更多信息,请参阅 。cfn-init

/var/log/jobwatcher

这是jobwatcher日志。jobwatcher监控调度程序队列并更新 Auto Scaling 组。它可用于排除与向上扩展节点相关的问题。

/var/log/sqswatcher

这是sqswatcher日志。sqswatcher处理成功初始化后由计算实例发送的实例就绪事件。它还将计算节点添加到调度程序配置中。此日志对于故障排除一个或多个节点加入群集失败的原因非常有用。

以下是计算节点的关键日志。

Amazon ParallelCluster版本 2.9.0 或更高版本 2.9.0

/var/log/cloud-init-output.log

这是云初始化日志。它包含设置实例时运行的所有命令。它对于初始化问题进行故障排除非常有用。

Amazon ParallelCluster2.9.0 之前的版本 2.9.0

/var/log/cfn-init.log

这是 CloudFormation 初始化日志。它包含设置实例时运行的所有命令。它对初始化问题进行故障排除非常有用

所有版本

/var/log/nodewatcher

这是nodewatcher日志。nodewatcher在每个计算节点上运行的守护程序。如果节点处于空闲状态,则它们会缩小该节点。此日志对于任何与缩小资源相关的问题非常有用。

故障排除启动和联接操作失败

  • 适用日志:

    • /var/log/cfn-init-cmd.log(头节点和计算节点)

    • /var/log/sqswatcher(头节点)

  • 如果节点启动失败,请检入/var/log/cfn-init-cmd.log日志以查看特定的错误消息。在大多数情况下,节点启动失败是由于安装失败造成的。

  • 如果尽管设置成功,但计算节点仍未能加入调度程序配置,请检查/var/log/sqswatcher日志以查看是否sqswatcher处理了事件。在大多数情况下,这些问题是因为sqswatcher没有处理事件。

排查扩展问题

  • 适用日志:

    • /var/log/jobwatcher(头节点)

    • /var/log/nodewatcher(计算节点)

  • 纵向扩展问题: 对于头节点,检查/var/log/jobwatcher日志以查看jobwatcher守护进程计算了所需节点的适当数量并更新了 Auto Scaling 组。请注意,jobwatcher监控调度程序队列并更新 Auto Scaling 组。

  • 缩小问题: 对于计算节点,请选中/var/log/nodewatcher登录问题节点,查看节点被缩小的原因。请注意,nodewatcher守护程序缩小计算节点(如果计算节点处于空闲状态)。

一个已知问题是大型集群(特别是具有 500 个或更多计算节点的群集)上的随机计算注释失败。此问题与单队列群集的扩展体系结构的限制有关。如果您想使用大规模集群,请使用Amazon ParallelCluster版本 v2.9.0 或更高版本,正在使用Slurm,并希望避免此问题,则应升级并切换到多队列模式支持的群集。您可以通过运行pcluster-config convert

对于超大规模集群,可能需要对系统进行额外调整。有关更多信息,请联系Amazon Web Services Support。

置放群组和实例启动问题

要获得最低的节点间延迟,请使用置放群组。置放群组可确保您的实例位于同一网络主干中。如果发出请求时没有足够的可用实例,则InsufficientInstanceCapacity返回错误。要减少在使用集群置放群组时收到此错误的可能性,请将placement_group参数到DYNAMIC并将placement参数到compute

如果您需要高性能共享文件系统,请考虑使用Amazon FSx for Lustre

如果头节点必须位于置放群组中,则对头节点和所有计算节点使用相同的实例类型和子网。通过这样做,compute_instance_type参数的值与master_instance_type参数,则使用placement参数设置为cluster,以及compute_subnet_id参数。使用此配置时,master_subnet_id参数用于计算节点。

有关更多信息,请参阅 。排查实例启动问题置放群组角色和限制中的适用于 Linux 实例的 Amazon EC2 用户指南

无法替换的目录

以下目录在节点之间共享,无法替换。

/home

这包括默认用户主文件夹(/home/ec2_user在 Amazon Linux Linux 上,/home/centos上的CentOS, 和/home/ubuntu上的Ubuntu)。

/opt/intel

这包括 Intel MPI、Intel Parallel Studio 和相关文件。

/opt/sge

这包括 Son of Grid Engine 和相关文件。(有条件,仅当 scheduler = sge 时。)

/opt/slurm

这包括 Slurm Workload Manager 和相关文件。(有条件,仅当 scheduler = slurm 时。)

/opt/torque

这包括 Torque Resource Manager 和相关文件。(有条件,仅当 scheduler = torque 时。)

解决 NICE DCV 中的问题

NICE DCV 的日志将写入/var/log/dcv/目录。查看这些日志有助于排查问题。

实例类型应至少有 1.7 GiB 的 RAM 才能运行 NICE DCV。Nano和micro实例类型没有足够的内存来运行 NICE DCV。

排查集群中的问题Amazon Batch整合

本节与具有Amazon Batch调度程序集成。

Head 节点问题

与头节点相关的设置问题可以通过与单队列群集相同的方式进行故障排除。有关这些问题的更多信息,请参阅排除单队列模式群集中的问题

Amazon Batch多节点并行作业提交问题

如果在使用时提交多节点并行作业时遇到问题Amazon Batch作为作业计划程序,则应升级到Amazon ParallelCluster版本 2.5.0。如果这不可行,您可以使用主题中详细介绍的解决方法:自行修补用于提交多节点并行作业的集群Amazon Batch

计算问题

Amazon Batch管理服务的扩展和计算方面。如果遇到与计算相关的问题,请参阅Amazon Batch 故障排除文档以获取帮助。

Job 失败

如果作业失败,您可以运行awsbout命令检索作业输出。您还可在其他实例上运行awsbstat -d命令获取指向 Amazon CloudWatch 存储的作业日志的链接。

附加支持

有关已知问题的列表,请参阅GitHub 维基页面或问题页. 有关更多紧急问题,请联系Amazon Web Services Support或打开GitHub 新问题