- 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節點檢視
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