pbspro-maya多机Swarm编排(待续。。。)

1简介

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

名称IP
manager192.168.64.81
worker1192.168.64.82

建立ssh互信

2 初始化Swarm

manager节点

$docker swarm init --advertise-addr 192.168.64.81

worker1节点

$docker swarm join --token SWMTKN-1-0ywpjymsl4rtapep750pdbdrot6imo26di0lk7p8vp5lslm57e-8z9nlodshv324dvyn0v73ooqw 192.168.64.81:2377

manager节点查看

$docker node ls

swarm节点

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 600 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=10.0.9.0/24   
#可能不需要
SSH_ADDR=192.168.64.81  
#可能不需要
SSH_PORT=2222

修改.env文件,此文件用于指定生成的本地镜像的名字,REGISTRY_ADDR指定为docker hub的ID,

REGISTRY_ADDR=akunisnice
REGISTRY_PORT=5000
IMAGE_NAME=pbs
SSH_PORT=2222

本地镜像

登陆docker hub,用于push镜像

$docker login

查询Docker Swarm集群节点

$docker node ls

Swarm集群节点

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

./swarm.sh up size=4

启动4个容器

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 53e0be41f298 bash

在master容器中安装配置pbs

$cd /root/rpmbuild/RPMS/x86_64
$yum install -y pbspro-server-14.1.0-0.x86_64.rpm
#修改/etc/pbs.conf文件
$vi /etc/pbs.conf
PBS_SERVER=53e0be41f298
PBS_START_MOM=1
#启动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-14.1.0-0.x86_64.rpm
#修改/etc/pbs.conf文件
$vi /etc/pbs.conf
PBS_SERVER=53e0be41f298
#修改/var/spool/pbs/mom_priv/config文件
$vi /var/spool/pbs/mom_priv/config
$clienthost 53e0be41f298
#启动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

image.png

6 问题

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值