OpenPBS安装,疯狂踩坑版
记PBS安装及其使用
前言
欸?为什么我要学习PBS怎么装呢?那还不是因为我们实验室自费买了三台服务器+两台台式机用于做计算物理?
(我两台服务器,何学长一台服务器+一台台式机,学校报销了一台台式机)
那为啥要装PBS呢?
答:
PBS系统(Portable Batch System)最初由NASA的Ames研究中心开发,主要为了提供一个能满足异构计算网络需要的软件包,用于灵活的批处理,特别是满足高性能计算的需要。
嗯?异构计算网络?我这边一个机器一个架构(志强E5V4,志强可扩展一代/二代,酷睿12代/13代,绝了)
装它干啥呢?
答:计算物理有些任务得批量提交,太多,手动处理不划算,还是得让他自己跑完一个任务自动跑下一个任务,总不能自己一直盯着这玩意吧,还是直接开干就对了(
那装哪个PBS呢?
答:
有OpenPBS,PBS pro,Torque,特点如下
OpenPBS:是最早的PBS系统, 目前已经没有太多后续开发
PBS pro:是PBS的商业版本, 功能最为丰富
Torque:是Clustering公司接过了OpenPBS, 并给与后续支持的一个开源版本
综合而言呢,还是装Torque~~~~~个大头鬼啊,截止至目前作者编写时,OpenPBS最后一版更新于2023年(但是看更新记录却发现是一直都有更新,到笔者完稿之后还有),虽然有人说Torque更新到7.0.1版本(甚至更新的),但是根本找不到,其官方最后能找到的一版6.1.0则是2016年的,我写了一半重写的教程幸好没删,接着上OpenPBS吧。
(没钱使人学习)
(
我都OpenPBS装一半了,突然发现这玩意不好,佛了,重写教程吧,下次再写教程前一定做好调查)
后话:Torque装一半发现还不如OpenPBS,又重写了,淦
安装
运行环境:Ubuntu 22.04.2 LTS x3(一主二从,为了方便管理,计算机名称分别叫做master,slaver1,slaver2)
虚拟机:Oracle VM VirtualBox
(欸不是等等你怎么又用虚拟机?服务器呢?)
网络环境:虚拟机NAT网络,将三台虚拟机全部划分到同一网段下,无AP隔离,互相可以ping通
由于网上有很多Ubuntu配置教程,在这里不再讲述
(梅开二度)
单机安装
前置准备
老样子,先更新软件包
sudo apt update && sudo apt upgrade -y
更改hosts
文件配置
sudo vim /etc/hosts
在文件的最后填入
10.0.2.15 master
注:这里的填入内容请不要照抄,需要根据服务器实际IP地址以及实际网络名称填入,如比较常见的网段是192.168.0.1或者192.168.1.1,请自行查看路由器后台或ifconfig
指令查看实际IP地址,至于网络名称,则可以在Ubuntu的设置——关于——设备名称中查看并更改,如下所示
然后安装构建PBS的前置软件包
sudo apt install gcc make libtool libhwloc-dev libx11-dev libxt-dev libedit-dev libical-dev ncurses-dev perl postgresql-server-dev-all postgresql-contrib python3-dev tcl-dev tk-dev swig libexpat-dev libssl-dev libxext-dev libxft-dev autoconf automake g++ -y
安装PBS运行所需软件包
sudo apt install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin sudo tcl tk libical3 postgresql-server-dev-all -y
注:运行所需软件包需要在主机+所有从机全部安装,构建PBS的前置软件包则只需要在用于编译PBS的机器上安装即可,不过对于不同架构的机器是否需要重新编译,仍然需要测试
下载并编译安装
下载压缩包后切换至下载目录解压并进入解压后的文件夹里(已舍弃此方案)
tar -xpvf XXX.tar.gz
cd XXX
注:压缩包名称会随着版本变化而变化,请自行将XXX更改成下载的压缩包名称
直接git clone
下最新的代码,没有git
的请先使用指令sudo apt install git
安装
git clone https://github.com/openpbs/openpbs.git
cd openpbs
注:我后续在给不同的机器安装时,下载的方式不同,发现了下载已有的发行包存在一定问题,故直接下载主线开发包
生成配置脚本和Makefiles
./autogen.sh
开始配置(注:如有额外配置需求,可以使用./configure --help
查看更多可选项)
./configure --prefix=/opt/pbs
开始编译并且安装文件
make
sudo make install
参数修改
开始执行安装后的配置脚本
sudo /opt/pbs/libexec/pbs_postinstall
编辑并配置脚本
sudo vim /etc/pbs.conf
修改以下内容,保存并退出
PBS_SERVER=XXX #请将XXX自行修改成主机名称,在这里我的主机就是master
PBS_START_SERVER=1 #本机是否充当PBS主机,是的话改1,从机改0
PBS_START_SCHED=1 #本机是否充当PBS任务调度器,通常只在主机上用,从机改成0
PBS_START_COMM=1 #本机是否充当PBS任务交流器,通常只在主机上用,从机改成0
PBS_START_MOM=1 #本机是否充当PBS计算节点,主从机均可,若不当计算节点请改成0
修改对应文件权限
sudo chmod 4755 /opt/pbs/sbin/pbs_iff /opt/pbs/sbin/pbs_rcp
启动PBS
sudo /etc/init.d/pbs start
进入qmgr
sudo /opt/pbs/bin/qmgr
创建并设置队列,修改基础配置
create queue workq #创建名为workq的队列
set queue workq queue_type = Execution #将workq设置成执行队列,如有其他特殊需求请自行修改,另外一种是Route(路由队列),不参与计算
set queue workq enabled = True #启用workq队列
set queue workq started = True #启动workq队列
set server default_queue = workq #将workq队列配置成默认队列
set server flatuid=True #不检查用户UID是否一致
set server scheduling=True #启用PBS任务调度器
set server job_history_enable=True #启用历史记录
输入exit
退出qmgr
环境变量配置
输入sudo vim /etc/profile
后在文件最后写入以下环境变量,保存并退出
export PATH=/opt/pbs/bin:/opt/pbs/sbin:$PATH
export LD_LIBRARY_PATH=/opt/pbs/lib:$LD_LIBRARY_PATH
配置开机启动
systemctl enable pbs
systemctl start pbs
至此重启Ubuntu主机,PBS系统安装完毕,可以正常使用了
多节点安装
注:多节点安装的情况下,则每个节点都进行一次单机安装但省略qmgr
部分,但从机遵循如下规则
主从机都要创建相同用户
sudo useradd -m pbsuser #创建用户pbsuser
sudo passwd pbsuser #为用户pbsuser设置密码
sudo groupadd pbsgroup #创建组pbsgroup
sudo usermod -aG pbsgroup pbsuser #将用户pbsuser添加至组pbsgroup
sudo usermod -aG sudo pbsuser #给予用户pbsuser使用sudo的权限
hosts
文件的修改,针对于我的从机情况,主机的对应文件应该额外添加以下内容
10.0.2.5 slaver1
10.0.2.4 slaver2
这是我从机对应的IP以及名称,你需要使用同样的方法去查看并修改,不可照抄
此外,你还需要将从机中的pbs.conf
文件做如此下修改
PBS_SERVER=XXX #请将XXX自行修改成主机名称,在这里我的主机就是master
PBS_START_SERVER=0 #本机是否充当PBS主机,是的话改1,从机改0
PBS_START_SCHED=0 #本机是否充当PBS任务调度器,通常只在主机上用,从机改成0
PBS_START_COMM=0 #本机是否充当PBS任务交流器,通常只在主机上用,从机改成0
PBS_START_MOM=1 #本机是否充当PBS计算节点,主从机均可,若不当计算节点请改成0
这里主机地址不变,不需要改成从机的名称
还需要设置主从机之间的SSH免密钥链接
这里需要使用同一用户,即前面统一生成的用户pbsuser
来进行后续操作
所有主从机安装SSH并生成公钥密钥,并单独复制公钥
sudo apt-get install ssh
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
在主机上复制所有公钥,并把公钥分发给所有从机
ssh slaver1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh slaver2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys slaver1:~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys slaver2:~/.ssh/authorized_keys
注:这里的主机名称需要按照你前面hosts
文件里所填入的名称进行修改
到这里,多节点安装基本完成了,最后需要注意的是,如果使用多节点安装,则任务的提交必须使用同一用户,在本文中即pbsuser
,可根据自身情况进行修改。
可能的问题
可能存在的问题1:Ubuntu的SElinux隔离,OpenPBS官方要求安装时关闭SElinux,但Ubuntu只有AppArmor作为SElinux的平替,为防止可能存在的问题,需要使用sudo systemctl disable apparmor
并重启Ubuntu以关闭AppArmor。
可能存在的问题2:Ubuntu的防火墙设置,OpenPBS官方要求防火墙放行15001-15009端口,17001端口,我在使用是因考虑是内网环境,故选择直接关闭防火墙sudo ufw disable
除此之外,笔者还遇到了各种奇怪的问题,但是经过排查后发现是在安装过程中留下的bug,故将修正过的安装方式给大家查看,希望大家少绕弯路。
本文于24.7.12编写,至24.7.24完成。