Slurm任务调度系统部署和测试(源码)(1)

摘要:
KVM克隆虚拟机,请参阅KVM虚拟机管理-虚拟机克隆。md博客公园地址:https://www.cnblogs.com/liwanliangblog/p/9193910.html根据博客内容指南,很容易克隆其他几个虚拟机来提供slurm任务调度环境的部署和测试。
1. 概述
1.1 节点信息
2. 节点准备
3. 部署NTP服务器
4. 部署LDAP服务器
5. 部署Munge认证服务
6. 部署Mysql数据库服务
7. 部署slurm
7.1 创建slurm用户
7.2 挂载全局文件系统
7.3 slurm下载
7.4 编译安装
8. slurm配置
8.1 配置slurm.conf
8.2 配置slurmdbd.conf
8.3 配置cgroup.conf
8.4 配置数据库和测试
8.4.1 node15创建数据库并授权
8.4.2 测试连接
9. slurm启动
9.1 启动数据库存储服务slurmdbd
9.2 注册集群信息
9.3 启动控制器slurmctld
10. 错误及解决
10.1 未安装编译器
10.2 未发现PAM库路径
10.3 启动slurmdbd日志报错
10.4 节点状态DOWN
1. 概述

slurm任务调度系统,主要应用在HPC集群资源管理和任务调度。具体信息参见slurm官方网站:https://slurm.schedmd.com/
部署Slurm任务调度系统,需要部署NTP内网时间同步服务器,LDAP全局认证服务器,Mysql数据库服务器
本篇博客主要记录如何部署和使用slurm任务调度系统。

1.1 节点信息

节点主机名操作系统主机地址主机角色
node11centos6.5_x86_64192.168.10.11主控制器
node12centos6.5_x86_64192.168.10.12备控制器
node13centos6.5_x86_64192.168.10.13数据存储主控制器
node14centos6.5_x86_64192.168.10.14数据存储备控制器
node15centos6.5_x86_64192.168.10.15MySQL数据库服务器
2. 节点准备

本篇博客的节点,均有已经部署好NTP和LDAP服务客户端的node11克隆,减少部署过程的繁琐。
KVM克隆虚拟机,参见博客《KVM虚拟机管理——虚拟机克隆.md
博客园地址:https://www.cnblogs.com/liwanliangblog/p/9193910.html
根据博客内容指导,很容易克隆出其他几台虚拟机,提供slurm任务调度环境部署和测试。

3. 部署NTP服务器

笔记内链:《NTP服务部署和测试.md
博客园地址:https://www.cnblogs.com/liwanliangblog/p/9194004.html
NTP时间服务器部署完成之后,需要同步各个节点的时间。

注:对于节点的NTP同步,可以采用pdsh并行工具完成
pdsh并行工具安装和使用,参见笔记内链:《并行管理工具——pdsh.md
博客园地址:https://www.cnblogs.com/liwanliangblog/p/9194146.html

4. 部署LDAP服务器

笔记内链:《LDAP-openldap服务部署和测试(YUM安装).md
博客园地址:https://www.cnblogs.com/liwanliangblog/p/9193916.html

5. 部署Munge认证服务

笔记内链:《MUNGE服务部署和测试.md
博客园地址:https://www.cnblogs.com/liwanliangblog/p/9194032.html

6. 部署Mysql数据库服务

本篇博客在node15上安装MySQL数据库
笔记内链:《MySQL数据库服务器(YUM)安装.md
博客园:https://www.cnblogs.com/liwanliangblog/p/9194704.html

7. 部署slurm

7.1 创建slurm用户

需要创建slurmadmin全局用户,用于运行slucrmctld和slurmdbd;
slurmd因为负责节点的状态,因此需要root权限,不需要创建;
同样在LDAP中创建slurmadmin用户
参见博客:《LDAP-openldap服务部署和测试(YUM安装).md
博客园地址:https://www.cnblogs.com/liwanliangblog/p/9193916.html

7.2 挂载全局文件系统

在前面的博客中提到,把虚拟机console的/usr/local,作为全局共享目录,通过NFS文件系统实现共享。
在虚拟机console上,需要启动NFS共享。编辑/etc/exports,内容如下图所示:
Slurm任务调度系统部署和测试(源码)(1)第1张
执行命令:exportfs -r,使得配置的内容生效,通过"exportfs"查看配置是否生效
执行命令:pdsh -a "yum -y install nfs-utils rpcbind",安装挂载NFS需要的软件包
执行命令:pdsh -a "service rpcbind start",开启rpcbind服务,否则挂载会报错
执行命令:pdsh -a "mount -t nfs 192.168.10.8:/usr/local /usr/local",对节点进行NFS文件系统挂载
执行命令:pdsh -a "df -h | grep -w local",对挂载情况进行检查

7.3 slurm下载

从slurm官方网站下载最新版本slurm,下载地址为:https://www.schedmd.com/downloads.php
本篇博客主要部署两个版本

  • slurm-16.05.3.tar.gz 该版本已经被官网废弃,本篇博客因为工作需要继续使用
  • slurm-17.11.7.tar.bz2 截至博客更新时的最新版本

7.4 编译安装

因为规划在node15上部署了MySQL数据库(虚拟机console并未部署MySQL),而在编译slurm时,需要使用到mysql_config,因此需要在node15上进行编译
将slurm-16.05.3.tar.gz拷贝至node15,然后解压,编译,安装

  1. 解压
    执行命令:tar -zxvf slurm-16.05.3.tar.gz -C /tmp
  2. YUM安装依赖环境
    执行命令:yum -y install libgnomeui-devel readline-devel curl-devel
  3. 进入目录,配置configure
    执行以下命令:
    ./configure 
    --prefix=/usr/local/globle/softs/slurm/16.05.3 
    --sysconfdir=/usr/local/globle/softs/slurm/16.05.3/etc 
    --localstatedir=/var  
    --enable-pam 
    --enable-memory-leak-debug 
    --enable-front-end --enable-salloc-kill-cmd 
    --enable-simulator 
    --enable-multiple-slurmd 
    --with-pam_dir=/lib64 
    --with-zlib 
    --with-rrdtool 
    --with-mysql_config=/usr/lib64/mysql/ 
    --with-munge=/usr/local/globle/softs/munge/0.5.12/ 
    --with-ssl 
    --with-libcurl    
    注:上述部分--with选项,实际并没有编译。通过查看config.log的WARNING可以确认是否安装。mysql_config指定的是mysql_config的路径,而非文件
  4. 编译安装
    执行命令make进行编译,执行命令make install进行安装
  5. 创建配置文件目录
    上述过程完成后,可以在/usr/local/globle/softs/slurm下查看已经安装的目录,但是此时该目录下并没有etc,log,state等目录,因此需要手动创建
    执行命令:mkdir etc log state
    修改目录属性:chmod 777 log
  6. 拷贝配置文件模板
    在源码目录下的etc目录中,存放着配置文件的模板文件
    执行命令:cp slurm.conf.example cgroup.conf.example slurmdbd.conf.example /usr/local/globle/softs/slurm/16.05.3/etc/
8. slurm配置

详细的配置文件参数详解,参见官方提供的文档:https://slurm.schedmd.com/slurm.conf.html

8.1 配置slurm.conf

编辑slurm集群主配置文件:/usr/local/globle/softs/slurm/16.05.3/etc/slurm.conf
笔记内链:《slurm.conf系统初始配置.md
博客园地址:https://www.cnblogs.com/liwanliangblog/p/9201624.html

8.2 配置slurmdbd.conf

编辑slurm集群数据库主配置文件:/usr/local/globle/softs/slurm/16.05.3/etc/slurmdbd.conf
笔记内链:《slurmdbd.conf系统初始配置.md
博客园地址:https://www.cnblogs.com/liwanliangblog/p/9201634.html

8.3 配置cgroup.conf

编辑slurm集群cgroup机制配置文件:/usr/local/globle/softs/slurm/16.05.3/etc/cgroup.conf
笔记内链:《cgroup.conf系统初始配置.md
博客园地址:https://www.cnblogs.com/liwanliangblog/p/9201639.html

8.4 配置数据库和测试

本篇博客前面部分已经在虚拟机node15上创建了MySQL数据库。

8.4.1 node15创建数据库并授权

在node15上,执行:mysql -uroot -p,输入密码进入数据库系统
创建数据库:create database slurm_acct_db;
授权node13访问:grant all privileges on slurm_acct_db.* to 'slurmadmin'@'192.168.80.13' identified by 'liwanliang';
授权node14访问:grant all privileges on slurm_acct_db.* to 'slurmadmin'@'192.168.80.14' identified by 'liwanliang';
刷新授权表:flush privileges;

8.4.2 测试连接

在node13和node14节点,分别进行MySQL数据库的连接。这要求node13和node14必须安装了mysql软件包。
在node13和node14上,分别执行:rpm - qa |grep mysql查看是否安装mysql软件包。若未安装,执行:yum -y install mysql安装
在node14和node14上,分别执行:mysql -h 192.168.80.15 -uslurmadmin -p,输入密码进行数据库连接测试。
进入数据库之后,执行:show databases;查看是否存在slurm_acct_db数据库,验证数据库授权是否正确。

9. slurm启动

9.1 启动数据库存储服务slurmdbd

可以采用slurmdbd -vvvvDDDD,进行调试启动,查看是否启动过程中有无错误。若无错误,可以以绝对路径的方式启动进程。
slurmdbd存在主备节点,node13作为slurmdbd主节点。若配置文件中未配置slurmdbd的备份节点,则在node14上无法启动slurmdbd。
如需启动,需要修改配置文件。
注:在线使用过程中,如果修改了slurmdbd.conf配置,可以通过sacctmgr reconfig重新加载配置文件。前提是配置文件不能够出现错误,否则会造成当前在线的服务over

9.2 注册集群信息

在启动控制器slurmctld之前,需要将slurm.conf中配置的slurm集群名称添加到数据库中。
否则会在启动slurmctld时,提示未注册集群。
执行命令:/usr/local/globle/softs/slurm/16.05.3/bin/sacctmgr add cluster myslurm,根据提示输入y即可在slurmdbd中,注册集群名称
验证。执行命令:/usr/local/globle/softs/slurm/16.05.3/bin/sacctmgr show cluster,即可查看当前注册的slurm集群信息。

9.3 启动控制器slurmctld

在节点node11上,执行命令:slurmctld -vvvvDDDD,进行调试启动,查看启动过程中是否存在错误,若无错误,则可以后台启动。
在节点node12上,执行同样的命令,即可启动slurmctld的备份控制器。具体使用和测试,参见《Slurm任务调度系统部署和测试(源码)(2).md》。
注:在线使用过程中,如果修改了slurmctld.conf配置,可以通过scontrol reconfig重新加载配置文件。前提是配置文件不能够出现错误,否则会造成当前在线的服务over

10. 错误及解决

10.1 未安装编译器

如下图提示,执行命令:yum -y install gcc gcc-c++ automake autoconf
Slurm任务调度系统部署和测试(源码)(1)第2张

10.2 未发现PAM库路径

如下图提示,执行命令:find / -name libpam.so*,可确认系统中是否存在pam库,并且能够确认路径,然后在configure配置的--with-pam_dir=/lib64
Slurm任务调度系统部署和测试(源码)(1)第3张

10.3 启动slurmdbd日志报错

在交互式调式结束后,结束slurmdbd进程。然后直接启动时,从slurmdbd的日志报错如下图所示:
Slurm任务调度系统部署和测试(源码)(1)第4张

10.4 节点状态DOWN

在完全配置成功之后,节点启动了slurmd,但是通过sinfo看到的节点状态始终为down。同步了节点时间,关闭节点防火墙和selinux均为解决问题。
最后通过查阅官方的FAQ,详细的FAQ地址:https://slurm.schedmd.com/faq.html。最后把slurm.conf中的ReturnToService=0改为ReturnToService=2解决
Slurm任务调度系统部署和测试(源码)(1)第5张

<wiz_tmp_tag contenteditable="false" style="display: none;">
 

免责声明:文章转载自《Slurm任务调度系统部署和测试(源码)(1)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇柱状图X轴文字显示不全C#中的release和debug模式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

EF基础篇-DB First

EDM entity data model  实体数据模型   Conceptual models 概念模型 Mappings         连接 Storage models    存储模型   Orm object relational mapping 对象关系映射 EF entity framework 是基于ADO.Net的ORM框架,将数据库中...

解决sqlite删除数据后,文件大小不变问题 转载

原文地址:http://blog.csdn.net/yangchun1213/article/details/7656146 说了这么多,没进主题,我的主题是给Sqlite在删除数据后擦屁股。 大家或许发现了,当你在sqlite中删除了大量数据后,数据库文件的大小还是那样,没有变。 就用我的项目来说,3M的数据删除后,sqlite的.db文件依然是...

从微信SDK看ProtoBuffer文件的生成

前言 Protocol Buffers (下面简称PB)是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。它支持多种语言,比如C++,Java,C#,Python,JavaScript等等。目前它的最新版本是3.0.0。与...

Hive 基础

Facebook为了解决海量日志数据的分析而开发了hive,后来开源给了Apache基金会组织。 hive是一种用SQL语句来协助读写、管理存储在HDFS上的大数据集的数据仓库软件。 Hive 特点 1 是基于 Hadoop 的一个数据仓库工具;2 Hive 最大的特点是将 Hive SQL语句转换为 MapReduce、Tez 或者 spark 等任务执...

PHP操作Mysql数据库记录操作函数

简介:这是PHP操作Mysql数据库记录操作函数的详细页面,介绍了和php,有关的知识、技巧、经验,和一些php源码等。 frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=325731' scrolling='no'> 数据库记录操作函数(5个): 1、mysql_fet...

LNMP平台搭建---MySQL安装篇

  在前两篇中,安装了一个基本的Web服务器,但是只能提供静态网页查看,要做成动态网站,就必须要数据库或其他编程语言支持了,这里先介绍MySQL数据库的安装。   MySQL是一个开源的数据库,在互联网行业应用的很广泛,下面来记录一下从源码安装的步骤,当然,MySQL也有其他安装方式,比如,使用yum下载安装rpm包,或者二进制方式安装,如果机器比较多,可...