最近需要做slurm相关的东西,于是在自己本机上安装了slurm。因为slurm最近刚更新了最新版19.05,所以之前所有的安装博客都失效了。完成安装之后,写下这个博客,供参考。
部分命令参考https://www.slothparadise.com/how-to-install-slurm-on-centos-7-cluster/,不太一样。
在本篇博客中共有两个节点,控制节点名为blog1,ip 192.168.109.137,计算节点名blog2, ip 192.168.109.136,数据存储节点blog3,即mysql所在节点,ip 192.168.109.135。读者可自行修改节点名和节点数量。
安装slurm需要安装Munge。Slurm和Munge需要跨集群中的每个节点一致的UID和GID。对于所有节点(控制节点和计算节点),在安装Slurm或Munge之前创建用户:
export MUNGEUSER=991
groupadd -g $MUNGEUSER munge
useradd -m -c "MUNGE Uid 'N' Gid Emporium" -d /var/lib/munge -u $MUNGEUSER -g munge -s /sbin/nologin munge
export SLURMUSER=992
groupadd -g $SLURMUSER slurm
useradd -m -c "SLURM workload manager" -d /var/lib/slurm -u $SLURMUSER -g slurm -s /bin/bash slurm
安装EPEL源
yum install epel-release
然后使用EPEL安装Munge
yum install munge munge-libs munge-devel -y
在安装Munge之后,需要把Munge的key从控制节点配置到所有的计算节点。在计算节点上blog1创建Munge的key,只需要在控制节点上创建Munge的key。首先安装rng-tools
yum install rng-tools -y
rngd -r /dev/urandom
然后
/usr/sbin/create-munge-key -r
dd if=/dev/urandom bs=1 count=1024 > /etc/munge/munge.key
chown munge: /etc/munge/munge.key
chmod 400 /etc/munge/munge.key
创建完成之后,将控制节点的key发送到所有的计算节点中
scp /etc/munge/munge.key root@blog2:/etc/munge/
此时,所有的节点上都已经有了key,启动Munge并且配置munge权限
chown -R munge: /etc/munge/ /var/log/munge/
chmod 0700 /etc/munge/ /var/log/munge/
systemctl enable munge
systemctl start munge
如果启动失败,要检测是否munge的key创建失败。
然后对Munge进行测试,每个计算节点与控制节点blog1进行连接。
munge -n
munge -n | unmunge
munge -n | ssh blog1 unmunge
remunge
在所有的节点上安装slurm依赖,slurm在创建安装包时需要 perl-ExtUtils-MakeMaker和 gcc
yum install openssl openssl-devel pam-devel numactl numactl-devel hwloc hwloc-devel lua lua-devel readline-devel rrdtool-devel ncurses-devel man2html libibmad libibumad -y
yum install perl-ExtUtils-MakeMaker
yum install gcc
然后去slurm官网下载最新版本(19.05)的源码,我们使用源码进行安装。
yum install wget
wget https://download.schedmd.com/slurm/slurm-19.05.2.tar.bz2
如果没有安装rpm,
yum install rpm-build
现在,我们使用rpm创建slurm的安装包(只需在控制节点上创建安装包,其他节点可以通过scp -r 命令将安装包所在目录传输过去)
rpmbuild -ta slurm-19.05.2.tar.bz2
安装包创建完成后在/root/rpmbuild/RPMS/x86_64下,可以在所有节点上进行安装。
cd /root/rpmbuild/RPMS/x86_64
yum localinstall slurm-*.rpm
安装完成后,要配置slurm的配置文件,可以访问http://slurm.schedmd.com/configurator.easy.html。
我修改了下面的配置,其他都是默认配置。点击提交后,网页会出现自定义的配置文件,复制粘贴到slurm.conf文件里面。
ControlMachine: blog1
NodeName: blog2
StateSaveLocation: /var/spool/slurmctld
SlurmctldLogFile: /var/log/slurmctld.log
SlurmdLogFile: /var/log/slurmd.log
在/etc/slurm文件夹下面,有几个slurm的配置文件模板xxx.conf.example
对于控制节点必要的是slurm.conf,对于计算节点,必要的是slurm.conf, cgroup.conf
所以在控制节点上,
cd /etc/slurm
cp slurm.conf.example slurm.conf
vi slurm.conf
参考的slurm.conf文件,https://blog.csdn.net/qq_34149581/article/details/104868057
参考的slurmdbd.conf文件,https://blog.csdn.net/qq_34149581/article/details/104868194
配置完成后,将slurm.conf发送到所有的节点。
scp slurm.conf root@blog2:/etc/slurm
现在,在控制节点blog1上,配置日志文件和其他文件
mkdir /var/spool/slurmctld
chown slurm: /var/spool/slurmctld
chmod 755 /var/spool/slurmctld
touch /var/log/slurmctld.log
chown slurm: /var/log/slurmctld.log
touch /var/log/slurm_jobacct.log /var/log/slurm_jobcomp.log
chown slurm: /var/log/slurm_jobacct.log /var/log/slurm_jobcomp.log
在slurmdbd配置节点blog2上,配置slurmdbd的日志文件
touch /var/log/slurmdbd.log
chown slurm: /var/log/slurmdbd.log
在所有的计算节点上blog2,配置日志文件
mkdir /var/spool/slurmd
chown slurm: /var/spool/slurmd
chmod 755 /var/spool/slurmd
touch /var/log/slurmd.log
chown slurm: /var/log/slurmd.log
同时,在计算节点上关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
此时已经完成slurm的安装,可以使用下面的命令查看当前节点的配置信息。
slurmd -C
在数据库控制节点blog2,的控制台中使用slurmdbd -vvvvDDDD,进行调试启动,查看是否启动过程中有无错误。无错误后启动slurmdbd
slurmdbd -vvvvDDDD
systemctl start slurmdbd
在控制节点blog1,使用slurmctld -vvvvDDDD,进行调试启动,查看启动过程中有无错误。无错误后启动
systemctl enable slurmctld.service
systemctl start slurmctld.service
systemctl status slurmctld.service
显示active(running)表示slurm controller 进程启动成功
直接启动是不能启动成功的,因为cgroup.conf没有配置, 在计算节点blog2上
参考的cgroup.conf,
https://blog.csdn.net/qq_34149581/article/details/104868476
cd /etc/slurm
cp cgroup.conf.example cgroup.conf
systemctl enable slurmd.service
systemctl start slurmd.service
systemctl status slurmd.service
此时slurm已经安装成功了。
在启动过程中有任何错误都可以查看日志文件
在Compute node bugs: tail /var/log/slurmd.log
在Server node bugs: tail /var/log/slurmctld.log
在slurmdbd上, tail /var/log/slurmdbd.log
error: We should have gotten a new id: Table 'slurm_acct_db.cluster_job_table' doesn't exist
我在slurm.conf中配置的ClusterName=cluster,所以我的解决方法是:
sacctmgr --immediate add cluster name=cluster
在slurmdbd节点上,systemctl restart slurmdbd
在slurmctld节点上,systemctl restart slurmctld
然后sacctmgr show cluster
然后sacctmgr add account none,test Cluster=cluster Description="none" Organization="none"
然后输入y,确认修改
最后输入,sacctmgr show cluster