CentOS 7 安装Slurm

1. 前期准备

1.1 关闭SELinux

# vi /etc/sysconfig/selinux
        SELINUX=disabled
# reboot
# getenforce(查看SELinux状态)

1.2 关闭 Firewall

# systemctl stop firewalld.service
# systemctl disable firewalld.service

1.3 安装EPEL Repo

# yum -y install epel-release
  • 查看仓库状态
# yum repolist

1.4 安装axel与yum-axelget

# yum install axel yum-axelget

1.5 安装与配置NTP服务

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

# yum install ntp -y
# systemctl enable ntpd.service
# ntpdate pool.ntp.org
# systemctl start ntpd

1.6 安装与配置NIS和NFS服务

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

2. Master Node安装Slurm

2.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/
# vi MariaDB.repo

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

# MariaDB 10.2 CentOS repository list - created 2017-07-17 09:59 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

2.1.2 下载,解压与安装

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

# axel -n 10 https://downloads.mariadb.com/MariaDB/mariadb-10.2.7/yum/rhel/mariadb-10.2.7-rhel-7-x86_64-rpms.tar
# tar xvf mariadb-10.2.7-rhel-7-x86_64-rpms.tar
# cd mariadb-10.2.7-rhel-7-x86_64-rpms/
# yum localinstall -y MariaDB-* galera-25.3.20-1.rhel7.el7.centos.x86_64.rpm

2.1.3 配置MariaDB

# service mysql start
# mysql_secure_installation
# systemctl enable mariadb.service
# systemctl status mariadb.service
# mysql -u root -p

2.2 安装Slurm

2.2.1 创建全局用户

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

  • 注意:需要确保Master Node和Compute Nodes的UID和GID相同,如果未开启NIS和NFS服务,推荐进行以下步骤。
# 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
# cd /var/yp
# make

2.2.2 安装MUNGE

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

  • 在所有节点安装MUNGE rpms,安装rng-tools来正确创建密钥:
# yum install munge munge-libs munge-devel -y
# yum install rng-tools -y
# rngd -r /dev/urandom

2.2.3 配置MUNGE

2.2.3.1 创建全局密钥

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

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

2.2.3.2 密钥同步

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

# scp -p /etc/munge/munge.key root@192.168.118.195:/etc/munge
# ...

2.2.3.3 权限设置

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

# chown -R munge: /etc/munge/ /var/log/munge/
# chmod 0700 /etc/munge/ /var/log/munge/
# chmod 0711 /var/lib/munge/

2.2.3.4 启动MUNGE服务

# systemctl start munge
# systemctl status munge
# systemctl enable munge

2.2.3.5 测试MUNGE服务

# munge -n
# munge -n | unmunge
# munge -n | ssh 192.168.118.195 unmunge # Master Node进行测试
# remunge

2.2.4 Slurm的安装与配置

2.2.4.1 安装依赖包

# yum install openssl openssl-devel pam-devel numactl numactl-devel hwloc hwloc-devel lua lua-devel readline-devel rrdtool-devel ncurses-devel man2html libibmad libibumad -y

2.2.4.2 下载Slurm安装包

# wget https://www.schedmd.com/downloads/latest/slurm-17.02.6.tar.bz2

2.2.4.3 安装rpmbuild编译Slurm

# yum install rpm-build
# rpmbuild -ta slurm-17.02.6.tar.bz2

如果rpmbuild出现如下错误:

error: Failed build dependencies:
        perl(ExtUtils::MakeMaker) is needed by slurm-17.02.6-1.el7.centos.x86_64

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

# yum install cpanm*

2.2.4.4 安装Slurm

# cd /root/rpmbuild/RPMS/x86_64
# yum --nogpgcheck localinstall slurm-*

2.2.4.5 配置Slurm

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

ControlMachine: mhc
ControlAddr: 192.168.118.163
NodeName: cas01
NodeAddr: 192.168.118.195
CPUs: 1
Sockets: 2
RealMemory: 27145 # terminal键入free -m查看,最好设置为实际值的85%
StateSaveLocation: /var/spool/slurmctld
SlurmctldLogFile: /var/log/slurmctld.log
SlurmdLogFile: /var/log/slurmd.log
AccountingStorageType=accounting_storage/mysql
ClusterName: mhc
JobAcctGatherType=jobacct_gather/linux

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

# cd /etc/slurm
# vim slurm.conf

2.2.4.6 同步slurm.conf文件

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

# scp -p /etc/slurm/slurm.conf root@192.168.118.195:/etc/slurm/
# ...

2.2.4.7 权限设置

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

# mkdir /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

2.2.4.8 测试slurmd配置

查看slurmd配置是否正确

# slurmd -C

2.2.4.9 开启slurmctld服务

开启Master Node的slurmctld服务

# systemctl start slurmctld.service
# systemctl status slurmctld.service
# systemctl enable slurmctld.service

2.3 安装Slurm Accounting

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

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

2.3.1 创建slurm_acct_db数据库

# mysql -u root -p

slurm_acct_db数据库的配置:

> grant all on slurm_acct_db.* to ‘slurm’@’192.168.118.%’ identified by ‘!QAZ2wsx3edc’ with grant option
> grant all on slurm_acct_db.* to ‘slurm’@’localhost’ identified by ‘!QAZ2wsx3edc’ with grant option;
> SHOW VARIABLES LIKE ‘have_innodb’;
> create database slurm_acct_db;
> quit;

2.3.2 配置slurmdbd.conf文件

# cp /etc/slurm/slurmdbd.conf.example /etc/slurm/slurmdbd.conf
# chown slurm: /etc/slurm/slurmdbd.conf
# chmod 600 /etc/slurm/slurmdbd.conf
# mkdir /var/log/slurm/
# touch /var/log/slurm/slurmdbd.log
# chown slurm: /var/log/slurm/slurmdbd.log
# vi /etc/slurm/slurmdbd.conf
LogFile=/var/log/slurm/slurmdbd.log
DbdHost=localhost
DbdPort=6819
slurmUser=slurm
StorageHost=localhost
StoragePass=!QAZ2wsx3edc
StorageLoc=slurm_acct_db

2.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.service

2.3.4 同步slurm.conf文件

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

# vi /etc/slurm/slurm.conf

AccountingStorageType=accounting_storage/mysql后添加这几行

AccountingStorageHost=localhost
AccountingStoragePort=3306
AccountingStoragePass=!QAZ2wsx3edc
AccountingStorageUser=slurm

2.3.5 启动SlurmDBD服务

# systemctl enable slurmdbd
# systemctl start slurmdbd
# systemctl status slurmdbd

3. Compute Node安装Slurm

3.1 安装Slurm

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

3.1.1 安装MUNGE

安装MUNGE进行身份验证

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

3.1.2 设置权限与启动MUNGE服务

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

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

# chown -R munge: /etc/munge/ /var/log/munge/
# chmod 0700 /etc/munge/ /var/log/munge/
# systemctl start munge
# systemctl enable munge

3.1.3 测试MUNGE服务

在Master Node测试访问Compute Node

# munge -n | ssh 192.168.118.195 unmunge
# ...

3.1.4 Slurm的安装与配置

3.1.4.1 安装依赖包

# yum install openssl openssl-devel pam-devel numactl numactl-devel hwloc hwloc-devel lua lua-devel readline-devel rrdtool-devel ncurses-devel man2html libibmad libibumad -y

3.1.4.2 安装Slurm

# scp root@192.168.118.163:/root/rpmbuild/RPMS/x86_64/* /root/rpmbuild/RPMS/x86_64/
# cd /root/rpmbuild/RPMS/x86_64
# yum --nogpgcheck localinstall slurm-*

3.1.4.3 确保正确的配置

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

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

# 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

3.1.4.4 开启slurmd服务

开启Compute Node的slurmd服务

# systemctl start slurmd.service
# systemctl status slurmd.service
# systemctl enable slurmd.service

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

# cd /etc/slurm/
# cp cgroup.conf.example cgroup.conf
# cp cgroup_allowed_devices_file.conf.example cgroup_allowed_devices_file.conf

4. Slurm 测试指令

4.1 slurm测试

4.1.1 显示所有Compute Nodes

# scontrol show nodes

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

# scontrol update nodename=cas01 state=resume

4.1.2 简单测试执行

# srun -N4 hostname

4.1.3 查看节点

# scontrol show nodes

4.1.4 显示作业数量

# scontrol show jobs

4.1.5 使用脚本

# sbatch -N2 script-file

4.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管理的工作、分区以及节点的状态信息。

5. 参考资料

  1. https://www.slothparadise.com/how-to-install-slurm-on-centos-7-cluster/
  2. https://wiki.fysik.dtu.dk/niflheim/Slurm_database
  3. https://hrouhani.org/slurm-workload-manager/




链接:https://www.jianshu.com/p/37d19a0fe473
 

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Slurm是一个开源的集群管理和作业调度系统,可用于管理和调度大规模的计算集群。CentOS是一种现代和可靠的Linux发行版,常用于构建服务器环境。下面是关于在CentOS安装Slurm的一些步骤: 1. 安装依赖软件包:在CentOS安装Slurm之前,需要先安装一些必需的软件包。可以使用以下命令安装这些软件包: `yum install munge munge-libs munge-devel mariadb mariadb-server mariadb-devel openssl openssl-devel readline readline-devel pam pam-devel numactl numactl-devel hwloc hwloc-devel rrdtool-devel bzip2` 2. 配置Munge:Munge是一个用于身份验证和加密的工具。在安装Slurm之前,我们需要配置和启动Munge。可以使用以下命令配置Munge: `echo "RANDOMBOB" | sudo tee /etc/munge/munge.key`,然后执行以下命令启动Munge: `sudo systemctl enable munge`,`sudo systemctl start munge` 3. 配置MariaDB:Slurm需要一个数据库来存储和管理作业信息。在安装Slurm之前,我们需要配置和启动MariaDB。可以使用以下命令配置MariaDB: `sudo systemctl enable mariadb`,`sudo systemctl start mariadb`,然后执行以下命令设置MariaDB的root密码: `sudo mysql_secure_installation` 4. 安装Slurm安装Slurm需要从源代码进行编译。可以从Slurm的官方网站上下载最新的源代码包(tar.gz格式)。下载完成后,解压缩文件,进入解压缩后的目录。然后使用以下命令进行配置和编译: `./configure --prefix=/usr --sysconfdir=/etc/slurm --enable-pam --with-mysql_config=/usr/bin/mysql_config --with-munge=/usr/bin/munge`,`make`,`sudo make install` 5. 配置Slurm:在安装完成后,需要对Slurm进行配置。可以编辑 `/etc/slurm/slurm.conf` 文件来配置集群和作业的参数。根据需要修改文件中的配置项。 6. 启动Slurm:配置完成后,可以使用以下命令启动Slurm: `sudo systemctl enable slurmd`,`sudo systemctl start slurmd`,`sudo systemctl enable slurmctld`,`sudo systemctl start slurmctld` 通过以上步骤,我们可以在CentOS上成功安装和配置Slurm集群管理和作业调度系统。 ### 回答2: Slurm是一种用于高性能计算(HPC)集群管理的开源软件。CentOS是一种流行的Linux操作系统。要在CentOS安装Slurm,您需要按照以下步骤进行操作: 1. 在CentOS安装依赖软件包:使用命令`sudo yum install epel-release`安装EPEL软件包,然后使用命令`sudo yum update`进行系统更新。 2. 下载Slurm软件包:您可以从Slurm官方网站(https://www.schedmd.com/downloads.php)下载最新版本的Slurm软件包。然后使用命令`tar -zxvf slurm-xxx.tar.gz`解压缩软件包。 3. 编译和安装Slurm:进入解压缩后的Slurm目录,执行以下命令进行编译和安装: - `./configure` - `make` - `sudo make install` 4. 配置Slurm:创建配置文件`slurm.conf`,其中包含有关集群和节点信息的详细配置。您可以复制示例配置文件,并根据您的集群设置进行修改。将`slurm.conf`文件放置在`/usr/local/etc`目录下。 5. 启动Slurm:使用以下命令启动Slurm服务: - `sudo systemctl start slurmd`(对于各个节点) - `sudo systemctl start slurmctld`(对于主控节点) 6. 验证安装:使用命令`sudo sinfo`或`sudo sacctmgr list clusters`来验证Slurm安装和配置。您应该能够看到有关节点和集群的信息。 以上是安装SlurmCentOS的基本步骤。请注意,这只是一个简单的概述,不包含所有细节和特殊设置。在实际安装中,您可能还需要进行其他配置和调整以适应您的特定需求和环境。建议您参考Slurm的官方文档或向相关社区提问以获取更多帮助和支持。 ### 回答3: Slurm是一个用于管理和调度高性能计算集群资源的开源软件。CentOS是一种基于Linux的操作系统,适用于服务器和大型计算集群环境。 要在CentOS安装Slurm,需要按照以下步骤进行操作: 1. 首先,确保CentOS系统已经安装并处于最新状态。可以使用以下命令进行更新: ``` sudo yum update ``` 2. 接下来,需要安装Slurm的依赖软件包。可以使用以下命令安装这些软件包: ``` sudo yum install munge munge-libs munge-devel openssl openssl-devel pam-devel numactl numactl-devel hwloc hwloc-devel lua lua-devel readline readline-devel rrdtool-devel rrdtool ``` 3. 下一步是安装Slurm软件包。可以从Slurm的官方网站(https://www.schedmd.com/downloads.php)上下载最新的Slurm源代码包,然后使用以下命令进行编译和安装: ``` tar xzf slurm-<version>.tar.gz cd slurm-<version> ./configure --prefix=/usr/local/slurm make sudo make install ``` 4. 在Slurm安装完成后,需要对系统进行一些配置。可以使用以下命令创建必要的目录: ``` sudo mkdir /var/spool/slurmctld sudo mkdir /var/spool/slurmd sudo chown slurm: /var/spool/slurmctld sudo chown slurm: /var/spool/slurmd ``` 5. 然后,编辑Slurm的配置文件。可以使用以下命令打开配置文件: ``` sudo vi /usr/local/slurm/etc/slurm.conf ``` 在配置文件中,可以设置集群的参数,例如节点数量、分区、资源分配策略等。 6. 最后,启动和配置Slurm服务。可以使用以下命令启动Slurm服务: ``` sudo systemctl enable munge sudo systemctl start munge sudo systemctl enable slurmd sudo systemctl start slurmd sudo systemctl enable slurmctld sudo systemctl start slurmctld ``` 以上命令将启动Munge认证服务、Slurmd节点管理服务和Slurmctld集中控制服务。 完成这些步骤后,SlurmCentOS上的安装就完成了。接下来,您可以使用Slurm的命令和功能来管理和调度集群资源进行高性能计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值