前提,安装Docker,制作镜像centos+pbspro+maya镜像
名称 | IP |
---|---|
manager | 192.168.64.81 |
worker1 | 192.168.64.82 |
建立ssh互信
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
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
启动4个容器,由swarm在manger和worker1上进行创建
./swarm.sh up size=4
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
进入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
写一个脚本自动初始化
分别进入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
将worker容器加入计算节点中
$. /etc/profile.d/pbs.sh
$qmgr -c 'create node ed11599a4259'
$qmgr -c 'create node 1e5be69a31d5'
$qmgr -c 'create node ad8ab23092d4'
前提在所有的计算节点添加相同的非root用户
使用普通用户登录master节点,然后运行
$adduser user1
$su user1
# 查看节点状态 free则节点添加正常
$pbsnodes -a
# 提交作业
$echo 'sleep 10' | qsub
# 查看作业
$qstat -a
1 mkdir: cannot create directory ‘/sys/fs/cgroup/systemd/system.slice’: Read-only file system
需要在创建容器时,添加–privileged true