在之前的文章中也介绍过Slurm的部署问题《精通集群作业调度系统Slurm》,今天参考华为云手册一步步来学习如何部署HPC的调度系统。
假设我们在基于Centos的系统上部署安装
CentOS | 7.6 | https://www.centos.org/download/ |
集群信息如下:
节点名 | IP | 作用 |
---|---|---|
master | 192.168.40.11 | 管理节点,运行slurmctld |
testnode1 | 192.168.40.111 | 计算节点,运行slurmd |
testnode2 | 192.168.40.112 | 计算节点,运行slurmd |
1)软件下载
Slurm | 18.08.7 | https://www.schedmd.com/downloads.php |
munge | 0.5.13 | https://github.com/dun/munge/releases/tag/munge-0.5.13 |
安装依赖库
yum install -y rpm-build rpmdevtools bzip2-devel openssl-devel zlib-devel readline-devel pam-devel perl-DBI perl-ExtUtils-MakeMakermariadb*
2)编译软件
- 编译Munge
- 执行以下命令构建munge的rpm包。cd /path/to/MUNGE
- rpmbuild -tb –clean munge-0.5.13.tar.xz
- 执行以下命令检查是否成功生成rpm包。ls /root/rpmbuild/RPMS/aarch64/ | grep munge
- 在“/path/to/MUNGE”目录下创建一个“mungerpm”目录,并将“/root/rpmbuild/RPMS/aarch64/”目录下munge的rpm包拷贝到“/path/to/MUNGE/mungerpm”目录。mkdir -p /path/to/MUNGE/mungerpm
- cp /root/rpmbuild/RPMS/aarch64/munge* /path/to/MUNGE/mungerpm –f
- 编译Slurm
- 执行以下命令进入Munge目录。cd /home/mungerpm
- 执行以下命令安装Munge。yum install -y munge-*
- 执行以下命令进入Slurm目录。cd /path/to/SLURM
- 执行以下命令构建Slurm的rpm包。rpmbuild -ta –clean slurm-18.08.7.tar.bz2
- 执行以下命令检查是否成功生成rpm包。ls /root/rpmbuild/RPMS/aarch64/ | grep slurm
- 在“/path/to/SLURM”目录下创建一个“slurmrpm”目录,并将“/root/rpmbuild/RPMS/aarch64/”目录下slurm的rpm包拷贝到“/path/to/SLURM/slurmrpm”目录。mkdir -p /path/to/SLURM/slurmrpm
- cp /root/rpmbuild/RPMS/aarch64/slurm* /path/to/SLURM/slurmrpm -f
3)安装软件
- 安装Munge
- 执行以下命令在testnode1和testnode2节点上挂载master节点的“/home”目录。mount master:/home /home
- 执行以下命令在testnode1和testnode2节点上安装munge相关包。
cd /home/mungerpm
yum install -y munge* - 执行以下命令修改master、testnode1和testnode2节点相应munge目录的权限。
chmod -Rf 700 /etc/munge
chmod -Rf 711 /var/lib/munge
chmod -Rf 700 /var/log/munge
chmod -Rf 0755 /var/run/munge - 执行以下命令在master节点启动ntpd服务。
yum install -y ntp
systemctl start ntpd - 执行以下命令在testnode1和tesnode2节点上,将系统时间同步到master节点。
ntpdate master - 在master节点上,将master节点的“/etc/munge/munge.key”拷贝到testnode1和testnode2节点。
scp /etc/munge/munge.key testnode1:/etc/munge/
scp /etc/munge/munge.key testnode2:/etc/munge/ - 在testnode1和testnode2节点上,更改“/etc/munge/munge.key”文件的权限。
chown munge.munge /etc/munge/munge.key - 在master、testnode1和testnode2节点上启动munge。
systemctl start munge
systemctl enable munge
- 安装Slurm
- 执行以下命令在master、testnode1和testnode2节点上安装slurm相关包。cd /home/slurmrpmyum install -y slurm*
- 检查所有节点系统中是否已经创建slurm用户。
- 如果已经创建,则执行以下命令进行查看:grep “slurm” /etc/group
- 如果没有创建,则执行以下命令在master、testnode1和testnode2节点上创建slurm用户。groupadd -g 202 slurmuseradd -u 202 -g 202 slurm
- 执行以下命令在master、testnode1和testnode2节点下创建“/var/spool/slurm/ssl”目录、“/var/spool/slurm/d”目录和“/var/log/slurm”目录。
mkdir -p /var/spool/slurm/ssl
mkdir -p /var/spool/slurm/d
mkdir -p /var/log/slurm - 执行以下命令在master、testnode1和testnode2节点上设置相应目录权限。chown -R slurm.slurm /var/spool/slurm
- 执行以下命令修改matser节点上的“/etc/slurm/slurm.conf”文件。
- vi /etc/slurm/slurm.conf
- 按“i”进入编辑模式,添加如下内容。
ControlMachine=master
ControlAddr=192.168.40.11
MpiDefault=none
ProctrackType=proctrack/pgid
ReturnToService=1
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmdPidFile=/var/run/slurmd.pid
SlurmdSpoolDir=/var/spool/slurm/d
SlurmUser=slurm #SlurmdUser=root
StateSaveLocation=/var/spool/slurm/ssl
SwitchType=switch/none
TaskPlugin=task/none
FastSchedule=1
SchedulerType=sched/backfill
SelectType=select/linear
AccountingStorageType=accounting_storage/none
ClusterName=cluster
JobAcctGatherType=jobacct_gather/none
SlurmctldDebug=3
SlurmctldLogFile=/var/log/slurm/slurmctld.log
SlurmdDebug=3
SlurmdLogFile=/var/log/slurm/slurmd.log
NodeName=testnode1 CPUs=96 Sockets=4 CoresPerSocket=24 State=UNKNOWN
NodeName=testnode2 CPUs=40 Sockets=4 CoresPerSocket=10 State=UNKNOWN
PartitionName=ARM Nodes=testnode1 Default=YES MaxTime=INFINITE State=UP
PartitionName=X86 Nodes=testnode1 Default=YES MaxTime=INFINITE State=UP - 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 执行以下命令在master节点上,将master节点的“/etc/slurm/slurm.conf”拷贝到testnode1和testnode2节点。
scp /etc/slurm/slurm.conf testnode1:/etc/slurm
scp /etc/slurm/slurm.conf testnode2:/etc/slurm - 执行以下命令在master节点启动“slurmctld”服务。
systemctl start slurmctld
systemctl enable slurmctld - 执行以下命令在testnode1和testnode2节点启动“slurmd”服务。
systemctl start slurmd
systemctl enable slurmd
以上操作完成后,集群就算部署好了。
命令 | 说明 |
---|---|
sinfo | 查看节点与分区状态 |
squeue | 查看任务队列状态 |
scontrol show nodes | 详细显示节点信息 |
scontrol show jobs | 详细显示任务信息 |
srun | 执行作业 |
salloc | 分配资源 |
sbatch | 提交批处理作业 |
scancel | 取消作业 |
节点状态说明:
参数 | 含义 |
---|---|
unk | 未知 |
idle | 空闲 |
alloc | 已分配 |
down | 故障 |
参考资料:
1.https://support.huaweicloud.com/instg-kunpenghpcs/kunpengslurm_03_0011.html