本篇内容介绍了“CentOS中如何部署Slurm”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

SLURM 是一种可用于大型计算节点集群的高度可伸缩和容错的集群管理器和作业调度系统。SLURM 维护着一个待处理工作的队列并管理此工作的整体资源利用。它还以一种排他或非排他的方式管理可用的计算节点(取决于资源的需求)。最后,SLURM 将作业分发给一组已分配的节点来执行工作并监视平行作业至其完成。

1. 前期准备1.1 关闭SELinux

#vi/etc/sysconfig/selinuxSELINUX=disabled#reboot#getenforce(查看SELinux状态)1.2 关闭 Firewall

#systemctlstopfirewalld.service#systemctldisablefirewalld.service1.3 安装EPEL Repo

#yum-yinstallepel-release

查看仓库状态

#yumrepolist1.4 安装axel与yum-axelget

#yuminstallaxelyum-axelget1.5 安装与配置NTP服务

安装与配置时间同步NTP服务,运行下列命令:

#yuminstallntp-y#systemctlenablentpd.service#ntpdatepool.ntp.org#systemctlstartntpd1.6 安装与配置NIS和NFS服务

注意:Master Node必须先完成NIS server+NFS server的安装与配置,然后进行Compute Nodes的NIS client+NFS client的安装与配置。
2. Master Node安装Slurm2.1 安装MariaDB

此处推荐下载离线包进行MariaDB的安装。如果进行再现安装,请先进行2.1.1步骤后,在terminal键入yum install -y MariaDB-server即可。

2.1.1 设置MariaDB.repo文件
推荐离线安装与在线安装都进行设置

打开/etc/yum.repos.d/,新建MariaDB.repo文件

#cd/etc/yum.repos.d/#viMariaDB.repo

打开https://downloads.mariadb.org/mariadb/repositories/,选择CentOS版本后,看到如下类似的的内容,在文件中粘贴内容,退出保存。

#MariaDB10.2CentOSrepositorylist-created2017-07-1709:59UTC#http://downloads.mariadb.org/mariadb/repositories/[mariadb]name=MariaDBbaseurl=http://yum.mariadb.org/10.2/centos7-amd64gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=12.1.2 下载,解压与安装

下载离线包,解压并进行安装

img

#axel-n10https://downloads.mariadb.com/MariaDB/mariadb-10.2.7/yum/rhel/mariadb-10.2.7-rhel-7-x86_64-rpms.tar#tarxvfmariadb-10.2.7-rhel-7-x86_64-rpms.tar#cdmariadb-10.2.7-rhel-7-x86_64-rpms/#yumlocalinstall-yMariaDB-*galera-25.3.20-1.rhel7.el7.centos.x86_64.rpm2.1.3 配置MariaDB

#servicemysqlstart#mysql_secure_installation#systemctlenablemariadb.service#systemctlstatusmariadb.service#mysql-uroot-p2.2 安装Slurm2.2.1 创建全局用户

在创建用户和用户组前,需要键入命令vi /etc/group查看用户组是否冲突

注意:需要确保Master Node和Compute Nodes的UID和GID相同,如果未开启NIS和NFS服务,推荐进行以下步骤。

#exportMUNGEUSER=1190#groupadd-g$MUNGEUSERmunge#useradd-m-c"MUNGEUid'N'GidEmporium"-d/var/lib/munge-u$MUNGEUSER-gmunge-s/sbin/nologinmunge#exportSlurmUSER=1191#groupadd-g$SlurmUSERslurm#useradd-m-c"Slurmworkloadmanager"-d/var/lib/slurm-u$SlurmUSER-gslurm-s/bin/bashslurm#cd/var/yp#make2.2.2 安装MUNGE

安装MUNGE进行身份验证。确保集群中的所有节点具有相同的munge.key。确保Munge的守护程序munged在Slurm的守护进程之前启动。

在所有节点安装MUNGE rpms,安装rng-tools来正确创建密钥:

#yuminstallmungemunge-libsmunge-devel-y#yuminstallrng-tools-y#rngd-r/dev/urandom2.2.3 配置MUNGE2.2.3.1 创建全局密钥

在Master Node进行设置,创建一个在每个结点全局使用的密钥。

#/usr/sbin/create-munge-key-r#ddif=/dev/urandombs=1count=1024>/etc/munge/munge.key#chownmunge:/etc/munge/munge.key#chmod400/etc/munge/munge.key2.2.3.2 密钥同步

密钥创建成功后,需要将该密钥发送到所有计算节点:

#scp-p/etc/munge/munge.keyroot@192.168.118.195:/etc/munge#...2.2.3.3 权限设置

设置正确的所有权限和模式

#chown-Rmunge:/etc/munge//var/log/munge/#chmod0700/etc/munge//var/log/munge/#chmod0711/var/lib/munge/2.2.3.4 启动MUNGE服务

#systemctlstartmunge#systemctlstatusmunge#systemctlenablemunge2.2.3.5 测试MUNGE服务

#munge-n#munge-n|unmunge#munge-n|ssh192.168.118.195unmunge#MasterNode进行测试#remunge2.2.4 Slurm的安装与配置2.2.4.1 安装依赖包

#yuminstallopensslopenssl-develpam-develnumactlnumactl-develhwlochwloc-devellualua-develreadline-develrrdtool-develncurses-develman2htmllibibmadlibibumad-y2.2.4.2 下载Slurm安装包

#wgethttps://www.schedmd.com/downloads/latest/slurm-17.02.6.tar.bz22.2.4.3 安装rpmbuild编译Slurm

#yuminstallrpm-build#rpmbuild-taslurm-17.02.6.tar.bz2

如果rpmbuild出现如下错误:

error:Failedbuilddependencies:perl(ExtUtils::MakeMaker)isneededbyslurm-17.02.6-1.el7.centos.x86_64

利用cpanm安装Perl模块后再进行rpmbuild。

#yuminstallcpanm*2.2.4.4 安装Slurm

#cd/root/rpmbuild/RPMS/x86_64#yum--nogpgchecklocalinstallslurm-*2.2.4.5 配置Slurm

进入http://slurm.schedmd.com/configurator.easy.html,按照如下范例进行自定义设置:

ControlMachine:mhcControlAddr:192.168.118.163NodeName:cas01NodeAddr:192.168.118.195CPUs:1Sockets:2RealMemory:27145#terminal键入free-m查看,最好设置为实际值的85%StateSaveLocation:/var/spool/slurmctldSlurmctldLogFile:/var/log/slurmctld.logSlurmdLogFile:/var/log/slurmd.logAccountingStorageType=accounting_storage/mysqlClusterName:mhcJobAcctGatherType=jobacct_gather/linux

点击Submit确认后,将页面的配置信息复制到slurm.conf中,保存退出;

#cd/etc/slurm#vimslurm.conf2.2.4.6 同步slurm.conf文件

设置正确的Master Node节点的slurm.conf发送给其他的Compute Node,同时对Compute Node进行配置;

#scp-p/etc/slurm/slurm.confroot@192.168.118.195:/etc/slurm/#...2.2.4.7 权限设置

确保Master Node具有所有正确的配置和文件

#mkdir/var/spool/slurmctld#chownslurm:/var/spool/slurmctld#chmod755/var/spool/slurmctld#touch/var/log/slurmctld.log#chownslurm:/var/log/slurmctld.log#touch/var/log/slurm_jobacct.log/var/log/slurm_jobcomp.log#chownslurm:/var/log/slurm_jobacct.log/var/log/slurm_jobcomp.log2.2.4.8 测试slurmd配置

查看slurmd配置是否正确

#slurmd-C2.2.4.9 开启slurmctld服务

开启Master Node的slurmctld服务

#systemctlstartslurmctld.service#systemctlstatusslurmctld.service#systemctlenableslurmctld.service2.3 安装Slurm Accounting

Accounting records可以为slurm收集每个作业步骤的信息。Accounting records可以写入一个简单的文本文件或数据库。

通过将文本文件指定为Accounting存储类型从而可以轻松地将数据存储到文本文件中。但是这个文件会变得越来越大,难以使用。因此,最简单且推荐的方法是使用数据库来存储信息。而Mysql是目前唯一支持的数据库。

2.3.1 创建slurm_acct_db数据库

#mysql-uroot-p

slurm_acct_db数据库的配置:

>grantallonslurm_acct_db.*to‘slurm’@’192.168.118.%’identifiedby‘!QAZ2wsx3edc’withgrantoption>grantallonslurm_acct_db.*to‘slurm’@’localhost’identifiedby‘!QAZ2wsx3edc’withgrantoption;>SHOWVARIABLESLIKE‘have_innodb’;>createdatabaseslurm_acct_db;>quit;2.3.2 配置slurmdbd.conf文件

#cp/etc/slurm/slurmdbd.conf.example/etc/slurm/slurmdbd.conf#chownslurm:/etc/slurm/slurmdbd.conf#chmod600/etc/slurm/slurmdbd.conf#mkdir/var/log/slurm/#touch/var/log/slurm/slurmdbd.log#chownslurm:/var/log/slurm/slurmdbd.log#vi/etc/slurm/slurmdbd.confLogFile=/var/log/slurm/slurmdbd.logDbdHost=localhostDbdPort=6819slurmUser=slurmStorageHost=localhostStoragePass=!QAZ2wsx3edcStorageLoc=slurm_acct_db2.3.3 创建一个正确的systemd文件

#cp/usr/lib/systemd/system/slurmctld.service/usr/lib/systemd/system/slurmd.service/usr/lib/systemd/system/slurmdbd.service/etc/systemd/system/#cat/etc/systemd/system/slurmctld.service2.3.4 同步slurm.conf文件

修改slurm.conf配置文件,同时同步到Compute Node

#vi/etc/slurm/slurm.conf

AccountingStorageType=accounting_storage/mysql后添加这几行

AccountingStorageHost=localhostAccountingStoragePort=3306AccountingStoragePass=!QAZ2wsx3edcAccountingStorageUser=slurm2.3.5 启动SlurmDBD服务

#systemctlenableslurmdbd#systemctlstartslurmdbd#systemctlstatusslurmdbd3. Compute Node安装Slurm3.1 安装Slurm

注意:在下面的步骤进行之前,需确保集群节点的NIS和NFS服务已经安装配置完成。
3.1.1 安装MUNGE

安装MUNGE进行身份验证

#yuminstallmungemunge-libsmunge-devel-y3.1.2 设置权限与启动MUNGE服务

设置Compute Node的MUNGE权限和启动MUNGE服务

在下列操作之前,Master Node应该将munge.key传到Compute Nodes

#chown-Rmunge:/etc/munge//var/log/munge/#chmod0700/etc/munge//var/log/munge/#systemctlstartmunge#systemctlenablemunge3.1.3 测试MUNGE服务

在Master Node测试访问Compute Node

#munge-n|ssh192.168.118.195unmunge#...3.1.4 Slurm的安装与配置3.1.4.1 安装依赖包

#yuminstallopensslopenssl-develpam-develnumactlnumactl-develhwlochwloc-devellualua-develreadline-develrrdtool-develncurses-develman2htmllibibmadlibibumad-y3.1.4.2 安装Slurm

#scproot@192.168.118.163:/root/rpmbuild/RPMS/x86_64/*/root/rpmbuild/RPMS/x86_64/#cd/root/rpmbuild/RPMS/x86_64#yum--nogpgchecklocalinstallslurm-*3.1.4.3 确保正确的配置

确保Compute Node具有所有正确的配置和文件

在下列操作之前,确保Master Node将slurm.conf发送给其他的Compute Nodes

#mkdir/var/spool/slurmd#chownslurm:/var/spool/slurmd#chmod755/var/spool/slurmd#touch/var/log/slurmd.log#chownslurm:/var/log/slurmd.log3.1.4.4 开启slurmd服务

开启Compute Node的slurmd服务

#systemctlstartslurmd.service#systemctlstatusslurmd.service#systemctlenableslurmd.service

Compute Nodes中出现Failed to start slurm node daemon.时候,同时cat /var/log/slurm.log后看到cannot create proctrack context for proctrack/cgroup错误的时候,执行:

#cd/etc/slurm/#cpcgroup.conf.examplecgroup.conf#cpcgroup_allowed_devices_file.conf.examplecgroup_allowed_devices_file.conf4. Slurm 测试指令4.1 slurm测试4.1.1 显示所有Compute Nodes

#scontrolshownodes

如果Compute Nodes的State=DOWN,则如下执行,将状态变成IDLE

#scontrolupdatenodename=cas01state=resume4.1.2 简单测试执行

#srun-N4hostname4.1.3 查看节点

#scontrolshownodes4.1.4 显示作业数量

#scontrolshowjobs4.1.5 使用脚本

#sbatch-N2script-file4.2 常见API

sacct 被用来汇报工作或者解释激活的或完成的工作的信息的工作步骤。
salloc 被用来实时的分配给一个工作任务资源。经常地这被用来分配资源并生成一个Shell(命令解释程序)。这个Shell程序然后被用来执行srun命令运行平行的任务们。
sattach 被用来将标准输入输出以及错误的附加的信号能力附着于目前正在执行的工作或工作步骤。这既可以被附着也可以将其从多任务线程中分离。
sbatch 被用来提交一段工作脚本以进行后续的执行,这个脚本经常性地包括一个或多个srun命令去运行平行任务。
sbcast 被用来将一个文件从当地硬盘转移到当地硬盘上被分配到这个工作的节点上。这可以被用来高效地使用(diskless)不怎么使用硬盘的计算节点或相对于一个共享文件系统而言提供更好的性能。
scancel被用来取消一个挂起或正在执行的工作或工作步骤。他能够被用来发送任意信号给所有与正在执行的工作或工作步骤相关的进程。
scontrol 是管理性的工具用来视察并或修改slurm状态。记住许多scontrol命令只能被管理员root权限执行。
sinfo 记录了由slurm管理的(partition)分区和节点的状态,它有广泛多样的如过滤、排序、格式化等的选项。
smap 记录了由slurm管理的工作、分区和节点的状态信息,但图像化显示的信息业反映了网络拓扑结构。
strigger 被用来设置、获得或视察事件触发器。事件触发器包括了诸如节点going down(挂死)或工作任务接近了它们的限制事件。
sview 是一个图像化的用户界面用来获得并更新由slurm管理的工作、分区以及节点的状态信息。

“CentOS中如何部署Slurm”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!