1.概述

本博客通过VMware workstation创建了虚拟机console,然后在console内部创建了8台kvm虚拟机,使用这8台虚拟机作为集群,来部署配置和测试slurm任务调度系统。
console虚拟机配置为:4核心CPU,8G内存,20G系统盘安装OS,20G数据盘挂载到/opt,10G数据盘挂载到/home,一块NAT网卡模拟带外,一块Host only网卡模拟专用内网

在使用console部署8台kvm虚拟机之后,需要做一下操作:

  • 部署console到node11-18的免密码登陆,通过sshpass+shell实现
  • 部署console为NTP服务器,同步node11-18的时间到console
  • 部署console为LDAP服务器,能够实现全局用户认证
  • 格式化数据盘,将/opt和/home通过NFS共享给node11-18

注:
上面这部分内容涉及较多,如VMware workstation部署虚拟机console,console虚拟机部署kvm虚拟机,创建并挂载NFS全局文件系统,console到多节点的免密码登陆,NTP和LDAP服务部署等,这里不做一一详述。

2.同步时间节点

将console部署为NTP服务器之后,通过定时执行同步任务来保证所有节点时间一致:
pdsh -w node[11-18] ntpdate 192.168.80.8

将该命令写入定时任务:
crontab -e

*/5 * * * * pdsh -w node[11-18] "ntpdate 192.168.80.8; hwclock --systohc"

3.下载软件包

munged-0.5.12
slurm-16.05.3(该软件包因为安全漏洞问题,已经无法下载,可下载其他版本)

4.编译安装munge-0.5.12

1.创建安装目录:
mkdir -p /opt/munge/munge-0.5.12
2.解压:
unzip munge-munge-0.5.12.zip
3.编译:
cd munge-munge-0.5.12
./configure --prefix=/opt/munge/munge-0.5.12 --sysconfdir=/opt/munge/munge-0.5.12/etc --localstatedir=/var
make && make install
注:
此时编译报错:

checking which cryptographic library to use... failed
configure: error: unable to locate cryptographic library

解决如下:
yum -y install openssl openssl-devel

此时可以在/opt/munge/munge-0.5.12下,查看到munge的各类目录

5.配置munge

我希望munged在运行的时候,以root用户的身份运行(默认是munge用户),此时需要修改配置。
1.创建munge.key,并修改权限:
cd /opt/munge/munge-0.5.12/etc
echo "helloeveryone,I'ammungekeyonkvmcluster." >munge.key && chmod 600 munge.key

这里munge.key可以手动创建,但是必须保证其内容在32个字节以上,且文件权限为600方可

2.在所有需要部署slurmd的节点上创建munged运行需要的目录
pdsh -w node[11-18] mkdir -p /var/{log,run,lib}/munge

假如这三个目录为全局目录,即安装在/opt上的话,则节点不能够同时启动munged

3.修改munge运行的进程用户为root
cd /opt/munge/munge-0.5.12/etc/rc.d/init.d
vim munge编辑内容如下:

prefix="/opt/munge/munge-0.5.12"
exec_prefix="${prefix}"
sbindir="${exec_prefix}/sbin"
sysconfdir="/opt/munge/munge-0.5.12/etc"
localstatedir="/var"
SERVICE_NAME="MUNGE"
DAEMON_EXEC="$sbindir/munged"
PIDFILE="$localstatedir/run/munge/munged.pid"
USER="root"
GROUP="root"
VARRUNDIR="$localstatedir/run/munge"

4.修改启动脚本的配置文件
vim /opt/munge/munge-0.5.12/etc/sysconfig/munge,内容如下:

DAEMON_ARGS="--key-file /opt/munge/munge-0.5.12/etc/munge/munge.key --num-threads 1"
USER="root"
GROUP="root"

5.创建添加环境变量的脚本,拷贝到其他节点
vim /etc/profile.d/optenv.sh

#!/bin/bash
export PATH=$PATH:/opt/munge/munge-0.5.12/sinb

拷贝至其他节点:

for i in $(seq 11 18)
doscp /etc/profile.d/optevn.sh node$i:/etc/profile.d/
done

6.节点启动munged
pdsh -w node[11-18] munged
pdsh -w node[11-18] ps -ef|grep munge|grep -v grep

6.编译安装slurm-16.05.3

1.创建安装目录:
mkdir -p /opt/slurm/slurm-16.05.3

2.编译安装

./configure \
--prefix=/opt/slurm/slurm-16.05.3/ \
--sysconfdir=/opt/slurm/slurm-16.05.3/etc
--with-munge=/opt/munge/munge-0.5.12/
--with-mysql_config=xxx

make && make install

3.创建其他所需目录
cd /opt/slurm/slurm-16.05.3 && mkdir etc log state

  • etc:用于放置slurmctld,slurdbd的配置文件
  • log: 用于存放slurmctld,sluedbd的日志文件
  • state:用户存放作业状态的目录

4.创建slurmadmin用户,并修改相应目录权限
chown -R slurmadmin:slurmadmin state && chmod 777 log

7. 配置slurm

  1. 创建slurm.conf,内容如下:
#slurm集群名称
ClusterName=myslurm
#slurm主控制器主机名
ControlMachine=node11
#slurm从控制器主机名
BackupController=node12
#slurm进程用户
SlurmUser=slurmadmin
#slurmd节点守护进程用户
SlurmdUser=root
#slurmctld控制器端口
SlurmctldPort=6817
#slurmd节点守护进程端口
SlurmdPort=6818
#slurm通信认证
AuthType=auth/munge
SwitchType=switch/none
MpiDefault=none
#slurm任务状态保存目录
StateSaveLocation=/opt/slurm/slurm-16.05.3/state
#slurmd守护进程日志保存
SlurmdSpoolDir=/var/log/slurmd
#slurmctld的pid存放
SlurmctldPidFile=/var/run/slurmctld.pid
#slurmd守护进程的pid文件存放
SlurmdPidFile=/var/run/slurmd.pid
TaskPlugin=task/cgroup
ProctrackType=proctrack/cgroup
#第一个jobid号
FirstJobId=1000
#最大的jobid号
MaxJobId=50000
ReturnToService=2
SlurmctldTimeout=300
SlurmdTimeout=300
TCPTimeout=10
InactiveLimit=0
MinJobAge=300
KillWait=30
Waittime=0
SchedulerType=sched/backfill
SelectType=select/linear
FastSchedule=1
DebugFlags=NO_CONF_HASH
SlurmctldDebug=3
#slurmctld控制器守护进程的日志存放,全局文件系统
SlurmctldLogFile=/opt/slurm/slurm-16.05.3/log/slurmctldlogfile
SlurmdDebug=3
#slurmd节点守护进程的日志文件,节点本地
SlurmdLogFile=/var/log/slurmdlogfile
#slurm运行插件的路径
PluginDir=/opt/slurm/slurm-16.05.3/lib:/opt/slurm/slurm-16.05.3/lib/slurm
#jod限制类型
JobAcctGatherType=jobacct_gather/cgroup
#计费等配置
#采用slurmdbd守护进程进行存储
AccountingStorageType=accounting_storage/slurmdbd
#运行slurmdbd进程的节点主机名
AccountingStorageHost=node11
#slurmdbd运行节点的端口
AccountingStoragePort=6819
AccountingStorageEnforce=limints,qos
#account存放的库
AccountingStorageLoc=slurm_acct_db
#运行slurmdbd的数据库用户
AccountingStorageUser=slurmadmin
AccountingStoragePass=/var/run/munge/munge.socket.2
AcctGatherNodeFreq=180
#资源配置,包括节点配置,队列(分区)配置等
NodeName=node[11-18] CPUs=4 RealMemory=300 sockets=2 CoresPerSocket=2 ThreadsPerCore=1 State=UNKNOWN
PartitionName=q_x86_1 Nodes=node[11-18] MaxTime=INFINITE State=UP DEFAULT=YES AllowAccounts=ALL

2.创建slurmdbd.conf,内容如下:

PurgeEventAfter=1month
PurgeJobAfter=36month
PurgeResvAfter=1month
PurgeStepAfter=1month
PurgeSuspendAfter=1month
DebugLevel=debug5
LogFile=/opt/slurm/slurm-16.05.3/log/slurmdbd.log
PidFile=/var/run/slurmdbd.pid
AuthType=auth/munge
AuthInfo=/var/run/munge/munge.socket.2
DbdHost=node11
DbdPort=6819
SlurmUser=slurmadmin
StorageType=accounting_storage/mysql
StorageHost=node11
StorageLoc=slurm_acct_db
StoragePort=3306
StorageUser=slurmadmin
StoragePass=liwanliang

3.创建cgroup.conf,内容如下:

#CgroupReleaseAgentDir=="/etc/slurm/cgroup"
CgroupAutomount=yes
CgroupMountpoint=/cgroup
CgroupReleaseAgentDir=="/tmp/slurm"
ConstrainCores=yes
TaskAffinity=no
ConstrainRAMSpace=no
MaxRAMPercent=98
AllowedRAMSpace=96

8.配置MySQL数据库环境

根据配置文件,需要在node11上部署MySQL服务器
1.安装MySQL
yum -y install mysql mysql-server mysql-client mysql-libs
2.启动MySQL
service mysqld start && chkconfig mysqld on
3.配置MySQL

use mysql;
delete from user where user = ' ' and host = 'localhost' ;
delete from user where user = ' ' and host = 'node11';
grant all privileges on *.* to 'root'@'localhost' identified by 'liwanliag';
grant all privileges on *.* to 'root'@'node11' identified by 'liwanliag';
grant all privileges on *.* to 'root'@'127.0.0.1' identified by 'liwanliag';
grant all privileges on *.* to 'root'@'192.168.80.11' identified by 'liwanliag';
create database slurm_acct_db;
grant all privileges on slurm_acct_db.* to 'slurmadmin'@'node11' identified by 'liwanliang';
flush privileges;

9.启动slurm集群

1.校对节点时间
2.启动munged进程
3.启动slurmdbd进程
ssh node11 slurmdbd
4.启动slurmctld进程
ssh node11 slurmctld
5.添加集群
sacctmgr add cluster myslurm
6.启动节点slurmd
pdsh -w node[11-18] slurmd
7.测试
sinfo
8.测试提交
srun -n 32 hostname

10.总结

本博客中,只是对slurm部署做了最基本的配置和测试。
在部署过程中,遇到两个比较棘手的问题:

1.munge编译过程中的没有安装mysql-devel环境,导致在编译slurm的时候不能够编译相应的插件。
此时通过yum -y install msyql-devel安装依赖环境,然后重新编译解决 。
2.在所有环境部署好之后,通过sinfo发现有6个节点总是drain状态。
这个状态表示节点通过slurmd获取的节点配置和配置文件中的不相同,尤其是节点的CPU的参数。最后通过重新配置参数,然后清空state目录下的所有文件,同事修改log目录权限为777 解决。

在下一篇博客中,将会对slurm一些具体的功能做测试

转载于:https://www.cnblogs.com/liwanliangblog/p/8051853.html

slurm任务调度系统部署和测试(一)相关推荐

  1. slurm安装配置_Slurm任务调度系统部署和测试(源码)(1)

    1. 概述 slurm任务调度系统,主要应用在HPC集群资源管理和任务调度.具体信息参见slurm官方网站:https://slurm.schedmd.com/ 部署Slurm任务调度系统,需要部署N ...

  2. LDAP-openldap服务部署和测试(YUM安装)

    1. 概述 2. 服务端部署过程 2.1 软件包说明 2.2 部署过程 2.3 配置过程 3. 测试 4. 生成LDIF格式文件 4.1 安装migrationtools工具 4.2 用migrati ...

  3. 【Linux部署】Spring Boot 项目部署在Linux环境下的Docker容器内举例【任务调度系统 xxl-job 任务调度中心】(手动版)

    1.将SpringBoot项目打jar包 这里打包的是xxl-job任务调度系统的调度器. 2.编写Dockerfile FROM java:8 VOLUME /tmp ADD xxl-job-adm ...

  4. java分布式任务调度 唯品会,分布式定时任务调度系统Saturn安装部署

    简介 Saturn (定时任务调度系统)是唯品会自主研发的分布式的定时任务的调度平台,目标是取代传统的Linux Cron/Spring Batch Job/Quartz的方式,做到全域统一配置,统一 ...

  5. 分布式定时任务调度系统 Saturn 安装部署

    一.简介 Saturn (定时任务调度系统)是唯品会自主研发的分布式的定时任务的调度平台,目标是取代传统的Linux Cron/Spring Batch Job/Quartz的方式,做到全域统一配置, ...

  6. 渗透测试神器--Kali系统部署

    一.为什么渗透测试使用 Kali Linux 系统? Kali linux 系统包含了 600 多款渗透测试工具,而且这些工具本身就已经内置于系统中,不需要开 发人员开发,直接就可以使用. Kali ...

  7. 工作流任务调度系统:Apache DolphinScheduler

    1 概述 Apache DolphinScheduler(目前处在孵化阶段)是一个分布式.去中心化.易扩展的可视化DAG工作流任务调度系统,其致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数 ...

  8. 蚂蚁调度AntJob-分布式任务调度系统

    分布式任务调度系统,纯NET打造的重量级大数据实时计算平台,万亿级调度经验积累!面向中小企业大数据分析场景. 开源地址:https://github.com/NewLifeX/AntJob 使用教程: ...

  9. 赫拉(hera)分布式任务调度系统之项目启动(二)

    文章目录 赫拉 创建表 打包部署 测试 TIPS 加入群聊 赫拉 大数据平台,随着业务发展,每天承载着成千上万的ETL任务调度,这些任务集中在hive,shell脚本调度.怎么样让大量的ETL任务准确 ...

最新文章

  1. PHP curl 模拟登录
  2. IntelliJ IDEA License Server 本地搭建教程
  3. 腾讯敏捷研发协作平台TAPD荣获CCF科学技术奖
  4. 气温常年在25度的地方_最低调的海滨城市,物价便宜,常年25度,沙滩细白,不输三亚!...
  5. java中矩阵怎么打印_在Java编程中打印二维数组或矩阵
  6. HttpClientFactory 使用说明 及 对 HttpClient 的回顾和对比
  7. c++ || && 逻辑短路问题
  8. json tcl_确定TCL中变量的类型
  9. 使用SSMS将excel导入到sqlserver
  10. Tapestry 教程(四)探索项目结构
  11. ikbc poker2
  12. math.floor java_Java Math floor、ceil、rint 及 round 用法
  13. c++中整形输入逗号_Excel 2013中单元格添加下拉列表的方法
  14. 二维平面最短距离(分治)
  15. PCL点云库(Point Cloud Library)简介
  16. NAS 网络错误0x8007003B的解决方案
  17. java学习之路之javaSE基础1
  18. Trojan客户端使用教程
  19. 最新gcc下载和linux环境变量设置
  20. js和CSS实现图片旋转

热门文章

  1. AI 风投的下一个拐点是进还是退?
  2. 工业4.0,人工智能狂潮正在席卷制造业 | 500强系列报告
  3. 实时计算框架 Flink 新方向:打造「大数据+AI」 未来更多可能
  4. 「SAP技术」SAP MM 委外加工采购流程里副产品的收货
  5. Caffe 作者贾扬清:我们应该跳出框架的桎梏,往更广泛的领域寻找价值
  6. P3项目全球模板狗血设计之三 --- 发货到成本中心需要创建预留单
  7. 【十大经典数据挖掘算法】k-means
  8. SAP MM PO Item Category 内部code的用处?
  9. 对于量子计算来说,99%的准确度足够吗?
  10. 70页论文,图灵奖得主Yoshua Bengio一作:「生成流网络」拓展深度学习领域