计算化学公社

标题: 0基础slurm安装 [打印本页]

作者
Author:
hgyhgy    时间: 2022-4-26 13:13
标题: 0基础slurm安装
本帖最后由 hgyhgy 于 2022-5-17 23:00 编辑

0基础,通过baidu, 花了足足一天半,才能让slurm顺利运行。大家可以参考这个,以避免浪费时间。目前我实现的,只是最简单的功能。我的系统是centos 8.5 stream。


首先是要设好安装源。
我采用了国内阿里源。下面这个可用。我是在/etc/yum.repos.d中新建一个bak文件夹,然后mv * bak。然后只留下centos-base.repo, 其内容如下。我这个目录底下,还有一些epel.repo。这个不是我下载的。我估计是通过yum install epel-release自动生成的。
[base]
name=CentOS-8.5.2111 - Base - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/$basearch/os/
gpgcheck=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

#additional packages that may be useful
[extras]
name=CentOS-8.5.2111 - Extras - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/extras/$basearch/os/
gpgcheck=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-8.5.2111 - Plus - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/centosplus/$basearch/os/
gpgcheck=0
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

[PowerTools]
name=CentOS-8.5.2111 - PowerTools - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/PowerTools/$basearch/os/
gpgcheck=0
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

[AppStream]
name=CentOS-8.5.2111 - AppStream - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/AppStream/$basearch/os/
gpgcheck=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official


如果一下子,全部步骤都正确,可能很容易就能安装好了。但如果出错了,要修改就不太容易,出现许多奇怪的错误。

1.让所有账号在所有节点的uids和gids保持一致。
这个也不知道是否有必要,有没有用,但实现保持一致也不难。
使用sudo id (用户名)可以查看用户名的uids和gids。(用户名)用实际的用户名代替。比如用户tester, 用sudo id tester.
使用命令sudo usermod - u (uids)  (用户名)
sudo groupmod -u (gids) (用户名)

2.是保持各计算节点的时间同步。
centos即使最小安装,也默认安装了一个时间同步工具chronyd。
运行systemctl start chronyd && systemctl enable chronyd命令启动服务即可。
这个控制节点,我发现它会自动启动,计算节点不会自动启动,要手动运行一下上面的命令,才会自动保持时间同步。
运行date命令,可以查看时间。
保持时间同步后,可选择把时间写进cmos里。
clock -w&&hwclock -systohc

3.如果之前进行了错误的安装,要把之前失败的安装删除,这个十分关键。如果是全新安装,就不必管这个步骤。
我是参考centos下安装munge_吃瓜三道杠的博客-CSDN博客_munge安装才发现这点。
我使用yum remove munge munge-libs munge devel -y就能把之前安装的munge以及slurm都全部删除干净。如果不干净,可以参考上面的网址余下的步骤。

4.新建munge账号
我是参考centos下安装munge_吃瓜三道杠的博客-CSDN博客_munge安装
这个不知道是否是必要的步骤。如果不手动新建账号,安装munge的时候,也是会自动设置munge账号的,但这可能导致各个节点的uids和gids不一致。
我第一次安装的时候,就没新建munge账号,似乎munge也能正常工作。但手动修改uids和gids,munge就不能正常工作了。搞了很久,都找不到解决的办法,直到把失败的安装全部删除,重新安装才行。
export MUNGEUSER=1007
groupadd -g $MUNGEUSER munge
useradd -m -c "MUNGE Uid 'N' Gid Emporium" -d /var/lib/munge -u $MUNGEUSER -g munge -s /sbin/nologin munge
其中1007就是uids和gids, 我让它们取一样的数值。这个数值是可以自己挑选的,挑选一个未使用的即可。
上面新建用户时,还有一些奇怪的内容。不清楚是否有必要的。但这样新建的munge账号可行。我是估计直接新建munge账号即可,即useradd -u (uid)  munge&&groupmod -g (gid) munge就可以。这样可以避免输入一些自己不知道含义的命令参数。但我未实测这是否可行,但推荐测试一下。
这个munge账号,所有节点都需要建立,包括控制节点与计算节点。

5.安装munge
5.1下载munge
wget https://github.com/dun/munge/rel ... munge-0.5.14.tar.xz
如果不成功,想办法把https://github.com/dun/munge/rel ... munge-0.5.14.tar.xz下载下来。也有可能有更新版本。目前这个版本可用。
5.2编译rpm包
rpmbuild -tb --without verify munge-0.5.14.tar.xz
这时会出现一些依赖包未安装好的提示。
使用命令yum search (依赖包名)查询
然后使用yum install (依赖包全名) -y进行安装。
如果找不到可以去baidu "依赖包名 centos 8 rpm",进行查找。

由于我设的安装源都能搜索到依赖包,用yum install命令安装即可。
5.3安装rpm包
cd ~/rpmbuild/RPMS/x86_64
rpm -ivh munge-0.5.14-1.el8.x86_64.rpm \
    munge-devel-0.5.14-1.el8.x86_64.rpm munge-libs-0.5.14-1.el8.x86_64.rpm

要注意安装包的名字可能会有改变。比如参考网页里的是e17。我的系统的rpm就是e18. 大家根据实际情况调整。
其他debug的包,不用安装
这些rpm包需要在所有控制节点和计算节点安装。
5.4创建munge密钥,并分发到各个计算节点。
在控制节点,使用命令sudo -u munge /usr/sbin/mungekey -v产生munge.key
key所在位置是/etc/munge/munge.key

在计算节点也运行这个sudo -u munge /usr/sbin/mungekey -v,但把产生的munge.key用控制节点的munge.key替代,以保持key的一致性。
保持key一致在munge的安装指南中进行了强调,是必要的。至于在计算节点也运行sudo -u munge /usr/sbin/mungekey -v,网上似乎就没有提到。
我尝试过不使用sudo -u munge /usr/sbin/mungekey -v,而是直接拷贝key文件到mungekey文件夹里,结果发现munge并不能正常启动。原因未明。

通过rpm安装,似乎是会自动设置权限和新建各种目录,并不必具体理会。在新建munge账号时,指定的其他参数选项,不清楚是否有必要,我猜测只需新建munge账号,并保持uid和gid一致即可,其他目录应该是会自动生成的。

6.启动munge服务
systemctl enable munge&&systemctl start  munge
可用systemctl status munge检查munge服务是否正常。

7.slurm的安装
7.1 新建slurm账号
在安装指南里,特别提到要新建一个slurm的账号,其uid和gid,在各个计算节点要保持一致。这应该是必要的。这不像munge的安装,munge的安装,似乎没有提出这个要求。
在各个节点运行
useradd -u (uid)  slurm&&groupmod -g (gid) slurm
即可。
实测不必自己新建任何目录。
7.2安装slurm
先搜索slurm,采用如下命令获取slurm包的全名:
yum search slurm
再用yum install安装,采用如下命令
yum install (slurm包全名) -y
可能会出现缺少依赖包的提示。把依赖包安装好后,再重新运行上面的命令。
使用yum search (依赖包),以及yum install (依赖包全名)的方法把依赖包都安装上。
如果出现yum search 搜索不到的情况。采用baidu或bing搜索(依赖包名) centos 8 rpm的方法搜索。下载好后(可使用wget (rpm的具体网址)进行下载),使用rpm -ivh安装。

在我的系统,要手动下载并安装这个文件libaec-1.0.2-3.el8.x86_64.rpm。可能是因为安装源设得不全,毕竟我只设了那个Base的repo。

8.slurm配置
vi /etc/slurm/slurm.conf 我只设置了最必要的部分。
ControlMachine=(控制节点名)
ControlAddr=(控制节点ip地址)
ReturnToService=2
NodeName=i5 CPUs=6 State=UNKNOWN
NodeName=n[1-2] CPUs=64 RealMemory=510000  TmpDisk=64000 State=UNKNOWN
NodeName=n[3-4] CPUs=64 RealMemory=240000 TmpDisk=64000 State=UNKNOWN
PartitionName=i5 Nodes=i5 Default=YES MaxTime=INFINITE State=UP
PartitionName=longtime Nodes=n[1-4] Default=YES MaxTime=INFINITE State=UP


注意RealMemory如果设得太大,节点会变得不可用。
可以使用scontrol show node命令来查看情况。
该命令显示的信息中可以看到可用内存数量。在它的基础下,继续减少一些内存,可能会比较稳定,节点不会出现draining的状态。

9.启动slurm
按slurm安装指南的推荐,数据库的功能可以在基本功能正常后再配置,因此只启动最必要的服务。
在控制节点运行:
slurmctld -c && slurmd -c
systemctl start slurmctld&&systemctl enable slurmctld
在计算节点运行
slurmd -c
systemctl start slurmd&&systemctl enable slurmd
不清楚这些命令是否都是必要的,是否功能有重复。反正都输进去,能正常工作。

10.提交作业,要在控制节点进行。
把下面内容放进一个run文件。
#!/bin/bash
#SBATCH --job-name=test
#SBATCH --output=test.out
#SBATCH --error=test.err
#SBATCH --partition=longtime
#SBATCH --nodes=1
ulimit -s unlimited
source /opt/intel/oneapi/setvars.sh --force
mpirun -n 64  ~/bin/vasp_std

然后使用sbatch run提交作业。
sinfo可以查看系统情况。
scontrol show node可以查看节点状态异常的原因。
squeue可查看排队情况。
scancel (job id)可以删除作业。
若遇到奇怪的问题导致节点不可用,可以把计算节点重启,然后再重启munge和slurm服务。

我也是参考其他网页。由于系统更新了,旧的内容已经不能全部成立了,无法直接使用。目前系统,可参考我这个,至少可以正常运行。

集群有4个计算节点。其中第三个计算节点,经常会出现not responding(多次重启,问题依旧,重启后,能正常工作,过一段时间(下一个作业)就不行)的情况,其他三个节点似乎总是工作正常。不响应的原因找到了。
原来是这个节点在计算的时候发生重启。由于slurm等并未设为开机自动运行,自然就会出现未响应了。
重启后,我重新运行slurm,它自然就再次在线的了。之前未能意识到这个事情。
计算节点重启,很可能是由于内存出问题,插不好,或需要清洁内存条。
这个通过查看ipmi, 可以发现内存出现错误,并且具体到是哪一条内存出错,也有显示。
使用命令
ipmitool sel elist
就能查看到内存错误。








作者
Author:
abin    时间: 2022-4-27 06:35
特别棒.

如果不想自己费时费力呢,
可以考虑如下的半自动方案.
https://gitee.com/hpc4you/hpc,  
hpc4you toolkit,
仅需复制粘贴屏幕提示信息即可, 10台机器, 大概30分钟搞定, 不用vi/nano之类的.

如果是单机, 亦有 hpc4you toolkit solo, 大概5分钟搞定.


作者
Author:
zblxyrz    时间: 2022-11-20 13:21
感谢楼主的分享,我参考楼主的方法建好了集群,但是在登录节点上提交计算任务后所产生的计算结果在计算节点上,请问怎么能回传到登录节点呢?
作者
Author:
乐平    时间: 2022-11-20 15:31
zblxyrz 发表于 2022-11-20 13:21
感谢楼主的分享,我参考楼主的方法建好了集群,但是在登录节点上提交计算任务后所产生的计算结果在计算节点 ...

按我的理解,并不是“回传”,而是建立集群的时候设置登录节点和计算节点公共的硬盘。
作者
Author:
zblxyrz    时间: 2022-11-20 17:07
乐平 发表于 2022-11-20 15:31
按我的理解,并不是“回传”,而是建立集群的时候设置登录节点和计算节点公共的硬盘。

谢谢,我又搞了NFS共享文件夹,这下可以




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3