参考文章:

https://www.cnblogs.com/liu-shaobo/p/13285839.htmlhttps://cndaqiang.github.io/2019/09/19/Centos7-CC19/https://blog.csdn.net/Datuqiqi/article/details/50827040https://blog.csdn.net/weixin_42506905/article/details/100165253https://www.cnblogs.com/liwanliangblog/p/9194244.htmlhttps://blog.csdn.net/heguangsui123/article/details/94750192

操作手册

https://bicmr.pku.edu.cn/~wenzw/pages/slurm.html
https://www.jianshu.com/p/ca12944eab67

Slurm集群资源管理器的简单使用:

https://cloud.tencent.com/developer/article/1607964
https://www.ityww.cn/1470.html
https://www.jianshu.com/p/99fd802f0577

一、基础环境

1、主机名和IP
控制节点:192.168.8.150 m1
计算节点:192.168.8.145 c1
计算节点:192.168.1.144 c2

分别在3个节点设置主机名

# hostnamectl set-hostname m1
# hostnamectl set-hostname c1
# hostnamectl set-hostname c2

2、主机配置

系统: Centos7.6 x86_64
192.168.8.145
磁盘:234G cpu:2核 内存:15G

192.168.8.150
磁盘:234G cpu:2核 内存:15G

3、关闭防火墙

# systemctl stop firewalld
# systemctl disable firewalld
# systemctl stop iptables
# systemctl disable iptables

4、修改资源限制

复制代码

# cat /etc/security/limits.conf
  • hard nofile 1000000
  • soft nofile 1000000
  • soft core unlimited
  • soft stack 10240
  • soft memlock unlimited
  • hard memlock unlimited

//Linux记录-limits.conf 配置:
https://blog.csdn.net/weixin_30917213/article/details/101093058

vi /etc/security/limits.conf

  • soft nofile 655360 # open files (-n),不要设置为unlimited

  • hard nofile 655360 # 不要超过最大值1048576,不要设置为unlimited

  • soft nproc 655650

  • hard nproc 655650 # max user processes (-u)

hive - nofile 655650
hive - nproc 655650

5、配置时区
配置CST时区

# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

同步NTP服务器

# yum install ntp -y
# systemctl start ntpd
# systemctl enable ntpd

安装EPEL源

# yum install http://mirrors.sohu.com/fedora-epel/epel-release-latest-7.noarch.rpm

6、安装NFS(控制节点)

# yum -y install nfs-utils rpcbind

创建 exports 文件

# cat /etc/exports

vim /etc/exports,编辑/etc/exports文件,文件内容如下:

/software/ *(rw,async,insecure,no_root_squash)

查看状态

# systemctl status nfs

启动NFS:

# systemctl start nfs
# systemctl start rpcbind
# systemctl enable nfs
# systemctl enable rpcbind

客户端挂载NFS

S1中:

# yum -y install nfs-utils
# mkdir /software
# mount 192.168.8.150:/software /software

S2中:
$ mount -t nfs 192.168.8.150:/software /software
格式上就是,mount -t nfs S1的IP:S1分享的目录 S2直接操作的目录
这样操作S2的这个目录就相当于直接S1分享的目录了,当然,操作S1的分享的目录,这个S2里的内容也会跟着变

7、配置SSH免登陆:

# ssh-keygen
# ssh-copy-id -i .ssh/id_rsa.pub c1
# ssh-copy-id -i .ssh/id_rsa.pub c2

//-----Linux - 配置SSH免密通信 - “ssh-keygen”的基本用法-----
https://www.cnblogs.com/shoufeng/p/11022258.html

1.ssh-keygen创建公钥-私钥对
2.ssh-copy-id把A的公钥发送给B
3.在A服务器上免密登录B服务器

第一步:在本地机器上使用ssh-keygen产生公钥私钥对:
$ ssh-keygen
第二步:用ssh-copy-id将公钥复制到远程机器中:
$ ssh-copy-id -i .ssh/id_rsa.pub root@192.168.8.150
注意: ssh-copy-id 将key写到远程机器的 ~/ .ssh/authorized_key.文件中

第三步: 登录到远程机器不用输入密码:
$ ssh 用户名字@192.168.x.xxx

//----配置SSH免密登录时报错:/usr/bin/ssh-copy-id: ERROR: failed to open ID file ‘.ssh/id_rsa.pub’: No such file or directory

https://blog.csdn.net/feifuzeng/article/details/111235160?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-1.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-1.nonecase

首先登录180.8.5.101,执行如下三步

第一步:在/root/.ssh目录执行ssh-keygen产生公钥秘钥对

ssh-keygen

然后一路Enter下去

第二步:用ssh-copy-id将公钥复制到远程机器中

ssh-copy-id -i .ssh/id_rsa.pub root@192.168.8.145

注意:ssh-copy-id将key写到远程机器的~/.ssh/authorized_key文件中

第三步:登录到远程机器不用输入密码
ssh root@192.168.8.145

二、配置Munge

删除安装失败的munge:

yum remove munge munge-libs munge devel -y

删除用户:

userdel -r munge

1、创建Munge用户
Munge用户要确保Master Node和Compute Nodes的UID和GID相同,所有节点都需要安装Munge;

# groupadd -g 1108 munge
# useradd -m -c "Munge Uid 'N' Gid Emporium" -d /var/lib/munge -u 1108 -g munge -s /sbin/nologin munge

2、生成熵池:

# yum install -y rng-tools

使用/dev/urandom来做熵源

# rngd -r /dev/urandom
# vim /usr/lib/systemd/system/rngd.service

修改如下参数
[service]
ExecStart=/sbin/rngd -f -r /dev/urandom

查看状态

# systemctl status rngd

退出报存

# systemctl daemon-reload
# systemctl start rngd
# systemctl enable rngd

3、部署Munge
Munge是认证服务,实现本地或者远程主机进程的UID、GID验证。

# yum install munge munge-libs munge-devel -y

创建全局密钥
在Master Node创建全局使用的密钥

# /usr/sbin/create-munge-key -r
# dd if=/dev/urandom bs=1 count=1024 > /etc/munge/munge.key

密钥同步到所有计算节点:

# scp -p /etc/munge/munge.key root@192.168.8.145:/etc/munge
# scp -p /etc/munge/munge.key root@192.168.8.144:/etc/munge
# chown munge: /etc/munge/munge.key
# chmod 400 /etc/munge/munge.key

查看状态

# systemctl status munge

所有节点都执行启动命令:

# systemctl start munge
# systemctl enable munge

//停掉服务

systemctl stop munge

//查看状态

systemctl status munge

//----------Job for munge.service failed because the control process exited with error code启动失败
See “systemctl status slurmd.service” and “journalctl -xe” for details.

查看 /var/log/munge/munged.log
Error: Failed to check pidfile dir “/var/run/munge”: cannot canonicalize “/var/run/munge”: Permission denied
查看 /var/run的用户权限
chown -R munge /var/run/chrony

-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限

4、测试Munge服务
每个计算节点与控制节点进行连接验证

本地查看凭据:

# munge -n

本地解码:

# munge -n | unmunge

验证compute node,远程解码:

# munge -n | ssh 192.168.8.145 unmunge

//--------报错:unmunge: Error: Invalid credentia
重启计算节点的munge 服务

Munge凭证基准测试

# remunge

三、配置Slurm
1、创建Slurm用户

# groupadd -g 1109 slurm
# useradd -m -c "Slurm manager" -d /var/lib/slurm -u 1109 -g slurm -s /bin/bash slurm

2、安装Slurm依赖

# yum install gcc gcc-c++ readline-devel perl-ExtUtils-MakeMaker pam-devel rpm-build mysql-devel -y

编译Slurm

# wget https://download.schedmd.com/slurm/slurm-20.02.7.tar.bz2

安装rpmbuild编译Slurm,rpmbuild制作rpm包

# yum install rpm-build
# rpmbuild -ta slurm-21.08.0-0rc1.tar.bz2

//如果rpmbuild出现如下错误:
error: Failed build dependencies:
python3 is needed by slurm-21.08.0-0rc1.el7.x86_64

解决:rpmbuild 生成软件包, 在安装时候忽略依赖关系,添加参数–nodeps
rpmbuild -ta --nodeps slurm-21.08.0-0rc1.tar.bz2

–nodeps #不检查建立包时的关联文件

cd到制作好的rpm包下:

# cd /root/rpmbuild/RPMS/x86_64/

所有节点安装Slurm

yum localinstall slurm-*

//--------------yum 安装 出错 Error: Protected multilib versions:
解决办法:在执行命令后面加上:–setopt=protected_multilib=false

子节点安装报错:Bad exit status from /var/tmp/rpm-tmp.EJn6d9 (%build)
需要安装python3

解压:
tar -Jxf Python-3.6.2.tar.xz
进入目录
cd Python-3.6.2
创建安装目录
mkdir /usr/local/python3
指明安装路径
./configure -prefix=/usr/local/python3
编译安装
make && make install

建立链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 #为python3创建软连接
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 #为pip3创建软连接

验证
python3 # 输入
pip3 -V #V大写

3、配置控制节点Slurm

# cp /etc/slurm/cgroup.conf.example /etc/slurm/cgroup.conf
# cp /etc/slurm/slurm.conf.example /etc/slurm/slurm.conf
# vim /etc/slurm/slurm.conf

##修改如下部分

ControlMachine=m1
ControlAddr=192.168.8.150
SlurmUser=slurm
SlurmctldLogFile=/var/log/slurm/slurmctld.log
SlurmdLogFile=/var/log/slurm/slurmd.log
SelectType=select/cons_res
SelectTypeParameters=CR_CPU_MemoryNodeName=c[1-2] RealMemory=3400 Sockets=1 CoresPerSocket=4 State=IDLE
PartitionName=all Nodes=c[1-2] Default=YES State=UP

查看配置文件:

scontrol show config

复制控制节点配置文件到计算节点:

# scp /etc/slurm/*.conf  root@192.168.8.145:/etc/slurm/
# scp /etc/slurm/*.conf  c2:/etc/slurm/

设置控制、计算节点文件权限

# mkdir /var/spool/slurm
# chown slurm: /var/spool/slurm
# mkdir /var/log/slurm
# chown slurm: /var/log/slurm

5、配置控制节点Slurm Accounting
Accounting records为slurm收集作业步骤的信息,可以写入一个文本文件或数据库,但这个文件会变得越来越大,最简单的方法是使用MySQL来存储信息。
创建数据库的Slurm用户(MySQL自行安装)

mysql -u root -p

//-----------Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)--------
mysql -h192.168.8.144 -uroot -proot

mysql> grant all on slurm_acct_db.* to ‘slurm’@‘%’ identified by ‘root’ with grant option;

//------------Mysql密码策略:Your password does not satisfy the current policy requirements
查看 mysql 初始的密码策略:
SHOW VARIABLES LIKE ‘validate_password%’;

首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可:
set global validate_password_policy=LOW;

当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可

set global validate_password_length=4;
关于 mysql 密码策略相关参数;
1)、validate_password_length 固定密码的总长度;
2)、validate_password_dictionary_file 指定密码验证的文件路径;
3)、validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
4)、validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;
5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
1.LOW:只验证长度;
2.MEDIUM:验证长度、数字、大小写、特殊字符;
3.STRONG:验证长度、数字、大小写、特殊字符、字典文件;
6)、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;

配置slurmdbd.conf文件

# cp /etc/slurm/slurmdbd.conf.example /etc/slurm/slurmdbd.conf
# cat /etc/slurm/slurmdbd.conf
AuthType=auth/munge
AuthInfo=/var/run/munge/munge.socket.2
DbdAddr=192.168.8.150
DbdHost=m1
SlurmUser=slurm
DebugLevel=verbose
LogFile=/var/log/slurm/slurmdbd.log
PidFile=/var/run/slurmdbd.pid
StorageType=accounting_storage/mysql
StorageHost=192.168.8.144
StorageUser=slrum
StoragePass=root
StorageLoc=slurm_acct_dbchown slurm: /etc/slurm/slurmdbd.conf
chmod 600 /etc/slurm/slurmdbd.conf
chown slurm: /var/log/slurm/slurmdbd.log

6、开启节点服务

查看状态

# systemctl status slurmdbd

启动控制节点Slurmdbd服务

# systemctl start slurmdbd
# systemctl enable slurmdbd

//--------------Failed to start slurmdbd.service: Unit not found
首先看一下服务列表里有没有这个服务:
systemctl list-unit-files --type=service
如果有的话:
systemctl daemon-reload

启动控制节点slurmctld服务

启动集群:

Master节点需要执行 slurmctld -c 和slurmd-c,都是以root账户执行
所有Slaver节点都执行 slurmd -c

# systemctl start slurmctld
# systemctl status slurmctld
# systemctl enable slurmctld

启动计算节点的服务:

# systemctl start slurmd
# systemctl status slurmd
# systemctl enable slurmd

//-----------启动控制节点 systemctl status slurmdbd 报错:Can’t open PID file /var/run/slurmdbd.pid (yet?) after start: No such file or directory

查看文件是否存在 不存在创建pid文件:
touch /var/run/slurmdbd.pid
赋权限 chmod -R 777 /var/run/slurmdbd.pid
解决。

//-----------启动控制节点 systemctl enable slurmctld 报错:Failed to parse PID from file /var/run/slurmctld.pid: Invalid argument
查看日志:
“journalctl -xe”

于是去查看slurmctld 的启动文件,/usr/lib/systemd/system/slurmctld.service
结果发现有这么一行
PIDFile=/var/run/slurmctld.pid
把这一行屏蔽以后重启,问题解决
systemctl daemon-reload

如果还是没有解决,关闭xshell工具重新打开,然后 systemctl start slurmd。

//-------sinfo 报错:slurm_load_partitions: Unable to contact slurm controller (connect failure)

# vim /etc/slurm/slurm.conf

##修改如下部分

ControlMachine=m1
ControlAddr=192.168.8.150
SlurmUser=slurm
SlurmctldLogFile=/var/log/slurm/slurmctld.log
SlurmdLogFile=/var/log/slurm/slurmd.log
SelectType=select/cons_res
SelectTypeParameters=CR_CPU_Memory
NodeName=m1 NodeAddr=192.168.8.150  CPUs=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=200 Procs=1 State=UNKNOWN
NodeName=c1 NodeAddr=192.168.8.145  CPUs=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=200 Procs=1 State=UNKNOWN
PartitionName=control Nodes=m1 Default=NO MaxTime=INFINITE State=UP
PartitionName=compute Nodes=c1 Default=YES MaxTime=INFINITE State=UP

这里要注意: CPUs=24 CoresPerSocket=6 ThreadsPerCore=2 RealMemory=30000 Procs=1 要根据自己的服务器资源酌情配置

查看配置文件:

scontrol show config

如果修改了配置文件slurm.conf,则请在master上执行scontrol reconfig命令更新配置文件。
重新加载一下

systemctl daemon-reload

四、检查Slurm集群

查看集群

# sinfo
# scontrol show partition
# scontrol show node

提交作业

# srun -N2 hostname
# scontrol show jobs

查看作业

# squeue -a

CentOS7安装部署Slurm集群详细步骤及常见的问题.相关推荐

  1. citus介绍和centos7安装部署和集群搭建

    文章目录 citus 简介 citus主要特性 部署 centos单节点版本部署启动 centos集群部署启动 要在所有节点上执行的步骤 要在协调器节点上执行的步骤 常用语句 遇到的问题 参考 cit ...

  2. centos7.8 安装部署 k8s 集群

    centos7.8 安装部署 k8s 集群 文章目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 k ...

  3. K8s系列之:搭建高可用K8s v1.23.5集群详细步骤,3个master节点,3个Node节点

    K8s系列之:搭建高可用K8s v1.23.5集群详细步骤,3个master节点,3个Node节点 一.K8s集群节点划分 二.k8s集群环境准备 三.关闭swap 四.关闭ipv6 五.桥接IPv4 ...

  4. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需 ...

  5. RKE安装部署K8S集群、Rancher

    服务器准备:三台虚拟机(master:1,node:2:这里选用的阿里云ECS) OS hostname 内网IP Centos7 joker-master-1 172.27.31.149 Cento ...

  6. weblogic 正在启动 wsee服务_详解LINUX安装部署weblogic集群--第二部分

    概述 续一下前几天说的安装部署weblogic集群部分,前面介绍了在每台服务器(ABCDE)安装weblogic软件,下面只在A服务器创建域,最后再拷贝到其他服务器即可. 使用Domain Confi ...

  7. centos7安装kubernetes1.9集群

    节点规划 本次选用一个master节点,三个node节点来安装k8s集群. 节点 IP M0 10.xx.xx.xx N0 10.xx.xx.xx N1 10.xx.xx.xx N2 10.xx.xx ...

  8. ansible安装部署CDH集群,与手动安装部署CDH集群,及CM配置和用户权限配置

    前言 CDH大数据平台 CDH是Cloudera发布的一个自己封装的Hadoop商业版软件发行包,里面不仅包含了Cloudera的商业版Hadoop,能够十分方便地对Hadoop集群进行安装,部署和管 ...

  9. CentOS7 安装Redis Cluster集群

    上一篇中已经讲到了如何安装单击版Redis,这一篇我们来说下如何安装Cluster,关于哨兵模式这里我就不写文章安装了,有兴趣的同学可以自己去研究,哨兵模式可以在主从模式下在创建三台机器的哨兵集群监控 ...

最新文章

  1. 零基础学python用什么书-零基础自学python3 好用的入门书籍推荐
  2. 【信息抽取】介绍一种端到端的关系抽取方法
  3. 【CodeForces - 633D】Fibonacci-ish (离散化,暴力枚举+STPmap,fib数列收敛性质)
  4. 工具推荐--正则表达式
  5. 安卓调用系统拍照功能:1、启动拍照返回图片,2、启动拍照,图片存储在指定路径下
  6. 【转】SQLServer2005中的增强数据类型VARCHAR(MAX)
  7. android 判断服务是否运行
  8. 2018年第十三届中国Linux内核开发者大会(CLK)征稿启事
  9. 【SpringBoot_ANNOTATIONS】自动装配 03 方法 构造器位置的自动装配
  10. dex2jar android,dex2jar
  11. SGD和带momentum的SGD算法
  12. 贝叶斯公式的理解——机器学习算法(一)
  13. java在线客服系统_JSP在线客服系统
  14. 以中国南方航空为竞品结构化分析并设计航空购票网页
  15. 百度联盟作弊诀窍——简单六招申请百度联盟秒过
  16. 维基解密网站下线4小时,与《41号修订案》有关?
  17. 阿里高层大调整,集团CEO张勇兼任阿里云总裁,CTO鲁肃卸任
  18. 给锂电池充电,充电器的输出电压
  19. 纯粹主义的开源:每一颗螺丝钉都是自由的
  20. JS随机生成ID 以及随机生成坐标

热门文章

  1. 使用install安装应用的时候出现INSTALL_FAILED_SHARED_USER_INCOMPATIBLE问题的解决方法
  2. 易拉宝Roll up Banner
  3. python拆分excel并发送邮件_python使用tkinterpandassmtplib读取Excel并发送邮件
  4. 2013年第四届丘成桐大学生数学竞赛获奖名单
  5. 图神经网络12-分子指纹GCN:Neural FPs
  6. Python for Data Analysis:Numpy
  7. 周易六十四卦——否卦
  8. 如何制定软件项目测试计划
  9. 基于华为云弹性云服务器ECS(搭载openEuler的鲲鹏通用计算增强型)完成鲲鹏代码迁移工具实践【华为云至简致远】
  10. 2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛