我的编程空间,编程开发者的网络收藏夹
学习永远不晚

CentOS中如何部署Slurm

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

CentOS中如何部署Slurm

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

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

CentOS中如何部署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 = MariaDBbaseurl = http://yum.mariadb.org/10.2/centos7-amd64gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1
2.1.2 下载,解压与安装

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

CentOS中如何部署Slurm
img
# 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: 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# 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.confLogFile=/var/log/slurm/slurmdbd.logDbdHost=localhostDbdPort=6819slurmUser=slurmStorageHost=localhostStoragePass=!QAZ2wsx3edcStorageLoc=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=localhostAccountingStoragePort=3306AccountingStoragePass=!QAZ2wsx3edcAccountingStorageUser=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管理的工作、分区以及节点的状态信息。

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

CentOS中如何部署Slurm

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

CentOS中如何部署Slurm

本篇内容介绍了“CentOS中如何部署Slurm”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SLURM 是一种可用于大型计算节点集群的高度
2023-06-27

CentOS如何部署

这篇文章将为大家详细讲解有关CentOS如何部署,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.CentOS部署1.1 win7/win10 装VM 1.2 win7-->linux 鼠标左键 鼠标会进
2023-06-02

CentOS服务器如何部署

这篇文章主要为大家展示了“CentOS服务器如何部署”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CentOS服务器如何部署”这篇文章吧。一、虚拟机CentOS系统安装部署:二、虚拟机CentO
2023-06-03

centos如何部署php环境

这篇“centos如何部署php环境”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“centos如何部署php环境”文章吧。c
2023-07-04

Linux CentOS下docker如何部署Asp.Net6 Core

小编给大家分享一下Linux CentOS下docker如何部署Asp.Net6 Core,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、项目设置设置docke
2023-06-22

如何在CentOS 6.3系统中部署一个CHEF环境

今天就跟大家聊聊有关如何在CentOS 6.3系统中部署一个CHEF环境,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。安装前的准备:(chef.example.com,node1.e
2023-06-10

CentOS中怎么部署静态网站

要在CentOS中部署静态网站,可以按照以下步骤进行操作:确保你的CentOS系统已经安装了Apache Web服务器。如果没有安装,可以使用以下命令安装:sudo yum install httpd启动Apache服务器,并设置为开机启动
CentOS中怎么部署静态网站
2024-04-19

Centos中怎么使用kubeadm部署kubernetes1.18

这篇“Centos中怎么使用kubeadm部署kubernetes1.18”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Ce
2023-06-28

CentOS下PostgreSQL数据库如何部署与维护

在CentOS下部署和维护PostgreSQL数据库需要按照以下步骤进行操作:1、安装PostgreSQL:首先需要安装PostgreSQL数据库软件。可以使用以下命令在CentOS上安装PostgreSQL:sudo yum inst
CentOS下PostgreSQL数据库如何部署与维护
2024-05-09

Docker中如何部署k8s

这篇文章主要介绍Docker中如何部署k8s,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!拓扑结构1master + 2minionk8s-master 192.168.0.201 masterk8s-node1 1
2023-06-07

Centos7中如何部署pssh

这篇文章主要介绍“Centos7中如何部署pssh”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Centos7中如何部署pssh”文章能帮助大家解决问题。pssh是python写的可以并发在多台机器
2023-06-27

Azure中如何部署Kubernetes

这篇文章将为大家详细讲解有关Azure中如何部署Kubernetes,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Azure 命令行接口 (CLI) 是用于管理 Azure 资源的 Microsoft 跨
2023-06-27

Kubernetes中如何部署Spark

小编给大家分享一下Kubernetes中如何部署Spark,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Spark是新一代分布式内存计算框架,Apache开源的顶
2023-06-27

如何进行centos卸载系统与环境部署

这篇文章将为大家详细讲解有关如何进行centos卸载系统与环境部署,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。centos卸载系统已被广泛应用但是也在不断的更新。centos安装好之后ce
2023-06-16

CentOS中怎么部署zeromq消息队列

这篇文章主要介绍“CentOS中怎么部署zeromq消息队列”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CentOS中怎么部署zeromq消息队列”文章能帮助大家解决问题。zeromq专注于消息通
2023-06-27

CentOS中怎么部署Squid代理服务

这篇文章主要介绍“CentOS中怎么部署Squid代理服务”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CentOS中怎么部署Squid代理服务”文章能帮助大家解决问题。Squid cache(简称
2023-06-27

Kubernetes中如何部署Traefik Ingress

这篇文章给大家分享的是有关Kubernetes中如何部署Traefik Ingress的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一:前言1.到目前为止 Kubernetes 暴露服务的有三种方式,分别为 Lo
2023-06-04

如何在Laravel中部署vue

这篇文章主要介绍“如何在Laravel中部署vue”,在日常操作中,相信很多人在如何在Laravel中部署vue问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何在Laravel中部署vue”的疑惑有所帮助!
2023-06-25

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录