在ubuntu环境下搭建slurm

基于ubuntu的slurm集群搭建

  • 前言
  • 一、关闭防火墙以及SELinux
  • 二、修改主机名/etc/hosts, /etc/hostname
  • 三、配置SSH 免密、NTP、NFS
    • 1.SSH免密
    • 2.NTP安装(不安装似乎也没影响)
    • 3.NFS安装
  • 四、安装munge
  • 五、slurm安装
  • 六、**设置slurm.conf文件( 重中之重 )**
  • 总结
  • 参考链接


前言

Slurm(Simple Linux Utility for Resource Management, http://slurm.schedmd.com/ )是开源的、具有容错性和高度可扩展的Linux集群超级计算系统资源管理和作业调度系统,所以今天我们来从零开始搭建slurm集群。


一、关闭防火墙以及SELinux

SELinux
临时关闭SELinux   setenforce 0
临时打开SELinux   setenforce 1
查看SELinux的状态  getenforce
永久关闭SELinux(重启后生效)编辑/etc/selinux/config 文件,将SELinux的默认值enforcing 改为 disabled,下次开机就不会再启动

临时关闭防火墙    systemctl stop firewalld
临时打开防火墙    systemctl start firewalld
永久关闭防火墙开机自关闭    systemctl disable firewalld
防火墙开机自启动    systemctl enable firewalld
重启防火墙(disable、enable 修改后重启防火墙生效,或重启linux)    systemctl restart firewalld
查看防火墙的状态    systemctl status firewalld


二、修改主机名/etc/hosts, /etc/hostname

将本机名改成相对应的节点名称,并且在master节点把需要搭建的集群ip放进来
在ubuntu环境下搭建slurm_第1张图片


三、配置SSH 免密、NTP、NFS

1.SSH免密

为每台机器生产自己公私钥(一路回车就行) ssh-keygen -t rsa

cd ~/.ssh 将密钥复制到相应服务器文件中 ssh-copy-id -i id_rsa.pub [email protected] (如果还要输入密码需要设置vim /etc/ssh/sshd_config(重点修改该文件夹归属目录权限) 并重启systemctl restart sshd.service)

vim ~/.ssh/config
 增加以下配置
 Host master
 HostName 10.0.0.225
 User master
 IdentitiesOnly yes
 可以通过ssh master直接访问

2.NTP安装(不安装似乎也没影响)

master:sudo apt install ntp

其他节点:sudo apt install ntpdate
然后在/etc/ntp.conf 添加server 10.0.0.225 prefer,然后关闭ntp服务后nptdate 10.0.0.225

3.NFS安装

sudo apt install nfs-kernel-server
安装好后记得开启服务:
sudo systemctl start nfs-kernel-server
设置开机自动启动nfs:
sudo systemctl enable nfs-kernel-server
挂载服务:
sudo mount -t nfs 10.0.0.225:/nfs_share /nfs_share -o nolock

进入sudo vim /etc/fstab 添加开机自动挂载

10.0.0.225:/nfs_share /nfs_share nfs defaults 0 0

apt-get 无法安装时把需要的库依次安装好即可


四、安装munge

sudo apt install munge

将master的/etc/munge/munge.key复制到各节点中相同路径,注意其中的权限问题,所有节点复制完成后开启服务

sudo systemctl start munge
查看是否连通
munge -n | unmunge
munge -n | ssh node0 unmunge


五、slurm安装

sudo apt install slurm-wlm
sudo chown -R slurm:slurm /var/spool/


六、设置slurm.conf文件( 重中之重 )

一般在/etc/slurm-llnl/中,编辑slurm.conf文件,如果在slurm20.02版本以上支持无配置模式,就不需要将各个master的conf文件复制到节点上。

否则每次更改conf文件都需要将更改的内容在其他节点上面同步之后重启服务。

slurm.conf
ControlMachine=master #
ControlAddr=10.0.0.225
AuthType=auth/munge

SlurmctldParameters=enable_configless   #如果不是无配置模式则注销此行
MpiDefault=none
ProctrackType=proctrack/linuxproc
ReturnToService=1
SlurmUser=root                      #slurm
SwitchType=switch/none
SchedulerType=sched/builtin
#SelectType=select/linear
SelectType=select/cons_tres
SelectTypeParameters= CR_CPU     #基于CPU调度
#SelectTypeParameters=CR_Core,CR_CORE_DEFAULT_DIST_BLOCK      #基于Core和内存调度
TaskPlugin=task/affinity        #够将一个或多个进程绑定到一个或多个处理器上运行
ClusterName=slurmcls #
SlurmctldLogFile=/var/log/slurm-llnl/slurmctld.log
SlurmdLogFile=/var/log/slurm-llnl/slurmd.log
SlurmctldPort=6817    #slurmctld服务端口
SlurmdPort=6818        #slurmd服务的端口
MailProg=/var/spool/mail

#节点信息,通过lscpu查看对应的参数填入
NodeName=master NodeAddr=10.0.0.225 CPUs=32 RealMemory=120000 State=IDLE Sockets=2 CoresPerSocket=8  ThreadsPerCore=2 
NodeName=node0 NodeAddr=10.0.0.221 CPUs=32 RealMemory=120000 State=IDLE Sockets=2 CoresPerSocket=8 ThreadsPerCore=2
NodeName=node1 NodeAddr=10.0.0.65 CPUs=32 RealMemory=250000 State=IDLE Sockets=2 CoresPerSocket=8 ThreadsPerCore=2 

NodeName=hnode0 NodeAddr=10.0.0.35 CPUs=128 RealMemory=2000000 State=IDLE #Sockets=2 CoresPerSocket=32 ThreadsPerCore=2
NodeName=hnode1 NodeAddr=10.0.0.37 CPUs=128 RealMemory=1000000 State=IDLE #Sockets=2 CoresPerSocket=32 ThreadsPerCore=2 

#队列信息
PartitionName=control Nodes=master Default=NO MaxTime=INFINITE State=UP
PartitionName=all Nodes=master,node[0-1],hnode[0-1] Default=YES MaxTime=INFINITE State=UP
PartitionName=cp Nodes=master,node[0-1] Default=NO MaxTime=INFINITE State=UP
PartitionName=hcp Nodes=hnode[0-1] Default=NO MaxTime=INFINITE State=UP


总结

以上步骤全部没有问题的话,最后我们就可以启动集群啦
首先,在master节点需要重启控制和计算服务
sudo systemctl restart slurmctl.service && sudo systemctl restart slurmd.service
计算节点只需要重启计算服务
sudo systemctl restart slurmd.service

然后,通过systemctl status slurmctld.service 和 systemctl status slurmd.service服务状态
在ubuntu环境下搭建slurm_第2张图片
在ubuntu环境下搭建slurm_第3张图片

最后,通过sinfo查看集群的状态(由于当时在跑任务,所以有节点state显示alloc,没有跑任务的时候均显示idle)
在这里插入图片描述

如果对于搭建过程中还有不懂的地方,可以在下方评论区留言,大家一起相互学习,共同进步。

参考链接

https://slurm.schedmd.com/documentation.html

你可能感兴趣的:(slurm,ubuntu,linux,服务器)