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 节点信息
节点主机名 | 操作系统 | 主机地址 | 主机角色 |
node11 | centos6.5_x86_64 | 192.168.10.11 | 主控制器 |
node12 | centos6.5_x86_64 | 192.168.10.12 | 备控制器 |
node13 | centos6.5_x86_64 | 192.168.10.13 | 数据存储主控制器 |
node14 | centos6.5_x86_64 | 192.168.10.14 | 数据存储备控制器 |
node15 | centos6.5_x86_64 | 192.168.10.15 | MySQL数据库服务器 |
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,内容如下图所示:
执行命令: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,然后解压,编译,安装
- 解压
执行命令:tar -zxvf slurm-16.05.3.tar.gz -C /tmp
; - YUM安装依赖环境
执行命令:yum -y install libgnomeui-devel readline-devel curl-devel
- 进入目录,配置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的路径,而非文件
- 编译安装
执行命令make
进行编译,执行命令make install
进行安装 - 创建配置文件目录
上述过程完成后,可以在/usr/local/globle/softs/slurm下查看已经安装的目录,但是此时该目录下并没有etc,log,state等目录,因此需要手动创建
执行命令:mkdir etc log state
;
修改目录属性:chmod 777 log
- 拷贝配置文件模板
在源码目录下的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
10.2 未发现PAM库路径
如下图提示,执行命令:find / -name libpam.so*
,可确认系统中是否存在pam库,并且能够确认路径,然后在configure配置的--with-pam_dir=/lib64
10.3 启动slurmdbd日志报错
在交互式调式结束后,结束slurmdbd进程。然后直接启动时,从slurmdbd的日志报错如下图所示:
10.4 节点状态DOWN
在完全配置成功之后,节点启动了slurmd,但是通过sinfo看到的节点状态始终为down。同步了节点时间,关闭节点防火墙和selinux均为解决问题。
最后通过查阅官方的FAQ,详细的FAQ地址:https://slurm.schedmd.com/faq.html。最后把slurm.conf中的ReturnToService=0改为ReturnToService=2解决
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">
Slurm任务调度系统部署和测试(源码)(1)的更多相关文章
- slurm任务调度系统部署和测试(一)
1.概述 本博客通过VMware workstation创建了虚拟机console,然后在console内部创建了8台kvm虚拟机,使用这8台虚拟机作为集群,来部署配置和测试slurm任务调度系统. ...
- slurm-16.05.3任务调度系统部署与测试(1)
1.概述2.同步节点时间3.下载并解压文件4.编译安装munge-0.5.125.配置munge6.编译安装slurm-16.05.37.配置slurm8.配置MySQL数据库环境9.启动slur ...
- checkpoint-BLCR部署和测试(源码)
1. 概述2. 部署过程2.1 源码下载2.2 解压安装2.3 添加库环境2.4 插入内核模块3. 测试3.1 创建测试程序3.2 功能测试4. 参考博客 1. 概述 checkpoint 2. 部署 ...
- Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)
Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码) http://blog.csdn.net/helonsy/article/details/7207497 ...
- IO系列测试源码
//IO系列测试源码(需要自取) using System; using System.CodeDom; using System.Collections.Generic; using System. ...
- 18个示例详解 Spring 事务传播机制(附测试源码)
什么是事务传播机制 事务的传播机制,顾名思义就是多个事务方法之间调用,事务如何在这些方法之间传播. 举个例子,方法 A 是一个事务的方法,方法 A 执行的时候调用了方法 B,此时方法 B 有无事务以及 ...
- 使用Jenkins+Pipline 持构建自动化部署之安卓源码打包、测试、邮件通知
一.引言 Jenkins 2.x的精髓是Pipeline as Code,那为什么要用Pipeline呢?jenkins1.0也能实现自动化构建,但Pipeline能够将以前project中的配置信息 ...
- 使用Jenkins+Blue Ocean 持构建自动化部署之安卓源码打包、测试、邮件通知
什么是BlueOcean? BlueOcean重新考虑了Jenkins的用户体验.BlueOcean由Jenkins Pipeline设计,但仍然兼容自由式工作,减少了团队成员的混乱,增加了清晰度. ...
- 一个简单的IM系统(Demo附源码)-- ESFramework 4.0 快速上手(08)
前面的文章已经介绍完了基于ESFramework/ESPlus进行二次开发的所有要点,现在,我们可以开始小试牛刀了. 本文将介绍使用ESFramework的Rapid引擎开发的两个最简单的Demo,E ...
随机推荐
- HTTP请求行、请求头、请求体详解(转)
转自 https://blog.csdn.net/u010256388/article/details/68491509/ HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+ ...
- table表格(笔记)
<table class="table table-hover2 pick_carTable"> <thead> <tr class="bl ...
- 5.2Python函数(二)
目录 目录 前言 (一)偏函数 ==1.说明== ==2.原代码== ==3.显示效果== (二)高阶函数 ==1.说明== ==2.源代码== ==3.运行效果== (三)返回值函数 ==1.说明= ...
- Linux 小知识翻译 - 「架构」(arch)
这次,聊聊「架构」这个术语. 在PC相关的文档中,是不是经常看到「x86架构」这个短句.但是对于这句话,是不是总感到有种似懂非懂的感觉. 架构的英语是「architecture」.这里面有「建筑」,「 ...
- NOIP2018 AFO记
仿佛"距NOIP2018还剩30天"的倒计时还在昨天,没想到这一天来的这么快. 考前在机房嘻嘻哈哈打打闹闹,开玩笑说道"我要AFO了",心里暗暗发誓做好自己,不 ...
- C++添加热键和捕获组合键
一.热键注册 步骤一:声明一个全局量int hotkeyId=1: 步骤二:窗体创建的时候注册: int result= RegisterHotKey(this->GetHWND(), hotk ...
- df 与 du 已使用空间不一致的原因及解决办法
通过 df -Th 查看 /var 目录使用了78%, 当登录到/var 目录,du -sh 实际使用112G 分析原因:应该是被删掉的文件 没被真正释放 解决办法: 1.lsof | grep de ...
- 2017-2018-2 20155314《网络对抗技术》Exp6 信息搜集与漏洞扫描
2017-2018-2 20155314<网络对抗技术>Exp6 信息搜集与漏洞扫描 目录 实验目标 实验内容 实验环境 基础问题回答 预备知识 实验步骤 1 信息搜集 1.1 外围信息搜 ...
- ucml选项卡
当业务视图组件VC并排摆放时就会形成选项卡,本章介绍选项卡有关的操作函数和事件. 页面中有三个对象:TabStrip,Panel和Tab,TabStrip含Panel对象和Tab对象.业务单元BPO没 ...
- shell编程之测试和判断
一.测试 程序运行中经常需要根据实际情况来运行特定的命令或代码段.比如判断某个文件或目录是否存在,如果文件或目录不存在,可能首先创建文件或目录.举例说,要判断文件/var/log/mlocate文件是 ...