- 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节点查看
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiADNyEzLcd3LcJzLcJzdllmVldWYtl2Q3UCcpJHdz9CX05WZpJ3bt8Gd1F2LcJjcn9WTldWYtl2Pn5GcuIDMlZ2NjlzNxYDM5EWMzYTLyEjN5UTO18CXzV2Zh1WafRWYvxGc19CXvlmL1h2cuFWaq5ycldWYtlWLkF2bsBXdvw1LcpDc0RHaiojIsJye.png)
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=
登陆docker hub,用于push镜像
$docker login
查询Docker Swarm集群节点
启动4个容器,由swarm在manger和worker1上进行创建
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
6 问题
1 mkdir: cannot create directory ‘/sys/fs/cgroup/systemd/system.slice’: Read-only file system
需要在创建容器时,添加–privileged true