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,然后解压,编译,安装

  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

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)的更多相关文章

  1. slurm任务调度系统部署和测试(一)

    1.概述 本博客通过VMware workstation创建了虚拟机console,然后在console内部创建了8台kvm虚拟机,使用这8台虚拟机作为集群,来部署配置和测试slurm任务调度系统. ...

  2. slurm-16.05.3任务调度系统部署与测试(1)

      1.概述2.同步节点时间3.下载并解压文件4.编译安装munge-0.5.125.配置munge6.编译安装slurm-16.05.37.配置slurm8.配置MySQL数据库环境9.启动slur ...

  3. checkpoint-BLCR部署和测试(源码)

    1. 概述2. 部署过程2.1 源码下载2.2 解压安装2.3 添加库环境2.4 插入内核模块3. 测试3.1 创建测试程序3.2 功能测试4. 参考博客 1. 概述 checkpoint 2. 部署 ...

  4. Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)

    Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码) http://blog.csdn.net/helonsy/article/details/7207497 ...

  5. IO系列测试源码

    //IO系列测试源码(需要自取) using System; using System.CodeDom; using System.Collections.Generic; using System. ...

  6. 18个示例详解 Spring 事务传播机制(附测试源码)

    什么是事务传播机制 事务的传播机制,顾名思义就是多个事务方法之间调用,事务如何在这些方法之间传播. 举个例子,方法 A 是一个事务的方法,方法 A 执行的时候调用了方法 B,此时方法 B 有无事务以及 ...

  7. 使用Jenkins+Pipline 持构建自动化部署之安卓源码打包、测试、邮件通知

    一.引言 Jenkins 2.x的精髓是Pipeline as Code,那为什么要用Pipeline呢?jenkins1.0也能实现自动化构建,但Pipeline能够将以前project中的配置信息 ...

  8. 使用Jenkins+Blue Ocean 持构建自动化部署之安卓源码打包、测试、邮件通知

    什么是BlueOcean? BlueOcean重新考虑了Jenkins的用户体验.BlueOcean由Jenkins Pipeline设计,但仍然兼容自由式工作,减少了团队成员的混乱,增加了清晰度. ...

  9. 一个简单的IM系统(Demo附源码)-- ESFramework 4.0 快速上手(08)

    前面的文章已经介绍完了基于ESFramework/ESPlus进行二次开发的所有要点,现在,我们可以开始小试牛刀了. 本文将介绍使用ESFramework的Rapid引擎开发的两个最简单的Demo,E ...

随机推荐

  1. HTTP请求行、请求头、请求体详解(转)

    转自 https://blog.csdn.net/u010256388/article/details/68491509/     HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+ ...

  2. table表格(笔记)

    <table class="table table-hover2 pick_carTable"> <thead> <tr class="bl ...

  3. 5.2Python函数(二)

    目录 目录 前言 (一)偏函数 ==1.说明== ==2.原代码== ==3.显示效果== (二)高阶函数 ==1.说明== ==2.源代码== ==3.运行效果== (三)返回值函数 ==1.说明= ...

  4. Linux 小知识翻译 - 「架构」(arch)

    这次,聊聊「架构」这个术语. 在PC相关的文档中,是不是经常看到「x86架构」这个短句.但是对于这句话,是不是总感到有种似懂非懂的感觉. 架构的英语是「architecture」.这里面有「建筑」,「 ...

  5. NOIP2018 AFO记

    仿佛"距NOIP2018还剩30天"的倒计时还在昨天,没想到这一天来的这么快. 考前在机房嘻嘻哈哈打打闹闹,开玩笑说道"我要AFO了",心里暗暗发誓做好自己,不 ...

  6. C++添加热键和捕获组合键

    一.热键注册 步骤一:声明一个全局量int hotkeyId=1: 步骤二:窗体创建的时候注册: int result= RegisterHotKey(this->GetHWND(), hotk ...

  7. df 与 du 已使用空间不一致的原因及解决办法

    通过 df -Th 查看 /var 目录使用了78%, 当登录到/var 目录,du -sh 实际使用112G 分析原因:应该是被删掉的文件 没被真正释放 解决办法: 1.lsof | grep de ...

  8. 2017-2018-2 20155314《网络对抗技术》Exp6 信息搜集与漏洞扫描

    2017-2018-2 20155314<网络对抗技术>Exp6 信息搜集与漏洞扫描 目录 实验目标 实验内容 实验环境 基础问题回答 预备知识 实验步骤 1 信息搜集 1.1 外围信息搜 ...

  9. ucml选项卡

    当业务视图组件VC并排摆放时就会形成选项卡,本章介绍选项卡有关的操作函数和事件. 页面中有三个对象:TabStrip,Panel和Tab,TabStrip含Panel对象和Tab对象.业务单元BPO没 ...

  10. shell编程之测试和判断

    一.测试 程序运行中经常需要根据实际情况来运行特定的命令或代码段.比如判断某个文件或目录是否存在,如果文件或目录不存在,可能首先创建文件或目录.举例说,要判断文件/var/log/mlocate文件是 ...