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

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

Amazon ParallelCluster 故障排除

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

检索和保留日志

日志是对问题进行故障排除的有用资源。在您使用日志对您的问题进行故障排除之前Amazon ParallelCluster资源,您应该首先创建群集日志存档。执行中所述的步骤创建集群日志的存档主题上Amazon ParallelClusterGitHub 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.log是的日志cfn-init脚本。首先检查这个日志。你可能会看到类似的错误Command chef failed在这个日志中。查看此行之前的行,了解与错误消息相关的更多详细信息。有关更多信息,请参阅 。cfn-init.

  • /var/log/cloud-init.log是的日志cloud-init. 如果您在里面没有看到任何内容cfn-init.log,然后尝试在接下来查看这个日志。

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

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

本节与使用安装的群集相关Amazon ParallelCluster版本 2.9.0 及更高版本Slurm任务计划程序。有关多队列模式的详细信息,请参阅多队列模式.

关键日志

下表概述了头节点的关键日志:

/var/log/cfn-init.log

这是Amazon CloudFormationinit 日志。它包含设置实例时运行的所有命令。它对于解决初始化问题很有用。

/var/log/chef-client.log

这是 Chef 客户端日志。它包含通过 chef/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日志。它在每个计算节点上运行,以便在罕见的情况下监控节点clustermgtd头节点上的守护程序处于脱机状态。它对于解决意外的终止问题非常有用。

/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设置,请检查ResumeProgramslurm用户并且有744(rwxr--r--) 权限。

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

  • 如果启动了实例,则在安装过程中可能出现了问题。你应该看到相应的私有 IP 地址和实例 IDResumeProgram日志。此外,您可以查看特定实例的相应设置日志。有关计算节点设置错误故障排除的更多信息,请参阅下一部分。

静态计算节点:

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

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

  • 计算节点:

    • 适用日志:

      • /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登录以解决这些问题。

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

注意

从版本 2.11.5 开始,Amazon ParallelCluster不支持使用SGE要么Torque计划程序。

本节适用于没有多个队列模式且具有以下两种配置之一的群集:

  • 使用Amazon ParallelCluster版本 2.9.0 以及SGE、Torque,或者Slurm任务计划程序。

  • 使用启动Amazon ParallelCluster版本 2.9.0 或更高版本和SGE要么Torque任务计划程序。

关键日志

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

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

/var/log/chef-client.log

这是 CINC(厨师)客户日志。它包含通过 CINC 运行的所有命令。它对于解决初始化问题很有用。

ForallAmazon 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 ParallelCluster版本 2.9.0

/var/log/cfn-init.log

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

所有版本

/var/log/nodewatcher

这是nodewatcher日志。nodewatcher在每个 Compute 节点上运行的守护程序。如果节点处于空闲状态,他们会缩小节点。此日志对于与缩减资源相关的任何问题都很有用。

排查启动和加入操作失败的问

  • 适用日志:

    • /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.

如果您需要高性能共享文件系统,请考虑使用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 上,/home/centos上CentOS, 和/home/ubuntu上Ubuntu)。

/opt/intel

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

/opt/sge
注意

从版本 2.11.5 开始,Amazon ParallelCluster不支持使用SGE要么Torque计划程序。

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

/opt/slurm

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

/opt/torque
注意

从版本 2.11.5 开始,Amazon ParallelCluster不支持使用SGE要么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 存储的作业日志的链接。

在资源创建失败时进行故障排除

当群集资源创建失败时,本部分与群集资源相关。

当资源创建失败时,ParallelCluster 会返回如下错误消息。

pcluster create -c config my-cluster Beginning cluster creation for cluster: my-cluster WARNING: The instance type 'p4d.24xlarge' cannot take public IPs. Please make sure that the subnet with id 'subnet-1234567890abcdef0' has the proper routing configuration to allow private IPs reaching the Internet (e.g. a NAT Gateway and a valid route table). WARNING: The instance type 'p4d.24xlarge' cannot take public IPs. Please make sure that the subnet with id 'subnet-1234567890abcdef0' has the proper routing configuration to allow private IPs reaching the Internet (e.g. a NAT Gateway and a valid route table). Info: There is a newer version 3.0.3 of AWS ParallelCluster available. Creating stack named: parallelcluster-my-cluster Status: parallelcluster-my-cluster - ROLLBACK_IN_PROGRESS Cluster creation failed. Failed events: - AWS::CloudFormation::Stack MasterServerSubstack Embedded stack arn:aws:cloudformation:region-id:123456789012:stack/parallelcluster-my-cluster-MasterServerSubstack-ABCDEFGHIJKL/a1234567-b321-c765-d432-dcba98766789 was not successfully created: The following resource(s) failed to create: [MasterServer]. - AWS::CloudFormation::Stack parallelcluster-my-cluster-MasterServerSubstack-ABCDEFGHIJKL The following resource(s) failed to create: [MasterServer]. - AWS::EC2::Instance MasterServer You have requested more vCPU capacity than your current vCPU limit of 0 allows for the instance bucket that the specified instance type belongs to. Please visit http://aws.amazon.com/contact-us/ec2-request to request an adjustment to this limit. (Service: AmazonEC2; Status Code: 400; Error Code: VcpuLimitExceeded; Request ID: a9876543-b321-c765-d432-dcba98766789; Proxy: null) }

例如,如果您看到上一个命令响应中显示的状态消息,则必须使用不超过当前 vCPU 限制的实例类型或请求更多 vCPU 容量。

您还可以使用 CloudFormation 控制台查看有关"Cluster creation failed"状态。

从控制台中查看 CloudFormation 错误消息。

  1. 登录到Amazon Web Services Management Console然后导航到https://console.aws.amazon.com/cloudformation.

  2. 选择名为 Parallelcluster-的堆栈cluster_name.

  3. 选择事件选项卡。

  4. 检查状态对于通过滚动浏览资源事件列表来创建失败的资源逻辑 ID. 如果子任务创建失败,请向后工作以查找失败的资源事件。

  5. 示例为Amazon CloudFormation错误消息:

    2022-02-07 11:59:14 UTC-0800 MasterServerSubstack CREATE_FAILED Embedded stack arn:aws:cloudformation:region-id:123456789012:stack/parallelcluster-my-cluster-MasterServerSubstack-ABCDEFGHIJKL/a1234567-b321-c765-d432-dcba98766789 was not successfully created: The following resource(s) failed to create: [MasterServer].

其他支持

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