slurm:如何将前端与计算节点连接起来?

slurm: How to connect front-end with compute nodes?

我有一个前端和两个计算节点

都有相同的 slurm.conf 文件,结尾为(详情请参阅:https://gist.github.com/avatar-lavventura/46b56cd3a29120594773ae1c8bc4b72c):

NodeName=ebloc2 NodeHostName=ebloc NodeAddr=54.227.62.43 CPUs=1
PartitionName=debug Nodes=ebloc2 Default=YES MaxTime=INFINITE State=UP

NodeName=ebloc4 NodeHostName=ebloc NodeAddr=54.236.173.82 CPUs=1
PartitionName=debug Nodes=ebloc4 Default=YES MaxTime=INFINITE State=UP

slurmctld:只检查第一个写入节点的信息,不检查第二个写入节点的信息。当我尝试发送作业时收到以下错误,它只处理第一个写入节点的 IP,当我 运行 sudo slurmd 在第一个节点上工作时。

错误:

slurmctld: debug2: slurm_connect failed: Connection refused
slurmctld: debug2: Error connecting slurm stream socket at 54.227.62.43:6821: Connection refused
slurmctld: debug2: slurm_connect failed: Connection refused
slurmctld: debug2: Error connecting slurm stream socket at 54.227.62.43:6821: Connection refused

问题:我在第一个订单中提到的计算节点收到作业,但我在第二个订单中提到的计算节点没有。我该如何解决它。

slurmctld 日志(https://gist.github.com/avatar-lavventura/4ec8c1b15e0ada4aa4bd0414e2b1ffb4)

感谢您的宝贵时间和帮助。

在配置文件中,尝试删除ControlAddr=127.0.0.1;或替换为 ebloc 的 IP 地址。这个 127.0.0.1 地址基本上意味着 'myself' 并且 ControlAddrslurmd 用来连接到控制器。

出于同样的原因也删除 NodeHostName=localhost NodeAddr=127.0.0.1

并确保 eblocebloc1ebloc2 确实是那些机器上的 hostname -s returns。

还要确保没有防火墙在这些机器之间的任何方向阻塞 Slurm 端口,并且 SELinux 被禁用或允许。确保 slurmd 运行,以及 munge.

每个分区只能有一个 PartitionName 行。 删除第一个并输入:

PartitionName = debug Nodes=ebloc2,ebloc4 Default=YES MaxTime=INFINITE State=UP

或使用正则表达式:

PartitionName = debug Nodes=ebloc[2,4] Default=YES MaxTime=INFINITE State=UP