单机Compose编排pbspro_maya

单机Compose编排pbspro_maya

  • 单机Compose编排pbspro_maya
    • 前提
    • Compose编排
    • Pbspro安装
      • cluster_master_1
      • cluster_worker_1
      • cluster_worker_2
      • 添加计算节点
      • 测试
    • 问题
    • 改进脚本登陆容器安装PBS
      • 1 添加卷
      • 2 重新创建容器
      • 3 Master自动化安装Pbspro
      • 4 批量化worker安装Pbspro
      • 5 在Master容器上添加worker容器
      • 6 测试

1 前提

1 安装docker

参考centos7 安装docker

2 安装docker compose

方法一:

$curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$chmod +x /usr/local/bin/docker-compose
#查看版本
$docker-compose version

方法二:用pip方式安装(备用)

#安装pip
yum -y install epel-release
yum -y install python-pip
#确认版本
pip --version
#更新pip
pip install --upgrade pip
#安装docker-compose
pip install docker-compose 
#查看版本
docker-compose version

3 准备pbspro-maya镜像

方法一:pullpbspro-maya镜像

#自己制作的pullpbspro-maya已经push到docker hub上了
docker pull akunisnice/pbspro-maya

方法二:制作pbspro-maya镜像

参考:Centos7+Maya2017+Pbspro安装

2 Compose编排

文件夹:centos-maya-openpbs目录结构如下:

centos-maya-openpbs
  |__ base:基础Dockerfile(centos7+maya+pbspro的Dockerfile)
  |__ cluster:使用脚本构建并启动多个容器在单机上
         |__ cluster.sh :Compose编排启动容器
         |__ Dockerfile :添加镜像(akunisnice/pbspro-maya:onbuild)
         |__ docker-compose.yml : 定义master和worker容器
  |__ onbuild
         |__ Dockerfile : 触发器 ssh配置 copy文件

下载地址:稍等

开始编排

建议build时,镜像名字符合push镜像的规则,便于后续编排

$cd centos-maya-openpbs/onbuild
#不清楚这一步是否真的需要 待续
$docker build -t akunisnice/pbspro-maya:onbuild .
#脚本构建启动文件夹
$cd centos-maya-openpbs/cluster
#修改Dockerfile文件,将上一步的build的镜像写在FROM中
##########################################################################
FROM akunisnice/pbspro-maya:onbuild
##########################################################################
#修改docker-compose.yml文件,给master文件添加hostname和privileged
$vi docker-compose.yml
##########################################################################
master:
    image: $REGISTRY_ADDR:$REGISTRY_PORT/$IMAGE_NAME
    user: root
    hostname: master
    privileged: true
    entrypoint: ["mpi_bootstrap", "role=master", "mpi_master_service_name=master", "mpi_worker_service_name=worker"]
    ports:
      - "${SSH_PORT}:22"
    networks:
      - net
##########################################################################
#给cluster.sh授权
$chmod +x cluster.sh
#执行脚本启动三个容器在单机上
$./cluster.sh up size=3

查看

$docker ps

./cluster.sh up size=3的过程

CLEAN UP CLUSTER

SPIN UP REGISTRY

BUILD IMAGE

PUSH IMAGE TO REGISTRY

SPIN UP MASTER NODE

SPIN UP WORKER NODES

CLUSTER READY

3 Pbspro安装

1 cluster_master_1

#进入容器
$docker exec -it cluster_master_1 bash
$cd /root/rpmbuild/RPMS/x86_64
$yum install -y pbspro-server-14.1.0-0.x86_64.rpm
#修改/etc/pbs.conf,使其cluster_master_1也为计算节点
$vi /etc/pbs.conf
PBS_START_MOM=1
#启动pbs
$/etc/init.d/pbs start

2 cluster_worker_1

#进入容器
$docker exec -it cluster_worker_1 bash
$cd /root/rpmbuild/RPMS/x86_64
$yum install -y pbspro-execution-14.1.0-0.x86_64.rpm
#修改/etc/pbs.conf文件,PBS_SERVER为cluster_master_1的hostname,此处我的为master
$vi /etc/pbs.conf
PBS_SERVER=master
#修改/var/spool/pbs/mom_priv/config文件,指定为cluster_master_1的hostname
$vi /var/spool/pbs/mom_priv/config
$clienthost master
#启动pbs
$/etc/init.d/pbs start

3 cluster_worker_2

#进入容器
$docker exec -it cluster_worker_2 bash
$cd /root/rpmbuild/RPMS/x86_64
$yum install -y pbspro-execution-14.1.0-0.x86_64.rpm
#修改/etc/pbs.conf文件,PBS_SERVER为cluster_master_1的hostname,此处我的为master
$vi /etc/pbs.conf
PBS_SERVER=master
#修改/var/spool/pbs/mom_priv/config文件,指定为cluster_master_1的hostname
$vi /var/spool/pbs/mom_priv/config
$clienthost master
#启动pbs
$/etc/init.d/pbs start

4 添加计算节点

$. /etc/profile.d/pbs.sh
$qmgr -c 'create node cluster_master_1'
$qmgr -c 'create node cluster_worker_1'
$qmgr -c 'create node cluster_worker_2'

5 测试

前提在所有的计算节点添加相同的非root用户,使用普通用户登录master节点,然后运行

$adduser user1
$su user1
# 查看节点状态 free则节点添加正常
$pbsnodes -a
# 提交作业
$echo 'sleep 10' | qsub
# 查看作业
$qstat -a

4 问题

1 cannot create directory ‘/sys/fs/cgroup/systemd/system.slice’: Read-only file system

原因:权限不够,给master节点创建容器时,添加:privileged

2 要是在build openpbs时报错,错误发生在rpmbuild -ba pbspro.spec,检查Dockerfile

修改Dockerfile文件,倒数第二行,改为如下:

tar zxvf v14.1.0.tar.gz && mv v14.1.0.tar.gz pbspro-14.1.0.tar.gz

3 Failed to recv data from background qsub

在提交作业时,重复提交时,会出现这个问题,但重复第三次就没有事了,未解决

5 改进:脚本登陆容器安装PBS

回到2 Compose编排

5.1 添加卷

修改docker-compose.yml文件时,添加挂载卷,用于容器之间共享脚本文件

添加volumes

volumes:
  - /pbs:/pbs

添加volumes_from

volumes_from:
      - master

5.2 重新创建容器

清除已创建的容器,重新$./cluster.sh up size=3,或者修改./cluster.sh 使用自定义的容器名

在卷pbs文件下中:文件地址

pbs
  |__master
        |__login_master.sh : 登陆master节点,执行installpbs_master.sh
        |__installpbs_master.sh :安装pbspro,配置,启动pbs
  |__worker
        |__login_worker.sh : 批量登陆worker节点,分别执行installpbs_worker.sh
        |__installpbs_worker.sh :安装pbspro,配置,启动pbs

5.3 Master自动化安装Pbspro

#查看容器
$docker ps
$cd /pbs/master/
$chmod +x login_master.sh installpbs_master.sh
#./login_master.sh [容器ID/Name]
$./login_master.sh cluster_master_1
#若是提示没有TTY,则修改login_master.sh, 加-d使用后台执行,如果这样的话,需要等待一会
#执行完毕后,进入cluster_master_1容器
$docker exec -it cluster_master_1 bash
#查看pbs状态
$/etc/init.d/pbs status

5.4 批量化worker安装Pbspro

$cd /pbs/master/
$chmod +x login_worker.sh installpbs_worker.sh
$./login_worker.sh
#worker安装Pbspro运载后台运行,所以在./login_worker.sh执行完后稍等一会

5.5 在Master容器上添加worker容器

这里也可以写成脚本,自动化添加,但是感觉没有必要了,手动添加

$. /etc/profile.d/pbs.sh
$qmgr -c 'create node cluster_master_1'
$qmgr -c 'create node cluster_worker_1'
$qmgr -c 'create node cluster_worker_2'
#查看节点状态 free则节点添加正常
$pbsnodes -a

5.6 测试

在所有的计算节点添加相同的非root用户,也可以写成脚本,自动化添加

$docker exec -d [containerId] adduer user1

使用普通用户登录master节点,然后运行

$adduser user1
$su user1
#查看节点状态 free则节点添加正常
$pbsnodes -a
#提交作业
$echo 'sleep 10' | qsub
#查看作业
$qstat -a

你可能感兴趣的:(安装教程)