LDAP认证下的Slurm作业调度(编译安装)

目的:搭建由LDAP作为身份认证,Slurm作为作业调度系统的集群 本篇文章将全部使用源码编译

前提

1.准备两台Centos7.9虚拟机
2.关闭防火墙 firewalld seliinux Networkmanager
3.配置IP地址 node11:192.168.234.201 node12:192168.234.202
4.配置SSH互信
5.配置时间同步
6.配置NFS服务 .201作为共享文件服务器且共享文件夹为/opt/hpc/slurm
7.配置LDAP服务 .202作为LDAP服务器 .201作为LDAP客户机
8.使用ldap添加munge rmadmin用户
9.自己准备软件包/opt/munge-munge-0.5.15.tar.gz  /opt/slurm-23.02.5.tar.bz2 
10.安装好mariadb 为的是/usr/lib64/mysql/mysql_config文件(必须要有,并且在这个路径下的才可以用)

注意:NFS是为了在配置好Slurm后,方便移植, LDAP服务器是为了提供双方的统一用户身份 且以上内容都已写入博客,可以参考

munge:https://github.com/dun/munge/releases/tag/munge-0.5.15
Slurm:https://www.schedmd.com/downloads.php
node11:nfs+sssd+slurmctld+slurmdbd+mariadb
node12:ldap+slurmd

1.配置Slurm服务端

1.1 Munge编译安装

1.1.1 安装依赖并且做编译前准备

yum -y install openssl-devel
cd /opt
tar -zxvf munge-munge-0.5.15.tar.gz
cd munge-munge-0.5.15
./bootstrap (这条命令只有高版本需要目的是解压出./configure文件)

1.1.2 准备好编译脚本并执行

  1. vim mchen_configure.sh
#!/bin/bash
INSTALL=/opt/hpc/munge/0.5.15
./configure --prefix=${INSTALL} --sysconfdir=${INSTALL}/etc --localstatedir=/var
  1. chmod u+x mchen_configure.sh
  2. ./mchen_configure.sh && make && make install

1.1.3 进行配置

  1. 创建密钥 cd /opt/hpc/munge/0.5.15/etc/munge/; ../../sbin/mungekey
    执行sbin/mungekey文件 生成密钥 并把密钥放到 etc/munge下
    并且服务端与客户端的密钥文件要相同才行 即把服务端的密钥传给客户端

  2. 更改所有者 chown -R munge.munge /opt/hpc/munge

  3. 最后的配置与测试

mkdir -p /var/{log,lib,run}/munge
chmod 700 /var/log/munge;chmod 711 /var/lib/munge;chmod 755 /var/run/munge
chown -R munge.munge /var/{log,lib,run}/munge
//将munge服务添加到路径中 并开启
cp src/etc/munge.systemd.service
/usr/lib/systemd/system/munge.service
systemctl daemon-reload
systemctl start munge
systemctl enable munge

//将Munge命令添加到路径中 并测试
echo "export PATH=$PATH:/opt/hpc/munge/0.5.15/bin:/opt/hpc/munge/0.5.15/sbin">> /etc/profile.d/munge.sh
source /etc/profile
munge -n

效果:
在这里插入图片描述

1.2 配置Slurm服务端

1.2.1 安装依赖并且编译前准备

#安装第三方源
yum -y install epel-release
#安装编译选项的依赖
yum -y install hwloc-devel json-c-devel pam-devel numactl-devel libyaml-devel jansson-devel freeipmi-devel rrdtool-devel libcurl-devel readline-devel lua-devel gtk2-devel lz4-devel mariadb-devel man2html perl-deve

tar -jxf /opt/slurm-23.02.5.tar.bz2

1.2.2编译安装脚本准备

  1. vim schen_configure.sh
#!/bin/bash
SLURM_VERSION="23.02.5"
SLURM_INSTALL_PATH=/opt/hpc/slurm/${SLURM_VERSION}
./configure \
--prefix=${SLURM_INSTALL_PATH} \
--sysconfdir=${SLURM_INSTALL_PATH}/etc \
--localstatedir=/var \
--mandir=${SLURM_INSTALL_PATH}/man \
--enable-pam \
--enable-load-env-no-login \
--enable-memory-leak-debug \
--enable-salloc-kill-cmd \
--enable-multiple-slurmd \
--with-mysql_config=/usr/lib64/mysql/ \
--with-pam_dir=/usr/lib64 \
--with-munge=/opt/hpc/munge/0.5.15 \


真实环境:
#!/bin/bash
#slurm预编译脚本,cofigure的选项

GLOBALPATH="/mnt/export/hpc/slurm/"
SLURM_VERSION="23.02"
SLURM_INSTALL_PATH=${GLOBALPATH}${SLURM_VERSION}

./configure \
--prefix=${SLURM_INSTALL_PATH} \
--sysconfdir=${SLURM_INSTALL_PATH}/etc \
--localstatedir=/var \
--mandir=${SLURM_INSTALL_PATH}/man \
--enable-pam \
--enable-load-env-no-login \
--enable-memory-leak-debug \
--enable-salloc-kill-cmd \
--enable-multiple-slurmd \
--with-mysql_config=/usr/bin/ \
--with-pam_dir=/usr/lib64 \
--with-munge=/mnt/export/hpc/munge/0.5.15 \
--with-json \
--with-yaml \
--with-lz4 \
--with-hwloc \
--with-freeipmi \
--with-rrdtool \
--with-libcurl \
#--with-hdf5 \
#--with-ucx \
#--without-shared-libslurm \
#--with-ofed=/usr/lib64 \
#--with-netloc \#没法安装
#--with-ucx=/opt/hpc/ucx/1.13.0 \
#--with-pmix=/opt/hpc/pmix/4.1.2:/opt/hpc/pmix/3.2.3 \
#--with-jwt=/usr/local \
#--with-http-parser=/usr/local \

  1. chmod u+x schen_configure.sh
  2. ./schen_configure.sh && make && make install && make install-contrib

1.2.3 配置slurm数据库 在node11上

create database slurm_acct_db_001;
grant all privileges on slurm_acct_db_001.* to ‘slurmdbd’@‘node11’ identified by ‘liwanliang’;

1.2.3 配置slurm

1.2.3.1 配置文件夹与属性

创建需要的目录:mkdir -p /opt/hpc/slurm/23.02.5/{etc,log,state,scripts}
修改目录属组:chown -R rmadmin.rmadmin /opt/hpc/slurm/23.02.5/{etc,log,state,scripts}

1.2.3.2 创建并编写slurm.conf文件

vim /opt/hpc/slurm/23.02.5/etc/slurm.conf
行尾& 可以自行根据需要修改

ClusterName=chen_slurm         &
SlurmctldHost=node11          &
SlurmUser=rmadmin             &
SlurmctldPort=6817
SlurmdPort=6818
AuthType=auth/munge
StateSaveLocation=/opt/hpc/slurm/23.02.5/state  &
SlurmdSpoolDir=/var/spool/slurmd
SlurmctldLogFile=/opt/hpc/slurm/23.02.5/log/slurmctld.log &
SwitchType=switch/none
MpiDefault=none
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmdPidFile=/var/run/slurmd.pid
ProctrackType=proctrack/cgroup
PluginDir=/opt/hpc/slurm/23.02.5/lib:/opt/hpc/slurm/23.02.5/lib/slurm             &       
ReturnToService=2
CommunicationParameters=block_null_hash
DisableRootJobs=NO
TaskPlugin=task/cgroup
InactiveLimit=0
KillWait=30
MinJobAge=300
SlurmctldTimeout=120
SlurmdTimeout=300
Waittime=0
SchedulerType=sched/backfill
SelectType=select/cons_tres
SelectTypeParameters=CR_Core
AccountingStorageHost=node11  &
AccountingStoragePass=/var/run/munge/munge.socket.2
AccountingStorageType=accounting_storage/slurmdbd
AccountingStorageUser=rmadmin &
AccountingStorageEnforce=limits,qos
SlurmdLogFile=/var/log/slurm/slurmd.log
NodeName=node[11-12] Procs=1   State=UNKNOWN &
PartitionName=q_vip \
        Nodes=ALL \
        Default=YES \
        MaxTime=INFINITE \
        State=UP
1.2.3.3 创建并编写slurmdbd.conf

vim /opt/hpc/slurm/23.02.5/etc/slurmdbd.conf

AuthType=auth/munge
AuthInfo=/var/run/munge/munge.socket.2
DbdHost=node11 &
DbdAddr=192.168.234.201 &
SlurmUser=rmadmin &
MessageTimeout=60
DebugLevel=4
LogFile=/opt/hpc/slurm/23.02.5/log/slurmdbd.log &
PluginDir=/opt/hpc/slurm/23.02.5/lib:/opt/hpc/slurm/23.02.5/lib/slurm &
PrivateData=accounts,users,usage,jobs
StorageType=accounting_storage/mysql
StorageHost=192.168.234.201 &
StorageLoc=slurm_acct_db_001 &
StoragePort=3306
StoragePass=chenshuai &
StorageUser=slurmdbd &
1.2.3.3 创建并编写cgroup.conf

vim /opt/hpc/slurm/23.02.5/etc/cgroup.conf

CgroupAutomount=yes
ConstrainCores=no
ConstrainRAMSpace=no

给予权限
chmod 644 /opt/hpc/slurm/23.02.5/etc/slurmdbd.conf
chown rmadmin:rmadmin /opt/hpc/slurm/23.02.5/etc/*

1.2.4 启动服务与命令测试

服务在sbin目录下
./slurmdbd -vvvvDDDD 没有报错
./slurmctld -vvvvDDDD 没有报错
./slurmd -vvvvDDDD 没有报错
命令在bin目录下测试
./sinfo
在这里插入图片描述
自此node11完成

1.3配置mariadb数据库


yum -y install mariadb mariadb-server mariadb-devel
systemctl start mariadb && systemctl enable mariadb

create database slurm_acct_db_001;
grant all privileges on slurm_acct_db_001.* to 'slurmdb'@'localhost' identified by 'chenshuai';
flush privileges;

这里遇到的问题是可能不存在’slurmdb’@‘localhost’ 这个用户 需要自己创建

2. 配置Slurm客户端

需要将服务端的/opt/hpc/设置为nfs共享目录

2.1 配置Munge

1.按照上面正常配置后 node12无需生成密钥
2.将node11的key文件 传到 node12 etc/下
启动munge服务

2.2 配置Slurm

将slurm文件挂载到node12上
mount 192.168.234.201:/opt/hpc/slurm /opt/hpc/slurm
./slurmd -vvvvDDDD 启动slurmd
./sinfo 看看是否存在
在这里插入图片描述

初始化

cd /opt/slurm-23.02.5/
cp slurmdbd.service /usr/lib/systemd/system/slurmdbd.service
cp slurmctld.service /usr/lib/systemd/system/slurmctld.service
cp slurmd.service /usr/lib/systemd/system/slurmd.service

echo "export PATH=$PATH:/opt/hpc/slurm/23.02.5/bin">> /etc/profile.d/slurm.sh
source /etc/profile

3 最终测试

  1. ldap添加用户条目 test010 并保证 用户家目录自动生成与可切换用户
    在这里插入图片描述

  2. slurm根据用户添加账号

增加none和test账户并赋予相应权限
sacctmgr add account test010 Cluster=chen_cluster 
 增加test1用户属于test账户
sacctmgr -i add user test010 account=test010

在这里插入图片描述
3. 切换到test010用户之后提交作业 (哪个用户提交作业 则那个用户写作业脚本)
su - test010
vim job.sh

#!/bin/bash

#SBATCH -o job.%j.out
#SBATCH -p q_vip
#SBATCH -J myFirstJob
#SBATCH --nodelist=node11  
#SBATCH --ntasks-per-node=1

hostname

sbatch job.sh
如果作业未提交上去:注意是否给予用户权限
请添加图片描述

问题解决:
slurmdbd -vvvvDDDD时
slurmdbd: error: mysql_real_connect failed: 1044 Access denied for user ‘slurmdbd’@‘node00’ to database ‘slurm_acct_db_001’
slurmdbd: error: The database must be up when starting the MYSQL plugin. Trying again in 5 seconds.
解决思路:判断mariad是否有’slurmdbd’@'node00 没有的话添加用户并且为用户给予权限slurm_acct_db_001

slurmctld -vvvvDDDD时
如果refuse 请确保slurmd已经启动

出现如下问题:没有安装python3环境
在这里插入图片描述

cd /root/pkg wget https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tgz
tar -zxvf Python-3.8.6.tgz 
cd Python-3.8.6/
./configure 
make
make install
cd /usr/bin
ln -s /usr/local/bin/python3.8 /usr/bin/python3

参考文章:http://hmli.ustc.edu.cn/doc/linux/slurm-install/slurm-install.html#qos

夏天会周而复始,该相逢的人会再相逢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值