天天看點

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

繼續閱讀