本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon ParallelCluster 故障排除
主题
这些区域有:Amazon ParallelCluster社区维护了一个 Wiki 页面,该页面在Amazon ParallelClusterGitHub Wiki
检索和保留日志
日志是对问题进行故障排除的有用资源。在您使用日志对您的问题进行故障排除之前Amazon ParallelCluster资源,您应该首先创建群集日志存档。执行中所述的步骤创建集群日志的存档
如果您的某个正在运行的集群遇到问题,则应将集群放在STOPPED
通过运行状态pcluster stop
<
命令在开始进行故障排除之前。这可防止产生任何意想不到的成本。cluster_name
>
如果pcluster
停止运行,或者如果您想在保留其日志的同时删除集群,请运行pcluster delete —keep-logs
<
命令。运行此命令会删除集群,但会保留存储在 Amazon CloudWatch 中的日志组。有关此命令的更多信息,请参阅pcluster delete文档中)。cluster_name
>
排查堆栈部署问题
如果您的集群未能创建并回滚堆栈创建,则可以查看以下日志文件来诊断问题。你想要查找的输出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
设置,请检查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
登录以解决这些问题。
排查单队列模式群集中的问题
从版本 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 错误消息。
-
登录到Amazon Web Services Management Console然后导航到https://console.aws.amazon.com/cloudformation
. -
选择名为 Parallelcluster-的堆栈
cluster_name
. -
选择事件选项卡。
-
检查状态对于通过滚动浏览资源事件列表来创建失败的资源逻辑 ID. 如果子任务创建失败,请向后工作以查找失败的资源事件。
-
示例为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