slurm任务调度系统,主要应用在HPC集群资源管理和任务调度。具体信息参见slurm官方网站:https://slurm.schedmd.com/
部署Slurm任务调度系统,须要部署NTP内网时间同步服务器,LDAP全局认证服务器,Mysql数据库服务器
本篇博客主要记录如何部署和使用slurm任务调度系统。php
节点主机名 | 操做系统 | 主机地址 | 主机角色 |
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数据库服务器 |
本篇博客的节点,均有已经部署好NTP和LDAP服务客户端的node11克隆,减小部署过程的繁琐。
KVM克隆虚拟机,参见博客《KVM虚拟机管理——虚拟机克隆.md》
博客园地址:http://www.javashuo.com/article/p-gkjhbjtb-cu.html
根据博客内容指导,很容易克隆出其余几台虚拟机,提供slurm任务调度环境部署和测试。html
笔记内链:《NTP服务部署和测试.md》
博客园地址:http://www.javashuo.com/article/p-mbmlctky-es.html
NTP时间服务器部署完成以后,须要同步各个节点的时间。node
注:对于节点的NTP同步,能够采用pdsh并行工具完成
pdsh并行工具安装和使用,参见笔记内链:《并行管理工具——pdsh.md》
博客园地址:http://www.javashuo.com/article/p-citiedta-hw.htmlmysql
笔记内链:《LDAP-openldap服务部署和测试(YUM安装).md》
博客园地址:http://www.javashuo.com/article/p-kvgtemmd-km.htmllinux
笔记内链:《MUNGE服务部署和测试.md》
博客园地址:http://www.javashuo.com/article/p-yizvibij-ce.htmlc++
本篇博客在node15上安装MySQL数据库
笔记内链:《MySQL数据库服务器(YUM)安装.md》
博客园:http://www.javashuo.com/article/p-bjccruua-bu.htmlsql
须要建立slurmadmin全局用户,用于运行slucrmctld和slurmdbd;
slurmd由于负责节点的状态,所以须要root权限,不须要建立;
一样在LDAP中建立slurmadmin用户
参见博客:《LDAP-openldap服务部署和测试(YUM安装).md》
博客园地址:http://www.javashuo.com/article/p-kvgtemmd-km.html数据库
在前面的博客中提到,把虚拟机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"
,对挂载状况进行检查centos
从slurm官方网站下载最新版本slurm,下载地址为:https://www.schedmd.com/downloads.php
本篇博客主要部署两个版本服务器
由于规划在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 -y install libgnomeui-devel readline-devel curl-devel
./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
make
进行编译,执行命令make install
进行安装mkdir etc log state
; chmod 777 log
cp slurm.conf.example cgroup.conf.example slurmdbd.conf.example /usr/local/globle/softs/slurm/16.05.3/etc/
详细的配置文件参数详解,参见官方提供的文档:https://slurm.schedmd.com/slurm.conf.html
编辑slurm集群主配置文件:/usr/local/globle/softs/slurm/16.05.3/etc/slurm.conf
笔记内链:《slurm.conf系统初始配置.md》
博客园地址:http://www.javashuo.com/article/p-fuzickzk-dd.html
编辑slurm集群数据库主配置文件:/usr/local/globle/softs/slurm/16.05.3/etc/slurmdbd.conf
笔记内链:《slurmdbd.conf系统初始配置.md》
博客园地址:http://www.javashuo.com/article/p-rrleqszr-kk.html
编辑slurm集群cgroup机制配置文件:/usr/local/globle/softs/slurm/16.05.3/etc/cgroup.conf
笔记内链:《cgroup.conf系统初始配置.md》
博客园地址:http://www.javashuo.com/article/p-xjeusspp-gz.html
本篇博客前面部分已经在虚拟机node15上建立了MySQL数据库。
在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;
在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数据库,验证数据库受权是否正确。
能够采用slurmdbd -vvvvDDDD,进行调试启动,查看是否启动过程当中有无错误。若无错误,能够以绝对路径的方式启动进程。
slurmdbd存在主备节点,node13做为slurmdbd主节点。若配置文件中未配置slurmdbd的备份节点,则在node14上没法启动slurmdbd。
如需启动,须要修改配置文件。
注:在线使用过程当中,若是修改了slurmdbd.conf配置,能够经过sacctmgr reconfig从新加载配置文件。前提是配置文件不可以出现错误,不然会形成当前在线的服务over
在启动控制器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集群信息。
在节点node11上,执行命令:slurmctld -vvvvDDDD
,进行调试启动,查看启动过程当中是否存在错误,若无错误,则能够后台启动。
在节点node12上,执行一样的命令,便可启动slurmctld的备份控制器。具体使用和测试,参见《Slurm任务调度系统部署和测试(源码)(2).md》。
注:在线使用过程当中,若是修改了slurmctld.conf配置,能够经过scontrol reconfig从新加载配置文件。前提是配置文件不可以出现错误,不然会形成当前在线的服务over
以下图提示,执行命令:yum -y install gcc gcc-c++ automake autoconf
以下图提示,执行命令:find / -name libpam.so*
,可确认系统中是否存在pam库,而且可以确认路径,而后在configure配置的--with-pam_dir=/lib64
在交互式调式结束后,结束slurmdbd进程。而后直接启动时,从slurmdbd的日志报错以下图所示:
在彻底配置成功以后,节点启动了slurmd,可是经过sinfo看到的节点状态始终为down。同步了节点时间,关闭节点防火墙和selinux均为解决问题。
最后经过查阅官方的FAQ,详细的FAQ地址:https://slurm.schedmd.com/faq.html。最后把slurm.conf中的ReturnToService=0改成ReturnToService=2解决