openpbs centos 7 配置安装手把手教程

本文记录了 openpbs 在centos 7上进行配置的具体可行步骤,包括可参考的资料、可能遇见的错误及其详细配置方法。对于其他系统版本 如 centos 8,大致步骤基本一致,也可参考本教程。

说明

首先需要说明的是,openpbs之前的版本为pbs pro的开源版本,所以pbs pro的配置方法也可参考。

关于参考文档,成功配置pbs需要参考的文档包括:

1. open pbs 官方用户手册,地址:https://www.altair.com/pbs-works-documentation/ ,涉及到的文档包括PBS Professional Installation & Update Guide,PBS Professional User’s Guide,以及PBS Professional Administrator’s Guide。

2. open pbs 官方论坛:https://community.openpbs.org/, 有配置上的疑难杂症都可以去上边提问,回答者都很专业。

关于安装方式,建议使用rpm包安装,如果下载github上的源码,参照代码中的说明自己编译的话,可能会遇到一些意想不到的坑。所以还是旋泽对应的rpm包进行安装 ,openpbs github地址:https://github.com/openpbs/openpbs

关于版本,我在写教程时最新版为v20.0.1,但由于最开始源码编译时遇到一些问题,咨询论坛人员,他们告诉我可能是最新版的一些bug,于是我后面选择了v19.1.3版本。

关于license,因为openpbs有其对应的商业版本和开源版本,我其实也搞不清楚这个,但在github上下载的rpm版本安装后,运行中的提示说明license检查是通过的,也就是说不需要我们额外去申请商业license,直接使用开源版本即可。

openpbs 配置正文

在安装配置前,有必要了解一下openpbs的基本架构:

fuwuqipeizhi-tutorial
openpbs

如果所示,openpbs的架构是分多模块的,不同的模块可以部署在不同的机器节点上,当然也可以部署在同一个节点上。在上图中,server即服务器节点,它是用来接收用户的信息,如提交任务、结束任务等信号,进而传递给scheduler节点,scheduler模块是用来分配任务的,即将当前任务分配到哪些节点进行计算等;Communication模块则是不同模块之间进行沟通的模块。Execution Host 顾名思义,为计算节点所在的位置,其中的MoM模块则为实际协调任务和系统的模块。

一般来说,尝试配置时,可将这些模块全部设置在单独的节点中,若运行无误后,再进行多节点的配置。本文将直接从多节点配置开始。

  1. 下载rpm包,地址:https://github.com/openpbs/openpbs/releases/download/v19.1.3/pbspro_19.1.3.centos_7.zip
  2. 解压缩,tar zxvf pbspro_19.1.3.centos_7.zip,进入解压之后的文件夹 (过于细致的命令就不写了哈,节省篇幅)
  3. 设置机器的hostname,也就是对节点进行命名;这一步非常重要,如果设置错误,pbs系统是无法运行的。我们需要对所有要用到的服务器节点和计算节点设置对应的hostname,且一个ip地址对应一个独特hostname,不可重复。
    设置的命令为:hostnamectl set-hostname <machine-name>其中 <machine-name> 的位置需要你替换成实际你要设置的名字(命令中不包括尖括号,这里只是为了强调说明哈)需要注意的是,所有牵涉到的机器,都需要设置合适的hostname。在设置后,最好重启机器,使其生效。
  4. 设置hosts文件。编辑 /etc/hosts 文件,指明所有机器的ip和其hostname,每台机器中该文件必须包括所有pbs系统中的节点名称和ip,示例如下:127.0.0.1 localhost
    10.9.9.12 twelve
    10.9.9.13 thirteen
    10.9.9.14 fourteen
    10.9.9.15 fifteen
    10.9.9.16 sixteen
    10.9.9.17 seventeen
    10.9.9.18 eighteen这里要包括所有的节点信息哦。
  5. 在配置完hostname和hosts文件后,最好来个重启让其生效;另外,我们需要检验配置是否正确,可在不同的节点进行ping测试,如 ping twelve 或其他服务器,检测能否ping通,以及使用 pbs_hostn 命令检查是否会报错,如 pbs_hostn twelve 检测twelve 名称和ip是否配置错误,如在所有节点上都没有错误,则可进入下一步。
  6. 配置DNS和软件源(可选)。为了让网络顺畅,需要配置合适的DNS服务器以及centos软件源,本文不赘述。
  7. 关闭防火墙。实际使用中,不推荐完全关闭防火墙,可针对特定端口进行控制,这里为讲解方便,以完全关闭防火墙为例:systemctl stop firewalld.service注意,目前最好都使用root用户,当然也可以使用sudo用户。
  8. 添加 pbsdata用户,这个我不确定是否会对配置成功起到作用,但我当时根据userguide上的说明进行了用户添加,为提供全部信息,我也记录在此。命令:useradd pbsdata
  9. 安装server节点。在准备配置服务器的节点,我们进入到第2步解压之后的文件夹,其中有4个rpm包,根据名字即可推断其用途。pbspro-server-19.1.3-0.x86_64.rpm是服务器节点所需要安装的包,pbspro-execution-19.1.3-0.x86_64.rpm 则是计算节点所需要安装的包, pbspro-client-19.1.3-0.x86_64.rpm 可能是单纯执行pbs命令(如查看任务,提交任务)不参与计算,也不参与调配的节点,不过这个是我猜的,我实际并没有单纯配置client节点,只配置了server和execution,所有的execution都可以作为client来使用。
    其实在安装前,是需要配置一些环境变量的,我当时偷懒没有设置,server的安装基本上都使用了默认变量,好在没出什么问题。这里附一张变量图,感兴趣的可以自行去研究:
    fuwuqipeizhi-tutorial
    openpbs

    首先在server节点,我们使用如下命令进行安装:
        yum install pbspro-server-19.1.3-0.x86_64.rpm
    使用yum安装的原因是,它可以自动安装一些依赖,这个可以帮大忙。安装成功后,我们需要明确,配置文件位置:/etc/pbs.conf。这里需要修改一个东西,因为我们需要server节点同时也承担计算的任务,那么就给它来一个MoM模块,体现在配置文件里,就是添加一行:
    PBS_START_MOM=1之后,使用systemctl start pbs 来启动pbs服务。可通过 /etc/init.d/pbs status 来查看pbs服务状态,如果一起运行正常,将会有如下信息输出:pbs_server is pid 143111
    pbs_mom is pid 142667
    pbs_sched is pid 142679
    pbs_comm is 142639可见,在这个节点上,我们同时配置了4个模块。
    输入以下命令:qmgr -c “list server”  可查看目前server的信息,如下为我当前服务器的显示:

    fuwuqipeizhi-tutorial
    openpbs
    fuwuqipeizhi-tutorial
    openpbs

    输入命令 qstat -B 也可查看服务器状态

    注意,如果qstat等命令找不到,可能是环境变量未刷新的原因,可切换至普通用户进行操作。

  10. server模块的必要配置,有一些配置可以提前做好,为了防止之后掉坑,在server所在节点上,以root用户,输入以下命令:qmgr -c “set server flatuid=true”
    qmgr -c “set server scheduling=true”
    qmgr -c “s s job_history_enable=1″至此,server 模块的配置告一段落。有一个要注意的,因为我们在server node上同时开了一个MoM,意味着这个节点本身也是一个计算节点,此时应该是已经有计算节点可使用,但为通用期间,我们还是以单独配置计算节点作为教程说明。
  11. 下面配置计算节点。4、5、6、7步都是与服务器节点一样设置,之后进入到第2步解压缩的文件夹,进行安装:
    注意,这里需要设置一个环境变量,PBS_SERVER,即在安装之前需要指明我们使用哪个节点作为pbs 的server node,我这里运行如下命令进行设置:export PBS_SERVER=thirteen即设置thirteen这个节点为服务器节点,也就是我们之前安装 server模块的节点。设置好环境变量后,运行下面的命令:yum install pbspro-execution-19.1.3-0.x86_64.rpm启动服务:systemctl start pbs

    查看状态:

    /etc/init.d/pbs status

    正常情况下会有类似如下输出:

    pbs_mom is pid 1909

    表明MoM模块正在运行中。

  12. 在服务器节点添加计算节点。我们刚才配置了计算节点,但是并没有告诉服务器,所以还是无法正常使用的。
    假设刚才配置完的计算节点,它的hostname 为 fourteen,那么在服务器节点使用root用户,输入如下命令添加计算节点:qmgr -c “create node fourteen”其中 fourteen 即指代想要添加的计算节点。这边可以把所有配置好的计算节点都以该方式进行添加。添加好之后,我们采用如下命令进行节点查看:pbsnodes -a该命令会输出所有节点的详细信息,为了得到整齐的tab格式,我们可以输入如下命令:pbsnodes -aSj下图为我所配置的结果:
    fuwuqipeizhi-tutorial
    openpbs pbsnodes

    其中可以看到所有计算节点的名称和状态,运行的任务数目,内存、CPU等。

  13. 测试任务。最简单的例子:echo “sleep 60” | qsub即提交一个 sleep 60的任务,如果一切正常的话,使用 qstat -a 检查任务状态:
    fuwuqipeizhi-tutorial可见,任务已经运行起来了。细节我就不讲了。如果运行完成后,再进行qstat -a就看不到信息了,但我们可以使用 qstat -H来查看历史任务,关于 qsub系统本身的一些使用,我在这里就不做赘述了。
  14. 实际使用。在实际使用pbs的时候,我们最好以脚本方式提交命令,这样可以对节点有更加个性化的设置,如下为一个例子:

    #!/bin/bash
    #
    #PBS -l nodes=1:ppn=48
    ####PBS -l nodes=fifteen
    #PBS -l walltime=24:00:00
    #PBS -q workq
    #PBS -N trimmafaaax
    #PBS -o job.out
    #PBS -e job.err
    #PBS -l mem=30G
    echo ‘aa’
    # This finds out the number of nodes we have
    echo $PBS_NODEFILE
    NP=$(wc -l $PBS_NODEFILE | awk ‘{print $1}’)
    echo “Total CPU count = $NP”
    sleep 60
    cd /home/achen/pbs_test
    sh ./run.sh

     

    这里的一些配置定义了服务器参数,这里我想说明的是job.out 和 job.err 是任务输出的文件,后面可以作为调试参考(这里有坑,参见15步)。
    其他的参数,建议自行谷歌,本文主要讲解配置,至于pbs如何使用这里就不赘述了。

  15. 另外,由于在不同节点上运行任务之后,需要将结果传回实际提交任务的节点,所以还需要额外配置一下节点之间的无密码文件传输。即ssh之间不需要密码即可登录。若配置好之后,达到的效果就是,在任何一个节点,ssh thirteen 即可不需要输入命令即可进行ssh访问。thirteen只是我的一个样例,实际需要根据情况修改。如果不配置无密码ssh访问,任务可能会卡在H状态很久,因为log文件无法传回。ssh无密码访问教程很多,在此不做赘述。记得设置 authorized_keys的权限,否则容易配置失败。刚才提到了任务状态,如下是一个任务状态的解释:the job state:
    E – Job is exiting after having run.
    H – Job is held.
    Q – job is queued, eligable to run or routed.
    R – job is running.
    T – job is being moved to new location.
    W – job is waiting for its execution time (-a option) to be reached.
    S – (Unicos only) job is suspend.
  16. 目前配置的pbs系统,提交的任务难以跨节点,即#PBS -l nodes=1:ppn=48 这一行,nodes只能设置为1,若设置为其他,实际无法调用。若需要跨节点,则需要集群配置mpi,可配置open-mpi,之后在通过mpi运行任务,则可调动pbs分配的多个节点来运行任务。
  17. debug。 若遇见问题,可查看各个模块的日志,其默认位置为:/var/spool/pbs/ ,不同模块有不同的 log,包括可查看server节点和运行节点的log,来获取错误信息。也可登录openpbs论坛,进行提问。

以上,即为基本教程,有任何疑问请留言。谢谢

2020-12-6


推荐阅读:

生存分析简明教程

PyTorch 简明样例:蛋白质序列预测模型构建、数据载入、抽样、训练、评估

wxPython 教程 (译)

《openpbs centos 7 配置安装手把手教程》有2个想法

  1. 请问一下按照教程,这种情况怎么办?
    [root@CentOs7_LEAF pbspro_19.1.3.centos_7]# /etc/init.d/pbs start
    Starting PBS
    /opt/pbs/sbin/pbs_comm ready (pid=6600), Proxy Name:centos7_leaf:17001, Threads:4
    PBS comm
    PBS mom
    Creating usage database for fairshare.
    PBS sched
    Connecting to PBS dataservice…..connected to PBS dataservice@CentOs7_LEAF
    Licenses valid for 10000000 Floating hosts
    PBS server
    [root@CentOs7_LEAF pbspro_19.1.3.centos_7]# /etc/init.d/pbs status
    pbs_server is pid 8958
    pbs_mom is not running
    pbs_sched is not running
    pbs_comm is not running
    [root@CentOs7_LEAF pbspro_19.1.3.centos_7]# qstat -B
    Connection refused
    qstat: cannot connect to server CentOs7_LEAF (errno=111)
    [root@CentOs7_LEAF pbspro_19.1.3.centos_7]#

    1. 怀疑与node 命名有关;建议看一下所有log的输出,找找其中的错误。
      可在openpbs论坛查找类似问题或提问。
      相关:https://community.openpbs.org/t/job-gets-stuck-in-a-queue-after-a-fresh-install/1619

发表评论

电子邮件地址不会被公开。 必填项已用*标注