本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon ParallelCluster 故障排除
这些区域有:Amazon ParallelCluster社区维护着一个 Wiki 页面,其中提供了许多故障排除技巧Amazon ParallelCluster GitHub 维基
主题
检索和保存日志
日志是解决问题的有用资源。在你可以使用日志来解决你的问题之前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
flags。然后,通过 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.0Slurm任务计划器。有关多队列模式的更多信息,请参阅多队列模式.
密钥日志
下表概述了头节点的关键日志:
/var/log/cfn-init.log
-
这是Amazon CloudFormationinit logs。它包含在设置实例时运行的所有命令。它对于解决初始化问题很有用。
/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
被确定为不健康。检查computemgtd
日志 (/var/log/parallelcluster/computemgtd
) 看看是否computemgtd
终止了节点。
-
-
节点出现故障
-
检查
slurmctld
日志 (/var/log/slurmctld.log
)以查看任务或节点失败的原因。请注意,如果节点出现故障,作业会自动重新排队。 -
如果
slurm_resume
报告节点已启动,clustermgtd
几分钟后报告该节点在 Amazon EC2 中没有相应的实例,该节点可能在安装过程中出现故障。要从计算中检索日志 (/var/log/cloud-init-output.log
),执行以下步骤:-
提交任务LETSlurm启动新节点。
-
节点启动后,使用此命令启用终止保护。
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.5Amazon ParallelCluster不支持使用SGE要么Torque调度器。
本节适用于没有多队列模式且具有以下两种配置之一的集群:
-
使用以下命令启动Amazon ParallelCluster版本早于 2.9.0SGE,Torque,或Slurm任务计划器。
-
使用启动Amazon ParallelCluster版本 2.9.0SGE要么Torque任务计划器。
密钥日志
以下日志文件是头节点的关键日志。
对于Amazon ParallelCluster版本 2.9.0
/var/log/chef-client.log
-
这是 CINC(厨师)客户端日志。它包含通过 CINC 运行的所有命令。它对于解决初始化问题很有用。
为了所有人Amazon ParallelCluster版本:
/var/log/cfn-init.log
-
这是
cfn-init
日志。它包含在设置实例时运行的所有命令,因此对于解决初始化问题非常有用。有关更多信息,请参阅cfn-init. /var/log/clustermgtd.log
-
这是
clustermgtd
登录Slurm调度器。clustermgtd
作为管理大多数集群操作操作的集中守护程序运行。它对于解决任何启动、终止或集群操作问题非常有用。 /var/log/jobwatcher
-
这是
jobwatcher
登录SGE和Torque调度器。jobwatcher
监控调度器队列并更新 Auto Scaling 组。它对于解决与扩展节点相关的问题很有用。 /var/log/sqswatcher
-
这是
sqswatcher
登录SGE和Torque调度器。sqswatcher
处理成功初始化后计算实例发送的实例就绪事件。它还将计算节点添加到调度器配置中。此日志可用于排除一个或多个节点未能加入群集的原因。
以下是计算节点的关键日志。
Amazon ParallelCluster版本 2.9.0
/var/log/cloud-init-output.log
-
这是云初始化日志。它包含在设置实例时运行的所有命令。它对于解决初始化问题很有用。
Amazon ParallelCluster2.9.0
/var/log/cfn-init.log
-
这是 CloudFormation init logs。它包含在设置实例时运行的所有命令。它对于解决初始化问题很有用
所有版本
/var/log/nodewatcher
-
这是
nodewatcher
日志。nodewatcher
使用时在每个 Compute 节点上运行的守护进程SGE和Torque调度器。如果节点处于空闲状态,他们会缩小其规模。此日志对于与缩减资源相关的任何问题都很有用。
对启动和加入操作失败进行故障排除
-
适用的日志:
-
/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参数用于计算节点。
有关更多信息,请参阅排查实例启动问题和置放群组、角色和限制在里面Amazon EC2 Linux 实例
无法替换的目录
以下目录在节点之间共享,无法替换。
/home
-
这包括默认的用户主文件夹 (
/home/ec2_user
在Amazlinux,/home/centos
上CentOS,以及/home/ubuntu
上Ubuntu)。 /opt/intel
-
这包括 Intel MPI、Intel Parallel Studio 和相关文件。
/opt/sge
-
注意 从版本 2.11.5Amazon ParallelCluster不支持使用SGE要么Torque调度器。
这包括 Son of Grid Engine 和相关文件。(有条件,仅当 scheduler
= sge
时。) /opt/slurm
-
这包括 Slurm Workload Manager 和相关文件。(有条件,仅当 scheduler
= slurm
时。) /opt/torque
-
注意 从版本 2.11.5Amazon ParallelCluster不支持使用SGE要么Torque调度器。
这包括 Torque Resource Manager 和相关文件。(有条件,仅当 scheduler
= torque
时。)
排查 NICE DCV 中的问题
NICE DCV 的日志
NICE DCV 的日志写入到文件中/var/log/dcv/
目录。查看这些日志有助于解决问题。
NICE DCV 实例类型内存
实例类型应至少有 1.7 千兆字节 (GiB) 的 RAM 才能运行 NICE DCV。Nano和micro实例类型没有足够的内存来运行 NICE DCV。
Ubuntu NICE DCV 问题
在 Ubuntu 上通过 DCV 会话运行 Gnome Terminal 时,你可能无法自动访问以下用户环境Amazon ParallelCluster通过登录 shell 可用。用户环境提供 openmpi 或 intelmpi 等环境模块以及其他用户设置。
Gnome Terminal 的默认设置阻止外壳作为登录 shell 启动。这意味着 shell 配置文件不是自动获取的,而且Amazon ParallelCluster用户环境未加载。
要正确获取 shell 配置文件并访问Amazon ParallelCluster用户环境,执行以下操作之一:
-
更改原定设置终端设置:
-
选择编辑Gnome 终端中的菜单。
-
SelectPreferences(首选项),那么配置文件.
-
选择命令然后select以登录 shell 的身份运行命令.
-
打开新终端。
-
-
使用命令行获取可用的配置文件:
$
source /etc/profile && source $HOME/.bashrc
排查集群中的问题Amazon Batch一体化
本节与以下群集相关Amazon Batch调度器集成。
HEAD 节点问题
与头节点相关的设置问题可以通过与单队列集群相同的方式进行故障排除。有关这些问题的更多信息,请参阅对单队列模式集群中的问题进行故障排除.
Amazon Batch多节点parallel 作业提交问题
如果您在使用时提交多节点parallel 作业时遇到问题Amazon Batch作为作业调度器,你应该升级到Amazon ParallelCluster版本 2.5.0。如果这不可行,您可以使用主题中详细介绍的解决方法:通过以下方式自行修补用于提交多节点parallel 作业的集群Amazon Batch
计算问题
Amazon Batch管理服务的扩展和计算方面。如果您遇到与计算相关的问题,请参阅Amazon Batch 故障排除提供帮助的文档。
Job 失败
如果作业失败,你可以运行awsbout
命令来检索任务输出。您还可以运行awsbstat -d
命令获取指向亚马逊存储的任务日志的链接 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 的堆栈-
集群名称
. -
选择事件选项卡。
-
检查状态通过滚动浏览资源事件列表来查找创建失败的资源逻辑 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].
IAM 策略大小问题疑难解答
SELECTIAM 与Amazon STS配额、名称要求和字符限制验证附加到角色的托管策略的配额。如果托管策略的大小超过配额,请将该策略拆分为两个或多个策略。如果您超出附加到 IAM 角色的策略数量的配额,请创建其他角色并在这些角色之间分配策略以满足配额。
其他支持
有关已知问题的列表,请参阅正文GitHub维基