slurm配置安装
基础配置
控制节点
配置静态IP地址
修改文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static"
ONBOOT=yes
IPADDR=192.168.100.11 #静态地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.100.1 #网关地址
DNS1=8.8.8.8 #dns地址
重新打开网卡
systemctl restart network
SSH连接不上或者卡顿
修改文件
vi /etc/ssh/sshd_config
UsePAM yes #需要打开
PasswordAuthentication yes #需要打开
ChallengeResponseAuthentication yes #需要打开
重新打开sshd服务
systemctl restart sshd
修改主机名
第一种方法:
修改主机名文件
vi /etc/sysconfig/network
添加下面内容
NETWORKING=yes
NAME=centos11 #主机名
临时修改主机名,两者结合可以不关机永久修改
hostname centos11
第二种方法
hostnamectl set-hostname centos11
修改主机hosts文件
vi /etc/hosts
添加下面内容
192.168.100.11 centos11
192.168.100.12 centos02
关闭防火墙,禁用selinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/=enforcing/=disable/' /etc/selinux/config
setenforce 0
getenforce
“Permissive” #最后显示
制作本地源
下载地址
http://mirrors.cqu.edu.cn/CentOS/7.9.2009/isos/x86_64/CentOS-7-x86_64-Everything-2009.iso
创建ios存放目录及挂载目录
mkdir -p /date/centos
mkdir -p /mnt/centos
将iso镜像文件使用xftp上传至/data/centos路径
将/data/centos下的iso文件挂载到/mnt/centos目录下
mount -o loop /date/centos/CentOS-7-x86_64-Everything-2009.iso /mnt/centos/
#-o指定选项,loop用来把一个文件当成硬盘分区mount到目录
把/etc/yum.repos.d/里的除了要编辑的repo文件以外,后缀改掉或者删除
修改文件
vi /etc/yum.repos.d/CentOS-Media.repo
#CentOS-Media 这个是使用光盘挂载后调用的文件
#CentOS-Base 这个是联网后基础的源,一般都用这个
#CentOS-Vault 这个是最近新版本的加入的老版本的yum源配置
#CentOS-Debuginfo debug包尤其和内核相关的更新和软件安装
修改下面内容
name=CentOS-$releasever - Media
baseurl=file:///mnt/centos
gpgcheck=1
enabled=1
gpgkey=file:///mnt/centos/RPM-GPG-KEY-CentOS-7
#其中RPM-GPG-KEY-CentOS-7可以在/mnt/centos/下找到复制粘贴到这里就可以了。
清除yum缓存
yum clean all
yum makecache
可以关闭网络后尝试安装httpd
yum install httpd
查看文件类型
lsblk -f
配置自动挂载
echo '/date/centos/CentOS-7-x86_64-Everything-2009.iso /mnt/centos/ iso9660 loop 0 0' >> /etc/fstab
配置fstab导致开不了机并且不能修改fstab内容,输入下面内容再进行修改
mount -o remount,rw /
重启后查看挂载信息
df -h
计算节点
配置静态IP地址
修改文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static"
ONBOOT=yes
IPADDR=192.168.100.11 #静态地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.100.1 #网关地址
DNS1=8.8.8.8 #dns地址
重新打开网卡
systemctl restart network
修改主机名
第一种方法:
修改主机名文件
vi /etc/sysconfig/network
添加下面内容
NETWORKING=yes
NAME=centos11 #主机名
临时修改主机名,两者结合可以不关机永久修改
hostname centos11
第二种方法
hostnamectl set-hostname centos11
修改主机hosts文件
vi /etc/hosts
添加下面内容
192.168.100.11 centos11
192.168.100.12 centos02
关闭防火墙,禁用selinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/=enforcing/=disable/' /etc/selinux/config
setenforce 0
getenforce
“Permissive” #最后显示
制作本地源
下载地址
http://mirrors.cqu.edu.cn/CentOS/7.9.2009/isos/x86_64/CentOS-7-x86_64-Everything-2009.iso
创建ios存放目录及挂载目录
mkdir -p /date/centos
mkdir -p /mnt/centos
在控制节点将iso镜像文件使用scp传至/data/centos路径
scp /date/centos/CentOS-7-x86_64-Everything-2009.iso 192.168.100.12:/date/centos/
将/data/centos下的iso文件挂载到/mnt/centos目录下
mount -o loop /date/centos/CentOS-7-x86_64-Everything-2009.iso /mnt/centos/
#-o指定选项,loop用来把一个文件当成硬盘分区mount到目录
把/etc/yum.repos.d/里的除了要编辑的repo文件以外,后缀改掉或者删除
修改/etc/yum.repos.d/CentOS-Media.repo文件
vi /etc/yum.repos.d/CentOS-Media.repo
#CentOS-Media 这个是使用光盘挂载后调用的文件
CentOS-Base 这个是联网后基础的源,一般都用这个
CentOS-Vault 这个是最近新版本的加入的老版本的yum源配置
CentOS-Debuginfo debug包尤其和内核相关的更新和软件安装
修改下面内容
name=CentOS-$releasever - Media
baseurl=file:///mnt/centos
gpgcheck=1
enabled=1
gpgkey=file:///mnt/centos/RPM-GPG-KEY-CentOS-7
#其中RPM-GPG-KEY-CentOS-7可以在/mnt/centos/下找到复制粘贴到这里就可以了。
清除yum缓存
yum clean all
yum makecache
可以关闭网络后尝试安装httpd
yum install httpd
查看文件类型
lsblk -f
配置自动挂载
echo '/date/centos/CentOS-7-x86_64-Everything-2009.iso /mnt/centos/ iso9660 loop 0 0' >> /etc/fstab
配置fstab导致开不了机并且不能修改fstab内容,输入下面内容再进行修改
mount -o remount,rw /
重启后查看挂载信息
df -h
SSH免密登录配置
控制节点
设置秘钥
ssh-keygen -t rsa
进入秘钥位置
cd /root/.ssh
将秘钥添加到钥匙库
cat id_rsa.pub >> authorized_keys
通过scp将秘钥传到计算节点
scp id_rsa.pub 192.168.100.12:/opt
计算节点
设置秘钥
ssh-keygen -t rsa
进入秘钥位置
cd /root/.ssh
将控制节点秘钥添加到计算节点钥匙库
cat /opt/id_rsa.pub >>authorized_keys
将秘钥添加到钥匙库
cat id_rsa.pub >> authorized_keys
通过scp将秘钥传到控制节点
scp id_rsa.pub 192.168.100.11:/opt
测试
ssh centos11
控制节点
将计算节点秘钥传到控制节点钥匙库
cat /opt/id_rsa.pub >> /root/.ssh/authorized_keys
测试
ssh centos12
NTP时间服务安装配置
- NTP 只考虑 UTC 时间,不考虑时区,不考虑夏令时等。
- NTP使用UDP,端口123
控制节点
安装NTP服务软件
yum install ntp ntpdate -y
修改时区为上海
timedatectl set-timezone Asia/Shanghai
修改/etc/ntp.conf配置文件
在未修改ntp.conf配置文件可用
sed -i s/^ser/#ser/ /etc/ntp.conf
sed -i '/#server 0/i fudge 127.127.1.0' /etc/ntp.conf
sed -i '/fudge/i server 127.127.1.0' /etc/ntp.conf
若已经修改按照下面内容参考
查看去除“#” 并带行号的/etc/ntp.conf文件
cat /etc/ntp.conf |grep -vn "#"
# vim /etc/ntp.conf
注释掉如下行
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
添加如下行
restrict 192.168.100.0 mask 255.255.255.0 nomodify notrap
service 192.168.100.11
server 127.127.1.0 iburst
fudge 127.127.1.0 stratum 10
添加防火墙端口
firewall-cmd --permanent --add-port=123/udp
启动NTP服务成功后设置NTP服务自启动
systemctl start ntpd && systemctl enable ntpd
关闭chronyd服务
systemctl disable chronyd.service
从当前系统时间设置硬件时钟
hwclock -w
验证配置
ntpq -p
计算节点
安装NTP服务软件
yum install ntp ntpdate -y
修改时区为上海
timedatectl set-timezone Asia/Shanghai
与centos时间一致
ntpdate centos11
从当前系统时间设置硬件时钟
hwclock -w
修改/etc/ntp.conf配置文件
在未修改ntp.conf配置文件可用
sed -i s/^ser/#ser/ /etc/ntp.conf
sed -i '/#server 0/iserver centos11' /etc/ntp.conf
若已经修改按照下面内容参考
注释掉如下行
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
#配置上游时间服务器为本地的ntpd Server服务器
server 192.168.100.11
#配置允许上游时间服务器主动修改本机的时间
restrict 192.168.100.11 nomodify notrap noquery
关闭chronyd服务
systemctl disable chronyd.service
启动NTP服务成功后设置NTP服务自启动
systemctl start ntpd && systemctl enable ntpd
验证
ntpq -p
NFS共享储存服务和NIS账号共享服务配置
控制节点
安装软件
yum -y install authconfig\* sssd\* krb5\* autofs ypbind nfs-utils ypserv rpcbind yp-tools
设置 NIS 域名
nisdomainname centos11
echo "nisdomainname centos11" >> /etc/rc.d/rc.local
chmod +x /etc/rc.local
echo "NISDOMAIN=centos11" >> /etc/sysconfig/network
修改ypserv.conf配置文件
vi /etc/ypserv.conf
添加下面内容
dns:no
127.0.0.1/255.255.255.0 :* :* :none
192.168.100.0/255.255.255.0 :* :* :none
* :* :* :deny
开启 ypserv、ypxfrd、yppasswdd、rpcbind服务
systemctl start ypserv
systemctl start ypxfrd
systemctl start yppasswdd
systemctl start rpcbind
systemctl enable ypserv
systemctl enable ypxfrd
systemctl enable yppasswdd
systemctl enable rpcbind
初始化数据库
/usr/lib64/yp/ypinit -m
#按Ctrl + D,再按y确认
更新数据库(每次更新账户信息后都需要更新数据库)
make -C /var/yp
创建nis用户目录
mkdir -p /home/nisusers
chmod 775 -R /home/nisusers
修改exports文件
vi /etc/exports
添加下面内容把home共享出来
/home 192.168.100.0/24(rw,sync)
启动服务并验证
systemctl start nfs.service
systemctl enable nfs.service
exportfs -rv
创建两个测试用户
useradd -u 1001 -m -d /home/nisusers/user1 user1
passwd user1
useradd -u 1002 -m -d /home/nisusers/user2 user2
passwd user2
make -C /var/yp
计算节点
安装软件
yum install -y ypserv rpcbind yp-tools
设置 NIS 域名
nisdomainname centos11
echo "nisdomainname centos11" >> /etc/rc.d/rc.local
chmod +x /etc/rc.local
echo "NISDOMAIN=centos11" >> /etc/sysconfig/network
用图形化界面配置NIS
authconfig-tui
开启服务
systemctl start rpcbind
systemctl start ypbind
systemctl enable ypbind
安装软件
yum -y install authconfig\* sssd\* krb5\* autofs ypbind nfs-utils ypserv rpcbind yp-tools
创建每个节点准备挂载NFS的目录
mkdir -p /home/nisusers
chmod 775 -R /home/nisusers
编辑autofs配置文件
echo "/home /etc/auto.nis" >/etc/auto.master
编辑auto配置文件
cp /etc/auto.misc /etc/auto.nis
vi /etc/auto.nis
#user1 192.168.100.11:/home/nisusers/user1
* 192.168.100.11:/home/&
重启autofs服务
systemctl restart autofs
测试
输入yptest测试,如果能看到master上的用户则表明client的nis设置成功
yptest
su -l user1
exit
su -l user2
exit
ypwhich -x
显示下面内容
Use "ethers" for map "ethers.byname"
Use "aliases" for map "mail.aliases"
Use "services" for map "services.byname"
Use "protocols" for map "protocols.bynumber"
Use "s" for map "s.byname"
Use "networks" for map "networks.byaddr"
Use "group" for map "group.byname"
Use "passwd" for map "passwd.byname"
ypwhich
显示结果为主服务名字
MUNGE安装配置
控制节点
创建munge和Slurm全局用户
export MUNGEUSER=1190
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=1191
groupadd -g $SlurmUSER slurm
useradd -m -c "Slurm workload manager" -d /var/lib/slurm -u $SlurmUSER -g slurm -s /bin/bash slurm
make -C /var/yp
安装MUNGE
所用到的munge安装包:munge-0.5.11-3.el7.x86_64.rpm munge-libs-0.5.11-3.el7.x86_64.rpm munge-devel-0.5.11-3.el7.x86_64.rpm 可到阿里开源镜像站找到
https://developer.aliyun.com/packageSearch spm=a2c6h.12908639.J_1365437.1.1f326886cnPWff
安装munge的rpm
rpm -ivh munge-*
rngd使用方法:如果你的硬件支持/dev/hwrng硬件真随机数,那么直接运行就可以自动默认设置为后台daemon程序,会增加系统的熵值,在很多例如加密的应用中非常有用。
yum install rng-tools -y
为系统新增熵池
rngd -r /dev/urandom
计算节点
安装MUNGE
所用到的munge安装包:munge-0.5.11-3.el7.x86_64.rpm munge-libs-0.5.11-3.el7.x86_64.rpm munge-devel-0.5.11-3.el7.x86_64.rpm 可到阿里开源镜像站找到
https://developer.aliyun.com/packageSearch spm=a2c6h.12908639.J_1365437.1.1f326886cnPWff
安装munge的rpm
rpm -ivh munge-*
rngd使用方法:如果你的硬件支持/dev/hwrng硬件真随机数,那么直接运行就可以自动默认设置为后台daemon程序,会增加系统的熵值,在很多例如加密的应用中非常有用。
yum install rng-tools -y
为系统新增熵池
rngd -r /dev/urandom
控制节点
配置MUNGE
创建全局密钥 在控制节点进行设置,创建一个在每个结点全局使用的密钥
/usr/sbin/create-munge-key -r
执行完以后,在/etc/munge/下面会生成munge.key,需修改munge.key的权限以及所属用户,把所属用户改成munge。
在Master Node创建全局使用的密钥
dd if=/dev/urandom bs=1 count=1024 > /etc/munge/munge.key
munge文件权限赋予munge用户
chown munge: /etc/munge/munge.key
赋予munge文件权限
chmod 400 /etc/munge/munge.key
通过scp把munge秘钥传给节点
scp /etc/munge/munge.key centos12:/etc/munge/
munge文件权限赋予munge用户,赋予munge文件权限,开启munge服务
chown -R munge: /etc/munge/ /var/log/munge/
chmod 0700 /etc/munge/ /var/log/munge/
systemctl enable munge
systemctl start munge
计算节点
munge文件权限赋予munge用户,赋予munge文件权限,开启munge服务
chown -R munge: /etc/munge/ /var/log/munge/
chmod 0700 /etc/munge/ /var/log/munge/
systemctl enable munge
systemctl start munge
测试
munge -n
munge -n |unmunge
munge -n |ssh centos11 unmunge
slurm安装配置
控制节点
安装所需软件包
yum install openssl openssl-devel pam-devel numactl numactl-devel hwloc hwlocdevel lua lua-devel readline-devel rrdtool-devel ncurses-devel man2html libibmad libibumad rpm-build cpanm* -y
下载 perl-Switch-2.16-7.el7.noarch.rpm 可在阿里找到
安装软件
rpm -ivh perl-Switch-2.16-7.el7.noarch.rpm
计算节点
安装所需软件包
yum install openssl openssl-devel pam-devel numactl numactl-devel hwloc hwlocdevel lua lua-devel readline-devel rrdtool-devel ncurses-devel man2html libibmad libibumad rpm-build cpanm* -y
下载 perl-Switch-2.16-7.el7.noarch.rpm 可在阿里找到
安装软件
rpm -ivh perl-Switch-2.16-7.el7.noarch.rpm
控制节点
安装所需要的软件包
yum install openssl openssl-devel pam-devel numactl numactl-devel hwloc hwlocdevel lua lua-devel readline-devel rrdtool-devel ncurses-devel man2html libibmad libibumad rpm-build cpanm* python3 gcc bzip2 gcc-c++ -y python3 readline-devel pam-devel json-c json-c-devel http-parser http-parser-devel perl-Switch rpm-build rpmdevtools bzip2-devel openssl-devel zlib-devel readline-devel pam-devel perl-DBI perl-ExtUtils-MakeMaker mariadb*
安装slurm,安装包均在阿里云或者这个网址https://download.schedmd.com/slurm/slurm-22.05.2.tar.bz2
rpmbuild -ta slurm-21.08.8-2.tar.bz2
cd /root/rpmbuild/RPMS/x86_64/
yum --nogpgcheck localinstall slurm-*
计算节点
安装slurm
mkdir /opt/slurm
scp centos11:/root/rpmbuild/RPMS/x86_64/slurm-* /opt/slurm/
cd /opt/slurm
yum --nogpgcheck localinstall slurm-*
控制节点
配置slurm
使用命令得到各节点配置
slurmd -C
配置文件可以通过拷贝默认的模版文件来获得:slurm.conf.example
cp /etc/slurm/slurm.conf.example /etc/slurm/slurm.conf
修改slurm.conf配置文件
vi slurm.conf
ClusterName=slurm-cluster
#集群名称;默认为”linux”;可保持默认,按需配置;
ControlMachine=slurm-master
#主控端主机名;默认”linux0″;根据Master端的实际主机名配置;
ControlAddr=192.168.80.250
#主控端IP地址;默认注释状态;当集群环境有DNS服务时可保持默认即可,如没有DNS服务时则需要根据Master端的实际IP地址配置;建议不管有无DNS服务都配置
SlurmUser=slurm
#Slurm Service服务运行专用账户;默认”slurm”;保持默认即可;表示该服务并不是以root用户或其它用户来运行管理的,而是专用账户slurm来运行管理的;
SlurmctldPort=6817
#主控端服务(slurmctld.service)默认端口号;保持默认即可;
SlurmdPort=6818
#节点端服务(slurmd.service)默认端口号;保持默认即可;
AuthType=auth/munge
#主控端与节点端之间认证授权通信方式;默认”munge”,保持默认即可;
StateSaveLocation=/var/spool/slurm/ctld
#主控端状态文件存放的目录路径,保持默认即可;
SlurmdSpoolDir=/var/spool/slurm/d
#节点端状态文件存放的目录路径,保持默认即可;
SlurmctldPidFile=/var/run/slurmctld.pid
#主控端PID文件存放的目录路径,保持默认即可;
SlurmdPidFile=/var/run/slurmd.pid
#节点端PID文件存放的目录路径,保持默认即可
ReturnToService=2
#避免节点端意外重启处于Down状态,默认”0″;建议”2″,重启后自动恢复成idle状态;
SlurmctldLogFile=/var/log/slurmctld.log
#主控端日志文件存放的目录路径,保持默认即可;
SlurmdLogFile=/var/log/slurmd.log
#节点端日志文件存放的目录路径,保持默认即可;
NodeName=linux[1-32] Procs=1 State=UNKNOWN
#节点端的资源配置;默认值;详情见下面的节点端资源配置说明
节点端资源配置说明:表示计算节点在进行计算任务时可以使用到节点的最大资源
NodeName=NodeHostName #配置节点主机名;编号格式:独立的”NodeName1″、连续的(含不连续的)”NodeName[2-3,4,6,7-10]”;连续的节点用”-“来表示,不连续的节点用”,”表示;
NodeAddr=x.x.x.x #配置对应节点的IPv4地址;当集群环境有DNS服务时此项可不配置;
CPUs=N #N为数字;表示CPU逻辑核数(总核数);
Sockets=N #N为数字;表示CPU实际物理插槽数
CoresPerSocket=N #N为数字;表示每个CPU插槽核数(每颗物理CPU核数)
ThreadsPerCore=N #N为数字;表示每个CPU核心线程数;不配置默认为单线程;
Procs=N #N为数字;表示实际分配CPU核数
RealMemory=N #N为数字,表示分配内存容量(默认单位MB)
State=UNKNOWN #表示节点端状态;默认”UNKNOWN”表示不知;保持默认即可;
PartitionName=debug Nodes=ALL Default=YES MaxTime=INFINITE State=UP
#计算节点分区队列的属性配置;默认值;详情见下面的节点端资源配置说明
计算节点分区队列配置说明:表示进行计算任务时可以指定不同的计算节点的分区队列进行不同的计算
PartitionName=debug #计算分区队列;默认”debug”;可按需自定义;
Nodes=ALL #表示分区队列内包含的计算节点数量;默认”ALL”;可按需自定义,节点编号格式:独立的”NodeName1″、连续的(含不连续的)”NodeName[2-3,4,6,7-10]”;连续的节点用”-“来表示,不连续的节点用”,”表示;
Default=YES #是否为计算队列分区,默认”YES”,反之则”NO”;表示Slurm在提交任务时不指定分区队列时默认使用的计算分区队列;多分区队列模式下只能一个分区配置YES模式;
MaxTime=INFINITE #计算任务的最大时间限制(默认单位为分钟),默认”INFINITE”无限;保持默认即可;
State=UP #分区队列状态,默认”UP”有效;保持默认即可
5:ClusterName=cluster
6:ControlMachine=centos01
7:ControlAddr=192.168.8.101
28:MpiDefault=none
33:ProctrackType=proctrack/cgroup
41:ReturnToService=2
42:SlurmctldPidFile=/var/run/slurmctld.pid
43:SlurmctldPort=6817
44:SlurmdPidFile=/var/run/slurmd.pid
45:SlurmdPort=6818
46:SlurmdSpoolDir=/var/spool/slurmd
47:SlurmUser=slurm
51:StateSaveLocation=/var/spool/slurmctld
52:SwitchType=switch/none
54:TaskPlugin=task/affinity
71:InactiveLimit=0
72:KillWait=30
75:MinJobAge=300
77:SlurmctldTimeout=120
78:SlurmdTimeout=300
81:Waittime=0
88:SchedulerType=sched/backfill
89:SelectType=select/cons_tres
90:SelectTypeParameters=CR_Core
113:AccountingStorageType=accounting_storage/none
120:JobCompType=jobcomp/none
123:JobAcctGatherFrequency=30
124:JobAcctGatherType=jobacct_gather/none
125:SlurmctldDebug=info
126:SlurmctldLogFile=/var/log/slurmctld.log
127:SlurmdDebug=info
128:SlurmdLogFile=/var/log/slurmd.log
147:NodeName=centos02 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=972 State=UNKNOWN
148:PartitionName=debug Nodes=centos02 Default=YES MaxTime=INFINITE State=UP
通过scp传到节点
scp -p /etc/slurm/slurm.conf centos12:/etc/slurm/
mkdir -p /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
计算节点
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 enable slurmd.service
systemctl start slurmd.service
systemctl status slurmd.service
控制节点
systemctl enable slurmctld.service
systemctl start slurmdctld.service
systemctl status slurmctld.service
systemctl enable slurmd.service
systemctl start slurmd.service
systemctl status slurmd.service
测试
scontrol show node