単機Docker-compose編成pbspro_maya
17835 ワード
単機Docker-compose編成pbspro_maya
1前提
1 dockerのインストール
参考centos 7インストールdocker
2 docker composeのインストール
方法1:
$curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$chmod +x /usr/local/bin/docker-compose
#
$docker-compose version
方法2:pip方式で取り付ける(予備)
# pip
yum -y install epel-release
yum -y install python-pip
#
pip --version
# pip
pip install --upgrade pip
# docker-compose
pip install docker-compose
#
docker-compose version
3 pbspro-mayaミラーの準備
方法1:pullpbspro-mayaミラーリング
# pullpbspro-maya push docker hub
docker pull akunisnice/pbspro-maya
方法2:pbspro-mayaミラーを作成する
参考:Centos 7+Maya 2017+Pbsproインストール
2 Component編成
フォルダ:compose-pbspro-mayaディレクトリ構造は次のとおりです.
compose-pbspro-maya
|__ base: Dockerfile(centos7+maya+pbspro Dockerfile)
|__ onbuild
|__ Dockerfile : ssh copy
|__ cluster:
|__ cluster.sh :Compose
|__ Dockerfile : (akunisnice/pbspro-maya:onbuild)
|__ docker-compose.yml : master worker
|__ .evn : REGISTRY_ADDR、REGISTRY_PORT、IMAGE_NAME
ダウンロード先:pbspro_maya
プロファイル
ビルドを推奨する場合、ミラー名はpushミラーのルールに合致し、後続の編成が容易である
$cd compose-pbspro-maya/onbuild
#
$docker build -t akunisnice/pbspro-maya:onbuild .
#
$cd compose-pbspro-maya/cluster
# Dockerfile , build FROM
##########################################################################
FROM akunisnice/pbspro-maya:onbuild
##########################################################################
# docker-compose.yml , master hostname、privileged volumes
$vi docker-compose.yml
##########################################################################
...
master:
image: $REGISTRY_ADDR:$REGISTRY_PORT/$IMAGE_NAME
user: root
hostname: master
privileged: true
entrypoint: ["mpi_bootstrap", "role=master", "mpi_master_service_name=master", "mpi_worker_service_name=worker"]
ports:
- "${SSH_PORT}:22"
networks:
- net
volumes:
- /pbs:/pbs
worker:
image: $REGISTRY_ADDR:$REGISTRY_PORT/$IMAGE_NAME
user: root
entrypoint: ["mpi_bootstrap", "role=worker", "mpi_master_service_name=master", "mpi_worker_service_name=worker"]
networks:
- net
volumes_from:
- master
...
##########################################################################
pbs共有ボリューム
ネイティブルートディレクトリにpbsフォルダを作成し、pbsファイルダウンロード:ファイルアドレス
pbs共有ボリューム:コンテナにログインしてpbsをインストールするための
pbs
|__master
|__login_master.sh : master , installpbs_master.sh
|__installpbs_master.sh : pbspro, , pbs
|__worker
|__login_worker.sh : worker , installpbs_worker.sh( )
|__login_Singleworker.sh : worker , installpbs_worker.sh
|__installpbs_worker.sh : pbspro, , pbs
スターティングコンテナ
3つのコンテナを起動
# cluster.sh
$chmod +x cluster.sh
#
$./cluster.sh up size=3
表示
$docker ps
clusterを実行します。shスクリプトプロセス
CLEAN UP CLUSTER
SPIN UP REGISTRY
BUILD IMAGE
PUSH IMAGE TO REGISTRY
SPIN UP MASTER NODE
SPIN UP WORKER NODES
CLUSTER READY
3 Pbspro取付
1 cluster_master_1
共有ボリュームpbsに入り、スクリプトを使用してcluster_master_1容器ノード取付Pbspro
$cd /pbs/master/
# ./login_master.sh, master
$./login_master.sh cluster_master_1
# , ..., , cluster_master_1 Pbspro
$docker exec -it cluster_master_1 /etc/init.d/pbs status
あるいは以下のコマンドに従って手動で容器に入ってPbsproを取り付ける
#
$docker exec -it cluster_master_1 bash
$cd /root/rpmbuild/RPMS/x86_64
$yum install -y pbspro-server-14.1.0-0.x86_64.rpm
# /etc/pbs.conf, cluster_master_1
$vi /etc/pbs.conf
PBS_START_MOM=1
# pbs
$/etc/init.d/pbs start
2 cluster_worker_*
共有ボリュームpbsに入り、スクリプトを使用して
cluster_worker_*
コンテナノードにPbsproをインストールします.備考:本来は
login_worker.sh
で一括インストールが可能ですが、docker exec
を実行するとリサイクルできないようです# cluster_worker_1 Pbspro
$cd /pbs/worker
# ./login_Singleworker containerId/Name
$./login_Singleworker cluster_worker_1
# , pbs
pbsステータスの表示
$docker exec -it cluster_worker_* /etc/init.d/pbs status
正常な状態で、上記の手順に従って他のworker容器にPbsproを取り付け続けます
あるいは以下のコマンドを手動で実行して各workerコンテナにPbsproを取り付ける
#
$docker exec -it cluster_worker_1 bash
$cd /root/rpmbuild/RPMS/x86_64
$yum install -y pbspro-execution-14.1.0-0.x86_64.rpm
# /etc/pbs.conf ,PBS_SERVER cluster_master_1 hostname, master
$vi /etc/pbs.conf
PBS_SERVER=master
# /var/spool/pbs/mom_priv/config , cluster_master_1 hostname
$vi /var/spool/pbs/mom_priv/config
$clienthost master
# pbs
$/etc/init.d/pbs start
3計算ノードの追加
cluster_へmaster_1ノード、計算ノードを追加(ここではスクリプトと書くこともできますが、あまり必要ない感じがします)
$docker exec -it cluster_master_1 bash
$. /etc/profile.d/pbs.sh
$qmgr -c 'create node cluster_worker_1'
$qmgr -c 'create node cluster_worker_2'
4テスト
すべての計算ノードに同じroot以外のユーザーを追加することを前提とします.
$docker exec -it cluster_master_1 adduser user1
$docker exec -it cluster_worker_1 adduser user1
$docker exec -it cluster_worker_2 adduser user1
通常のユーザーを使用してmasterノードにログインし、実行
$su user1
# free
$pbsnodes -a
#
$echo 'sleep 10' | qsub
#
$qstat -a
4問題
1 cannot create directory ‘/sys/fs/cgroup/systemd/system.slice’: Read-only file system
理由:権限が足りず、masterノードにコンテナを作成する場合、追加:privileged
2 build openpbsタイムズでエラーが発生すると、rpmbuild-ba pbsproでエラーが発生します.spec、Dockerfileをチェック
Dockerfileファイルを変更し、最後から2行目を次のように変更します.
tar zxvf v14.1.0.tar.gz && mv v14.1.0.tar.gz pbspro-14.1.0.tar.gz
これで終わりだ!後ろのはもう上に追加されました
5改善点:スクリプト登録容器取付PBS
2 Compose
に戻る5.1ボリュームの追加
docker-compose.yml
ファイルを変更すると、コンテナ間でスクリプトファイルを共有するためのマウントボリュームが追加されます.volumesの追加
volumes:
- /pbs:/pbs
volumes_の追加from
volumes_from:
- master
5.2コンテナの再作成
作成したコンテナを停止、消去、network
$./cluster.sh down
再
$./cluster.sh up size=3
、であることができる.Envで倉庫の名前とミラー名を変更するボリュームpbsファイルの下:ファイルアドレス
pbs
|__master
|__login_master.sh : master , installpbs_master.sh
|__installpbs_master.sh : pbspro, , pbs
|__worker
|__login_worker.sh : worker , installpbs_worker.sh
|__installpbs_worker.sh : pbspro, , pbs
5.3 Master自動インストールPbspro
#
$docker ps
$cd /pbs/master/
$chmod +x login_master.sh installpbs_master.sh
#./login_master.sh [ ID/Name]
$./login_master.sh cluster_master_1
# TTY, login_master.sh, -d , ,
# , cluster_master_1
$docker exec -it cluster_master_1 bash
# pbs
$/etc/init.d/pbs status
5.4ロット量子化worker取付Pbspro
$cd /pbs/master/
$chmod +x login_worker.sh installpbs_worker.sh
$./login_worker.sh
#worker Pbspro , ./login_worker.sh
5.5 Masterコンテナにworkerコンテナを追加する
ここではスクリプトを作成したり、自動化して追加したりすることもできますが、必要ないと感じて、手動で追加します.
$. /etc/profile.d/pbs.sh
$qmgr -c 'create node cluster_master_1'
$qmgr -c 'create node cluster_worker_1'
$qmgr -c 'create node cluster_worker_2'
# free
$pbsnodes -a
5.6テスト
すべての計算ノードに同じroot以外のユーザーを追加するか、スクリプトに書くか、自動化して追加できます.
$docker exec -d [containerId] adduer user1
通常のユーザーを使用してmasterノードにログインし、実行
$adduser user1
$su user1
# free
$pbsnodes -a
#
$echo 'sleep 10' | qsub
#
$qstat -a