赞
踩
最近需要做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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。