[TOC]
Docker容器安裝-多節(jié)點PbsPro
名稱 | 版本 | 下載 |
---|---|---|
系統(tǒng) | CentOS-7-x86_64-DVD-1708 | 點我 |
鏡像 | pbspro/pbspro | docker pull pbspro/pbspro |
1 簡介:
1.1 Docker簡介
Docker 是一個開源的應(yīng)用容器引擎虐拓,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的容器中瀑凝,然后發(fā)布到任何流行的 Linux 機器上冰蘑,也可以實現(xiàn)虛擬化贿衍。容器是完全使用沙箱機制店乐,相互之間不會有任何接口。
一個完整的Docker有以下幾個部分組成:
1.dockerClient客戶端
2.Docker Daemon守護進程
3.Docker Image鏡像
4.DockerContainer容器
Docker總架構(gòu)
詳情:Docker源碼分析(一):Docker架構(gòu)
1.2 PBS簡介
PBS(Portable Batch System)最初由NASA的Ames研究中心開發(fā),主要為了提供一個能滿足異構(gòu)計算網(wǎng)絡(luò)需要的軟件包,用于靈活的批處理证舟,特別是滿足高性能計算的需要,如集群系統(tǒng)窗骑、超級計算機和大規(guī)模并行系統(tǒng)女责。
PBS是功能最為齊全, 歷史最悠久, 支持最廣泛的本地集群調(diào)度器之一。PBS的主要特點有:代碼開放创译,免費獲鹊种;支持批處理、交互式作業(yè)和串行刷喜、多種并行作業(yè)残制,如MPI、PVM吱肌、HPF、MPL仰禽。
PBS的目前包括:openPBS, PBS Pro和Torque三個主要分支.
OpenPBS:是最早的PBS系統(tǒng), 目前已經(jīng)沒有太多后續(xù)開發(fā)
PBS pro:是PBS的商業(yè)版本, 功能最為豐富
Torque:是Clustering公司接過了OpenPBS, 并給與后續(xù)支持的一個開源版本
應(yīng)用PBS提交任務(wù)則會形成任務(wù)隊列氮墨,依次執(zhí)行,有效分配資源吐葵,避免資源競爭规揪。否則CPU時間片會輪流分配給各個人的任務(wù),從而影響所有人的正常作業(yè)温峭。
torque主要由三個主要部件組成:
PBS服務(wù)守護進程: pbs_server 負責(zé)接收作業(yè)提交猛铅,位于服務(wù)節(jié)點
PBS調(diào)度守護進程: pbs_sched 負責(zé)調(diào)度作業(yè),位于服務(wù)節(jié)點
PBS MOM守護進程: pbs_mom 負責(zé)監(jiān)控本機并執(zhí)行作業(yè)凤藏,位于所有計算節(jié)點
2 安裝Docker
網(wǎng)上的安裝資料很多:centos7 安裝docker
#卸載老版本的 docker 及其相關(guān)依賴
$sudo yum remove docker docker-common container-selinux docker-selinux docker-engine
#安裝 yum-utils奸忽,它提供了 yum-config-manager,可用來管理yum源
$sudo yum install -y yum-utils
#添加yum源
$sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#更新yum索引
$sudo yum makecache fast
#安裝 docker-ce
$sudo yum install docker-ce
#啟動 docker
$sudo systemctl start docker
#驗證是否安裝成功
$sudo docker info
#通過修改daemon配置文件/etc/docker/daemon.json來使用加速器
$vi /etc/docker/daemon.json
#添加
{
"registry-mirrors": ["https://w5z91a3d.mirror.aliyuncs.com"]
}
#開放管理端口映射
$vi /lib/systemd/system/docker.service
#修改ExecStart=/usr/bin/dockerd為以下內(nèi)容
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H tcp://0.0.0.0:7654
#將管理地址寫入 /etc/profile
$echo 'export DOCKER_HOST=tcp://0.0.0.0:2375' >> /etc/profile
$source /etc/profile
$systemctl daemon-reload && service docker restart
#測試docker
$sudo docker run hello-world
#若成功揖庄,顯示:
Hello from Docker!
This message shows that your installation appears to be working correctly.
#安裝OK!
Docker 安裝完成后栗菜,下載pbspro/pbspro鏡像,此鏡像中已經(jīng)安裝了pbspro
$Docker pull pbspro/pbspro
下一步蹄梢,運行此鏡像創(chuàng)建三個容器建立SSH互信疙筹。
3 建立SSH互信
使用pbspro/pbspro鏡像創(chuàng)建三個容器,分別指定鏡像名稱禁炒、hostname而咆、自定義網(wǎng)絡(luò)、IP并且添加互信的hostname到/etc/hosts中幕袱,如下表:
容器名稱 | 容器hostname | ip |
---|---|---|
pbs1 | pbs1 | 172.18.0.3 |
pbs2 | pbs2 | 172.18.0.4 |
pbs3 | pbs3 | 172.18.0.5 |
鏡像創(chuàng)建三個容器暴备,pbs1作為主節(jié)點進行管理,pbs2和pbs3作為計算節(jié)點進行計算
$docker run -tid --name pbs1 -h pbs1 --add-host pbs1:172.18.0.3 --add-host pbs2:172.18.0.4 --add-host pbs3:172.18.0.5 --net=mynetwork --ip=172.18.0.3 pbspro/pbspro bash
$docker run -tid --name pbs2 -h pbs2 --add-host pbs1:172.18.0.3 --add-host pbs2:172.18.0.4 --add-host pbs3:172.18.0.5 --net=mynetwork --ip=172.18.0.4 pbspro/pbspro bash
$docker run -tid --name pbs3 -h pbs3 --add-host pbs1:172.18.0.3 --add-host pbs2:172.18.0.4 --add-host pbs3:172.18.0.5 --net=mynetwork --ip=172.18.0.5 pbspro/pbspro bash
查看剛剛創(chuàng)建的三個制定鏡像们豌,如下圖所示:
分別進入這三個容器馍驯,參考使用ssh在容器間建立互信.md
進行建立ssh互信
建立完畢后,在分別進行配置PbsPro
4 安裝配置PbsPro
因為下載的這個鏡像已經(jīng)安裝有了Pbspro玛痊,所以只需要配置汰瘫,如果想制作自己的PbsPro,請參考:使用RPM包安裝PBS Pro
4.1 配置管理節(jié)點
登錄管理節(jié)點pbs1擂煞,然后以root用戶運行混弥,修改/etc/pbs.conf
$vi /etc/pbs.conf
#修改PBS_SERVER和PBS_START_MOM
PBS_SERVER=pbs1
PBS_START_MOM=0
備注:如果是單機安裝pbspro,要將PBS_START_MOM改為1
修改/var/spool/pbs/mom_priv/config
$vi /var/spool/pbs/mom_priv/config
#修改clienthost為pbs1
clienthost pbs1
4.2 配置計算節(jié)點
分別登錄計算節(jié)點pbs2和pbs3,然后以root用戶運行蝗拿,修改/etc/pbs.conf
$vi /etc/pbs.conf
#修改PBS_SERVER和PBS_START_MOM
PBS_SERVER=pbs1
PBS_START_MOM=1
修改/var/spool/pbs/mom_priv/config
$vi /var/spool/pbs/mom_priv/config
#修改clienthost為pbs1
clienthost pbs1
4.3 啟動PBS添加計算節(jié)點
分別在pbs1和pbs2晾捏、pbs3節(jié)點上運行以下命令啟動pbs,第一次啟動會創(chuàng)建數(shù)據(jù)庫
$/etc/init.d/pbs start
備注:
$/etc/init.d/pbs start #啟動pbs
$/etc/init.d/pbs stop #停止pbs
$/etc/init.d/pbs restart #重啟pbs
$/etc/init.d/pbs status #查看pbs狀態(tài)
在管理節(jié)點添加計算機節(jié)點pbs2哀托、pbs3
$. /etc/profile.d/pbs.sh
$qmgr -c "create node pb2"
$qmgr -c "create node pb3"
查看添加的計算節(jié)點惦辛,節(jié)點的狀態(tài)顯示為free
即就是計算節(jié)點添加成功
$pbsnodes -a
4.3 測試
在管理節(jié)點pbs1創(chuàng)建用戶,進行提交作業(yè)仓手,狀態(tài)顯示R為任務(wù)正在運行胖齐,同時也需要在其他計算節(jié)點也添加相同的用戶,使其UID個GID一樣
$useradd user1
$su user1
$cd
$qsub -- /bin/sleep 10
$qstat -a
#使用tracejob JobID查看作業(yè)的進度
$tracejob 13.pbs1
備注:**pbs任務(wù)提交腳本及查看任務(wù)狀態(tài)
#B 只用于任務(wù)向量嗽冒,表示任務(wù)向量已經(jīng)開始執(zhí)行
#E 任務(wù)在運行后退出
#H 任務(wù)被服務(wù)器或用戶或者管理員阻塞
#Q 任務(wù)正在排隊中呀伙,等待被調(diào)度運行
#R 任務(wù)正在運行
#S 任務(wù)被服務(wù)器掛起,由于一個更高優(yōu)先級的任務(wù)需要當(dāng)前任務(wù)的資源
#T 任務(wù)被轉(zhuǎn)移到其它執(zhí)行節(jié)點了
#U 由于服務(wù)器繁忙添坊,任務(wù)被掛起
#W 任務(wù)在等待它所請求的執(zhí)行時間的到來(qsub -a)
#X 只用于子任務(wù)剿另,表示子任務(wù)完成
5 PBS命令
5.1 qsub 命令
qsub 命令:用于提交作業(yè)腳本
#命令格式:
$qsub -a date_time [-C directive_prefix]
-e path -j join -l resource_list
-M user_list -o path -q destination
-S path_list-v variable_list
-W additional_attributes
參數(shù)說明:因為所采用的選項一般放在pbs 腳本中提交,所以具體見PBS 腳本選項贬蛙。
例:# qsub aaa.pbs 提交某作業(yè)雨女,系統(tǒng)將產(chǎn)生一個作業(yè)號
5.2 qstat 命令
qstat 命令:用于查詢作業(yè)狀態(tài)信息
#命令格式:
$qatat -f-i-s -Q-B
參數(shù)說明:
參數(shù) | 作用 |
---|---|
-f | jobid 列出指定作業(yè)的信息 |
-a | 列出系統(tǒng)所有作業(yè) |
-i | 列出不在運行的作業(yè) |
-n | 列出分配給此作業(yè)的結(jié)點 |
-s | 列出隊列管理員與scheduler 所提供的建議 |
-R | 列出磁盤預(yù)留信息 |
-Q | 操作符是destination id,指明請求的是隊列狀態(tài) |
-q | 列出隊列狀態(tài)阳准,并以alternative 形式顯示 |
-au userid | 列出指定用戶的所有作業(yè) |
-B | 列出PBS Server 信息 |
-r | 列出所有正在運行的作業(yè) |
-Qf queue | 列出指定隊列的信息 |
-u | 若操作符為作業(yè)號戚篙,則列出其狀態(tài)。 |
例:# qstat -f 211 查詢作業(yè)號為211 的作業(yè)的具體信息溺职。
5.3 qdel 命令
qdel 命令:用于刪除已提交的作業(yè)
#命令格式:
$qdel [-W 間隔時間] 作業(yè)號
例:# qdel -W 15 211 #15秒后刪除作業(yè)號為211 的作業(yè)
5.4 qmgr 命令—用于隊列管理
qmgr 命令—用于隊列管理
qmgr -c "create queue batch queue_type=execution"
qmgr -c "set queue batch started=true"
qmgr -c "set queue batch enabled=true"
qmgr -c "set queue batch resources_default.nodes=1"
qmgr -c "set queue batch resources_default.walltime=3600"
qmgr -c "set server default_queue=batch"
5.5 基本腳本寫法和選項
當(dāng)多個用戶使用同一個計算資源時岔擂,每個用戶用PBS腳本提交自己的任務(wù),由PBS對這些任務(wù)進行管理和資源的分配浪耘。下面是一個簡單的PBS腳本:
#!/bin/bash
#PBS -l nodes=20
#PBS -N snaphu
#PBS -j oe
#PBS -l walltime=24:00:00
#PBS -l cput=1:00:00
#PBS -q dque
$cd $PBS_O_WORKDIR
$cat PBS_NODEFILE PBS_NODEFILE> NODEFILE
$mpirun -np ./mpitest
將這個腳本保存成submit然后qsub submit就將這個mpitest的任務(wù)提交給了系統(tǒng)乱灵。腳本中#PBS為腳本選項,用于設(shè)置一些參數(shù)七冲。
#PBS -l 表示資源列表痛倚,用于設(shè)定特定任務(wù)所需的一些參數(shù)。這里的nodes表示并行環(huán)境下可以使用的節(jié)點數(shù)澜躺,而walltime表示任務(wù)最大時限蝉稳,而cput表示cpu時間的最大時限,運行時間和cpu使用時間超過對應(yīng)的時限掘鄙,任務(wù)就會以超時退出耘戚。這三個參數(shù)不是PBS腳本參數(shù),而是并行環(huán)境所需的參數(shù)操漠。
#PBS -N 表示任務(wù)名稱收津。
#PBS -j 表示系統(tǒng)輸出,如果是oe,則標準錯誤輸出(stderr)和標準輸出(stdout)合并為stdout撞秋,如果是eo长捧,則合并為stderr,如果沒有設(shè)定或設(shè)定為n吻贿,則stderr和stdout分開串结。
#PBS -q 表示當(dāng)前任務(wù)選用的隊列。在并行環(huán)境下舅列,一個系統(tǒng)中往往有多個隊列肌割,任務(wù)提交后,將在所選的隊列中排除等候剧蹂。系統(tǒng)中有哪些隊列可以用qstat -q查看声功。
PBS腳本文件由腳本選項和運行腳本兩部分組成烦却。
PBS作業(yè)腳本選項 (若無-C選項宠叼,則每項前面加‘#PBS’)
運行腳本同LINUX下一般的運行腳本文件格式如下:
? mpirun –np 進程數(shù) ./可執(zhí)行程序名
6 可能出現(xiàn)的問題
1 防火墻
出于簡單,可以關(guān)閉防火墻
$systemctl stop firewalld.service #停止firewall
$systemctl disable firewalld.service #禁止firewall開機啟動
2 下載源
更換 CentOS 7 的下載源為阿里云
$yum install -y wget
#備份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#下載新的CentOS-Base.repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#清除YUM緩存
yum clean all
#重建數(shù)據(jù)庫
rpm --rebuilddb
#生成緩存
$yum makecache
3 IPv4 forwarding is disabled
若出現(xiàn)WARNING IPv4 forwarding is disabled. Networking will not work
#解決辦法:
$vi /usr/lib/sysctl.d/00-system.conf
#添加如下代碼:
net.ipv4.ip_forward=1
#重啟network服務(wù)
$systemctl restart network
#查看是否修改成功
$sysctl net.ipv4.ip_forward
#如果返回為net.ipv4.ip_forward = 1則表示成功了
4 yum 安裝時錯誤 Errno 14 Couldn't resolve host
修改一下 /etc/resolv.conf其爵,添加一個nameserver 8.8.8.8完成
$vi /etc/resolv.conf
nameserver 8.8.8.8
7 總結(jié)
待續(xù)冒冬。。摩渺。
參考資料
1 :Using Docker to Instantiate PBS
3:How to install PBS Pro using the configure script
? 2017/11/16-Boy