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.png

然后安装构建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完成。

云如横.jpg

消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息