Docker容器安装多节点PbsPro

[TOC]

Docker容器安装-多节点PbsPro

名称 版本 下载
系统 CentOS-7-x86_64-DVD-1708 点我
镜像 pbspro/pbspro docker pull pbspro/pbspro

1 简介:

1.1 Docker简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

一个完整的Docker有以下几个部分组成:

1.dockerClient客户端

2.Docker Daemon守护进程

3.Docker Image镜像

4.DockerContainer容器

Docker总架构

docker架构

详情:Docker源码分析(一):Docker架构

1.2 PBS简介

PBS(Portable Batch System)最初由NASA的Ames研究中心开发,主要为了提供一个能满足异构计算网络需要的软件包,用于灵活的批处理,特别是满足高性能计算的需要,如集群系统、超级计算机和大规模并行系统。

PBS是功能最为齐全, 历史最悠久, 支持最广泛的本地集群调度器之一。PBS的主要特点有:代码开放,免费获取;支持批处理、交互式作业和串行、多种并行作业,如MPI、PVM、HPF、MPL。

PBS的目前包括:openPBS, PBS Pro和Torque三个主要分支.

OpenPBS:是最早的PBS系统, 目前已经没有太多后续开发

PBS pro:是PBS的商业版本, 功能最为丰富

Torque:是Clustering公司接过了OpenPBS, 并给与后续支持的一个开源版本

应用PBS提交任务则会形成任务队列,依次执行,有效分配资源,避免资源竞争。否则CPU时间片会轮流分配给各个人的任务,从而影响所有人的正常作业。

torque主要由三个主要部件组成:

PBS服务守护进程: pbs_server 负责接收作业提交,位于服务节点

PBS调度守护进程: pbs_sched 负责调度作业,位于服务节点

PBS MOM守护进程: pbs_mom 负责监控本机并执行作业,位于所有计算节点

2 安装Docker

网上的安装资料很多:centos7 安装docker

#卸载老版本的 docker 及其相关依赖
$sudo yum remove docker docker-common container-selinux docker-selinux docker-engine
#安装 yum-utils,它提供了 yum-config-manager,可用来管理yum源
$sudo yum install -y yum-utils
#添加yum源
$sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#更新yum索引
$sudo yum makecache fast
#安装 docker-ce
$sudo yum install docker-ce
#启动 docker
$sudo systemctl start docker
#验证是否安装成功
$sudo docker info
#通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
$vi /etc/docker/daemon.json
#添加
{
  "registry-mirrors": ["https://w5z91a3d.mirror.aliyuncs.com"]
}
#开放管理端口映射
$vi /lib/systemd/system/docker.service
#修改ExecStart=/usr/bin/dockerd为以下内容 
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H tcp://0.0.0.0:7654
#将管理地址写入 /etc/profile
$echo 'export DOCKER_HOST=tcp://0.0.0.0:2375' >> /etc/profile  
$source /etc/profile  
$systemctl daemon-reload && service docker restart  
#测试docker
$sudo docker run hello-world 
#若成功,显示:
Hello from Docker!
This message shows that your installation appears to be working correctly.
#安装OK!

Docker 安装完成后,下载pbspro/pbspro镜像,此镜像中已经安装了pbspro

$Docker pull pbspro/pbspro
下载pbspro/pbspro镜像

下一步,运行此镜像创建三个容器建立SSH互信。

3 建立SSH互信

参考:使用ssh在Docker容器间建立互信

使用pbspro/pbspro镜像创建三个容器,分别指定镜像名称、hostname、自定义网络、IP并且添加互信的hostname到/etc/hosts中,如下表:

容器名称 容器hostname ip
pbs1 pbs1 172.18.0.3
pbs2 pbs2 172.18.0.4
pbs3 pbs3 172.18.0.5

镜像创建三个容器,pbs1作为主节点进行管理,pbs2和pbs3作为计算节点进行计算

$docker run -tid --name pbs1 -h pbs1 --add-host pbs1:172.18.0.3 --add-host pbs2:172.18.0.4 --add-host pbs3:172.18.0.5 --net=mynetwork --ip=172.18.0.3 pbspro/pbspro bash

$docker run -tid --name pbs2 -h pbs2 --add-host pbs1:172.18.0.3 --add-host pbs2:172.18.0.4 --add-host pbs3:172.18.0.5 --net=mynetwork --ip=172.18.0.4 pbspro/pbspro bash

$docker run -tid --name pbs3 -h pbs3 --add-host pbs1:172.18.0.3 --add-host pbs2:172.18.0.4 --add-host pbs3:172.18.0.5 --net=mynetwork --ip=172.18.0.5 pbspro/pbspro bash

查看刚刚创建的三个制定镜像,如下图所示:

创建的三个容器

分别进入这三个容器,参考使用ssh在容器间建立互信.md进行建立ssh互信

容器间建立ssh互信

建立完毕后,在分别进行配置PbsPro

4 安装配置PbsPro

因为下载的这个镜像已经安装有了Pbspro,所以只需要配置,如果想制作自己的PbsPro,请参考:使用RPM包安装PBS Pro

4.1 配置管理节点

登录管理节点pbs1,然后以root用户运行,修改/etc/pbs.conf

$vi /etc/pbs.conf
#修改PBS_SERVER和PBS_START_MOM
PBS_SERVER=pbs1
PBS_START_MOM=0

备注:如果是单机安装pbspro,要将PBS_START_MOM改为1

修改/var/spool/pbs/mom_priv/config

$vi /var/spool/pbs/mom_priv/config
#修改clienthost为pbs1
clienthost pbs1
配置管理节点

4.2 配置计算节点

分别登录计算节点pbs2和pbs3,然后以root用户运行,修改/etc/pbs.conf

$vi /etc/pbs.conf
#修改PBS_SERVER和PBS_START_MOM
PBS_SERVER=pbs1
PBS_START_MOM=1

修改/var/spool/pbs/mom_priv/config

$vi /var/spool/pbs/mom_priv/config
#修改clienthost为pbs1
clienthost pbs1
配置计算节点

4.3 启动PBS添加计算节点

分别在pbs1和pbs2、pbs3节点上运行以下命令启动pbs,第一次启动会创建数据库

$/etc/init.d/pbs start 
启动PBS

备注:

$/etc/init.d/pbs start    #启动pbs
$/etc/init.d/pbs stop     #停止pbs
$/etc/init.d/pbs restart  #重启pbs
$/etc/init.d/pbs status   #查看pbs状态

在管理节点添加计算机节点pbs2、pbs3

$. /etc/profile.d/pbs.sh
$qmgr -c "create node pb2"
$qmgr -c "create node pb3"

查看添加的计算节点,节点的状态显示为free即就是计算节点添加成功

$pbsnodes -a
计算节点信息.png

4.3 测试

在管理节点pbs1创建用户,进行提交作业,状态显示R为任务正在运行,同时也需要在其他计算节点也添加相同的用户,使其UID个GID一样

$useradd user1
$su user1
$cd
$qsub -- /bin/sleep 10
$qstat -a
#使用tracejob JobID查看作业的进度
$tracejob 13.pbs1
提交作业
查看作业13.pbs1

备注:**pbs任务提交脚本及查看任务状态

#B  只用于任务向量,表示任务向量已经开始执行 
#E  任务在运行后退出 
#H  任务被服务器或用户或者管理员阻塞 
#Q  任务正在排队中,等待被调度运行 
#R  任务正在运行 
#S  任务被服务器挂起,由于一个更高优先级的任务需要当前任务的资源 
#T  任务被转移到其它执行节点了 
#U  由于服务器繁忙,任务被挂起 
#W  任务在等待它所请求的执行时间的到来(qsub -a) 
#X  只用于子任务,表示子任务完成

5 PBS命令

5.1 qsub 命令

qsub 命令:用于提交作业脚本

#命令格式:
$qsub -a date_time [-C directive_prefix]
      -e path -j join -l resource_list
      -M user_list -o path -q destination
      -S path_list-v variable_list
      -W additional_attributes

参数说明:因为所采用的选项一般放在pbs 脚本中提交,所以具体见PBS 脚本选项。

例:# qsub aaa.pbs 提交某作业,系统将产生一个作业号

5.2 qstat 命令

qstat 命令:用于查询作业状态信息

#命令格式:
$qatat -f-i-s -Q-B

参数说明:

参数 作用
-f jobid 列出指定作业的信息
-a 列出系统所有作业
-i 列出不在运行的作业
-n 列出分配给此作业的结点
-s 列出队列管理员与scheduler 所提供的建议
-R 列出磁盘预留信息
-Q 操作符是destination id,指明请求的是队列状态
-q 列出队列状态,并以alternative 形式显示
-au userid 列出指定用户的所有作业
-B 列出PBS Server 信息
-r 列出所有正在运行的作业
-Qf queue 列出指定队列的信息
-u 若操作符为作业号,则列出其状态。

例:# qstat -f 211 查询作业号为211 的作业的具体信息。

5.3 qdel 命令

qdel 命令:用于删除已提交的作业

#命令格式:
$qdel [-W 间隔时间] 作业号

例:# qdel -W 15 211 #15秒后删除作业号为211 的作业

5.4 qmgr 命令—用于队列管理

qmgr 命令—用于队列管理

qmgr -c "create queue batch queue_type=execution"

qmgr -c "set queue batch started=true"

qmgr -c "set queue batch enabled=true"

qmgr -c "set queue batch resources_default.nodes=1"

qmgr -c "set queue batch resources_default.walltime=3600"

qmgr -c "set server default_queue=batch"

5.5 基本脚本写法和选项

当多个用户使用同一个计算资源时,每个用户用PBS脚本提交自己的任务,由PBS对这些任务进行管理和资源的分配。下面是一个简单的PBS脚本:

#!/bin/bash
#PBS -l nodes=20
#PBS -N snaphu
#PBS -j oe
#PBS -l walltime=24:00:00
#PBS -l cput=1:00:00
#PBS -q dque
$cd $PBS_O_WORKDIR
$cat PBS_NODEFILE PBS_NODEFILE> NODEFILE
$mpirun -np ./mpitest

将这个脚本保存成submit然后qsub submit就将这个mpitest的任务提交给了系统。脚本中#PBS为脚本选项,用于设置一些参数。

#PBS -l 表示资源列表,用于设定特定任务所需的一些参数。这里的nodes表示并行环境下可以使用的节点数,而walltime表示任务最大时限,而cput表示cpu时间的最大时限,运行时间和cpu使用时间超过对应的时限,任务就会以超时退出。这三个参数不是PBS脚本参数,而是并行环境所需的参数。

#PBS -N 表示任务名称。

#PBS -j 表示系统输出,如果是oe,则标准错误输出(stderr)和标准输出(stdout)合并为stdout,如果是eo,则合并为stderr,如果没有设定或设定为n,则stderr和stdout分开。

#PBS -q 表示当前任务选用的队列。在并行环境下,一个系统中往往有多个队列,任务提交后,将在所选的队列中排除等候。系统中有哪些队列可以用qstat -q查看。

PBS脚本文件由脚本选项和运行脚本两部分组成。

  1. PBS作业脚本选项 (若无-C选项,则每项前面加‘#PBS’)

  2. 运行脚本同LINUX下一般的运行脚本文件格式如下:

​ mpirun –np 进程数 ./可执行程序名

6 可能出现的问题

1 防火墙

出于简单,可以关闭防火墙

$systemctl stop firewalld.service #停止firewall
$systemctl disable firewalld.service #禁止firewall开机启动

2 下载源

更换 CentOS 7 的下载源为阿里云

$yum install -y wget
#备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#下载新的CentOS-Base.repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#清除YUM缓存
yum clean all
#重建数据库
rpm --rebuilddb
#生成缓存
$yum makecache

3 IPv4 forwarding is disabled

若出现WARNING IPv4 forwarding is disabled. Networking will not work

#解决办法:
$vi /usr/lib/sysctl.d/00-system.conf
#添加如下代码:
net.ipv4.ip_forward=1
#重启network服务
$systemctl restart network
#查看是否修改成功
$sysctl net.ipv4.ip_forward
#如果返回为net.ipv4.ip_forward = 1则表示成功了

4 yum 安装时错误 Errno 14 Couldn't resolve host

修改一下 /etc/resolv.conf,添加一个nameserver 8.8.8.8完成

$vi  /etc/resolv.conf
nameserver 8.8.8.8

7 总结

待续。。。

参考资料

1 :Using Docker to Instantiate PBS

2:使用RPM包安装PBS Pro

3:How to install PBS Pro using the configure script

4:如何在Rocks HPC集群里安装PBS Pro开源版

5:PBS服务开启操作流程

6:使用ssh在Docker容器间建立互信

7:Docker容器安装单节点PbsPro

8:Centos7安装-多节点PbsPro


​ 2017/11/16-Boy

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容