天天看点

pbspro-maya多机Swarm编排(待续。。。)1简介2 初始化Swarm3 Swarm编排4 swarm.sh脚本启动的过程5 安装PBS6 问题

  • 1简介
  • 初始化Swarm
  • Swarm编排
  • swarmsh脚本启动的过程
  • 安装PBS
      • 1 master容器
      • 2 worker容器
      • 3 添加计算节点
      • 4 测试
  • 问题

1简介

前提,安装Docker,制作镜像centos+pbspro+maya镜像

名称 IP
manager 192.168.64.81
worker1 192.168.64.82

建立ssh互信

2 初始化Swarm

manager节点

worker1节点

$docker swarm join --token SWMTKN--0ywpjymsl4rtapep750pdbdrot6imo26di0lk7p8vp5lslm57e-z9nlodshv324dvyn0v73ooqw .:
           

manager节点查看

pbspro-maya多机Swarm编排(待续。。。)1简介2 初始化Swarm3 Swarm编排4 swarm.sh脚本启动的过程5 安装PBS6 问题

3 Swarm编排

centos-maya-openpbs

文件介绍

centos-maya-openpbs
  |__ base:基础Dockerfile(centos7+maya+pbspro)
  |__ cluster:使用swarm进行构建并启动多个容器在多主机上
         |__ .env :配置docker hub的用户名
         |__ swarm.sh :启动容器(还包含build pull push)
         |__ Dockerfile :添加镜像(akunisnice/pbspro-maya:onbuild)
         |__ swarm.conf : 制定build时的镜像名,制定自定义网络名和子网,pbspro-maya-network的地址和端口    
  |__ onbuild
          |__ Dockerfile : 触发器 ssh配置 copy文件
           

配置

akunisnice/pbspro-maya

镜像的ssh、触发器、Copy文件,构建

akunisnice/pbspro-maya:onbuild

镜像

$cd centos-maya-openpbs/onbuild
$docker build -t akunisnice/pbspro-maya:onbuild .
           

切换目录到

centos-maya-openpbs/cluster

中,

$cd centos-maya-openpbs/cluster
$ls ssh                #可能不需要
$chmod -R  ssh/*    #可能不需要
           

创建

vim swarm.conf

文件,自定义一下变量

$vi swarm.conf
#定义docker hub的ID,用于在后续进行build和push
IMAGE_TAG=akunisnice/pbspro-maya:onbuild   
#容器名的前缀
PROJECT_NAME=pbspro-maya 
#自定义网络,用于在进行创建容器时,指定此网络
NETWORK_NAME=pbspro-maya-network    
#自定义网络的子网
NETWORK_SUBNET=/   
#可能不需要
SSH_ADDR=  
#可能不需要
SSH_PORT=
           

修改

.env

文件,此文件用于指定生成的本地镜像的名字,

REGISTRY_ADDR

指定为docker hub的ID,

REGISTRY_ADDR=akunisnice
REGISTRY_PORT=
IMAGE_NAME=pbs
SSH_PORT=
           
pbspro-maya多机Swarm编排(待续。。。)1简介2 初始化Swarm3 Swarm编排4 swarm.sh脚本启动的过程5 安装PBS6 问题

登陆docker hub,用于push镜像

$docker login
           

查询Docker Swarm集群节点

pbspro-maya多机Swarm编排(待续。。。)1简介2 初始化Swarm3 Swarm编排4 swarm.sh脚本启动的过程5 安装PBS6 问题

启动4个容器,由swarm在manger和worker1上进行创建

pbspro-maya多机Swarm编排(待续。。。)1简介2 初始化Swarm3 Swarm编排4 swarm.sh脚本启动的过程5 安装PBS6 问题

4 swarm.sh脚本启动的过程

1 初始化集群

CLEAN UP CLUSTER

2 初始化网络

REMOVE NETWORK

docker network rm pbspro-maya-network

3 构建镜像

BUILD IMAGE

docker build -t "akunisnice/pbspro-maya:onbuild" .

此处的 akunisnice/pbspro-maya:onbuild 来源于swarm.conf中的IMAGE_TAG

4 Push镜像

PUSH IMAGE TO REGISTRY

docker push "akunisnice/pbspro-maya:onbuild"

5 创建自定义网络

docker network create --driver overlay --subnet 10.0.9.0/24 --opt encrypted pbspro-maya-network

6 启动master service

SPIN UP MASTER SERVICE:

docker service create --name pbspro-maya-master --replicas 1 --network pbspro-maya-network --publish 2222:22 --user root akunisnice/pbspro-maya:onbuild mpi_bootstrap mpi_master_service_name=pbspro-maya-master mpi_worker_service_name=pbspro-maya-worker role=master

7 启动worker service

SPIN UP WORKER SERVICE

docker service create --name pbspro-maya-worker --replicas 3 --network pbspro-maya-network --user root akunisnice/pbspro-maya:onbuild mpi_bootstrap mpi_master_service_name=pbspro-maya-master mpi_worker_service_name=pbspro-maya-worker role=worker

8 CLUSTER READY

5 安装PBS

5.1 master容器

进入master容器

$docker exec -it e0be41f298 bash
           

在master容器中安装配置pbs

$cd /root/rpmbuild/RPMS/x86_64
$yum install -y pbspro-server-.-.x86_64.rpm
#修改/etc/pbs.conf文件
$vi /etc/pbs.conf
PBS_SERVER=e0be41f298
PBS_START_MOM=
#启动pbs
$/etc/init.d/pbs start
           

5.2 worker容器

写一个脚本自动初始化

分别进入worker容器

$docker exec -it ed11599a4259 bash
           

在worker容器中安装配置pbs

$cd /root/rpmbuild/RPMS/x86_64
$yum install -y pbspro-execution-.-.x86_64.rpm
#修改/etc/pbs.conf文件
$vi /etc/pbs.conf
PBS_SERVER=e0be41f298
#修改/var/spool/pbs/mom_priv/config文件
$vi /var/spool/pbs/mom_priv/config
$clienthost e0be41f298
#启动pbs
$/etc/init.d/pbs start
           

5.3 添加计算节点

将worker容器加入计算节点中

$. /etc/profile.d/pbs.sh
$qmgr -c 'create node ed11599a4259'
$qmgr -c 'create node 1e5be69a31d5'
$qmgr -c 'create node ad8ab23092d4'
           

5.4 测试

前提在所有的计算节点添加相同的非root用户

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

$adduser user1
$su user1
# 查看节点状态 free则节点添加正常
$pbsnodes -a
# 提交作业
$echo 'sleep 10' | qsub
# 查看作业
$qstat -a
           
pbspro-maya多机Swarm编排(待续。。。)1简介2 初始化Swarm3 Swarm编排4 swarm.sh脚本启动的过程5 安装PBS6 问题

6 问题

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

需要在创建容器时,添加–privileged true

继续阅读