推荐看此文从0搭建Centos7 计算集群
2019-09-19:以后遇到的问题我也仅会更新到此文从0搭建Centos7 计算集群
本文不再更新
————————————————-
本文主要在ubuntu编译失败的基础上复制过来,在centos上进行安装尝试。
本文最初的目的是我希望搭建一个环境熟悉torque的命令的,所以搭建的并不适合从事集群计算
搭建计算的集群可以参考集群架设
和CentOS下torque集群配置(一)-torque安装与配置
参考
[转载]PBS!!
“cannot find -lssl; cannot find -lcrypto” when installing mysql-python using mariaDB library
How to Install boost on Ubuntu?
PBS Torque 5.1.3安装配置
CentOS下torque集群配置(一)-torque安装与配置
shell编程。ubuntu下的shell出错,提示第4行function: not found,还有第七行的 } 有错。高手教一下
RED5 INIT SCRIPT FOR UBUNTU
hosts文件详解
集群系统
集群系统就好像一台服务器或者PC,集群资源由实现如下几个部分:
- 资源管理器
为了确保分配给作业合适的资源,集群资源管理需要维护一个数据库。这个数据库记录了集群系统中各种资源的属性和状态、所有用户提交的请求和正在运行的作业。 - 作业调度策略管理器
策略管理器根据资源管理器得到各个结点上的资源状况和系统的作业信息生成一个优先级列表。这个列表告诉资源管理器何时在哪些结点上运行哪个作业
PBS作业分配的调度器 (scheduler),其主要任务是分配批作业计算任务到现有的计算资源上。 PBS的目前包括openPBS,PBS Pro和Torque三个主要分支。 其中OpenPBS是最早的PBS系统,目前已经没有太多后续开发,PBS pro是PBS的商业版本,功能最为丰富。Torque是Clustering公司接过了OpenPBS,并给与后续支持的一个开源版本。
Maui作业调度器,想象为PBS中的一个插入部件。它采用积极的调度策略优化资源的利用和减少作业的响应时间
节点
对于torque PBS有以下节点
- 管理节点(master)
集群系统的管理节点
编译安装管理Torque PBS
安装pbs_server - 计算节点
安装pbs_client
安装pbs_mom - 交作业节点
安装pbs_client
单机安装
此次进行单机安装pbs,即管理节点,计算节点,作业节点都在一个服务器上,不安装Maui
主节点(master)配置
如无特殊说明,以root身份运行
环境
centos 7
下载
安装包下载地址Torque Resource Manager
wget http://wpfilebase.s3.amazonaws.com/torque/torque-6.1.1.1.tar.gz
tar xzvf torque-6.1.1.1.tar.gz
cd torque-6.1.1.1
主机名可改为master,我不改了,查看主机名为VM_10_194_centos
[root@VM_10_194_centos torque-6.1.1.1]# echo $HOSTNAME
VM_10_194_centos
修改/etc/hosts
使里有127.0.0.1 主机名或域名 [别名] [别名]
主机名必须放在别名前面,即VM_10_194_centos
要在localhost
前面,如
127.0.0.1 VM_10_194_centos localhost localhost.localdomain
::1 VM_10_194_centos localhost localhost.localdomain localhost6 localhost6.localdomain6
多节点时要设置各个节点的主机名和ip
安装依赖
yum install libxml2-devel openssl-devel gcc gcc-c++ boost-devel libtool -y
编译安装
编译安装
./configure --prefix=/usr/local/torque --with-default-server=$HOSTNAME
make
make install
其中
$HOSTNAME
是主机名--prefix=安装目录
参数可以不带,则默认安装到/usr/local/sbin
,/usr/local/bin
目录
此处安装到/usr/local/torque
安装后需要添加PATH
添加PATH:
在/etc/profile
里添加export PATH=/usr/local/torque/bin:/usr/local/torque/sbin:$PATH
source /etc/profile
或者退出重新登陆
可通过which pbs_server
查看是否添加成功- 卸载命令
make uninstall
ls /usr/local/torque/sbin
可看到主要安装了这几个程序
- pbs_mom
PBS MOM守护进程, 负责监控本机并执行作业,位于所有计算节点上 - pbs_sched
PBS调度守护进程,负责调度作业,位于服务节点上 - pbs_server
PBS服务守护进程,负责接收作业提交,位于服务节点上
添加系统服务
将上述命令设置为系统服务
cp contrib/init.d/{pbs_{server,sched,mom},trqauthd} /etc/init.d/
之后可以使用系统服务命令快速启动关闭查看状态
老版centos命令,centos7兼容
service pbs_server stop|start|restart|status
centos7还可以使用systemctl
,
systemctl stop|start|restart|status pbs_server
添加开机启动
添加为系统服务后可以添加开机启动
老版centos命令,centos7兼容
chkconfig pbs_server on
chkconfig pbs_sched on
chkconfig pbs_mom on
centos7还可以使用systemctl enable
systemctl enable pbs_server
systemctl enable pbs_sched
systemctl enable pbs_mom
打包,生成个节点安装包
make packages
初始化
qterm
./torque.setup root
qterm为终止pbs_server的运行,若不终止,无法初始化
有教程中说root应为普通用户名
如果/etc/hosts
中主机名放在别名后面,会报错qmgr obj= svr=default: Bad ACL entry in host list MSG=First bad host: VM_10_194_centos ERROR: cannot set root@VM_10_194_centos in operators list
启动程序
for i in pbs_server pbs_sched pbs_mom ; do service $i restart; done
trqauthd
# centos7 还可以
for i in pbs_server pbs_sched pbs_mom ; do systemctl restart $i ; done
trqauthd
ps -e | grep pbs
可以查看启动情况
[root@VM_10_194_centos cndaqiang]# ps -e | grep pbs
8966 ? 00:00:00 pbs_server
8987 ? 00:00:00 pbs_sched
8995 ? 00:00:00 pbs_mom
配置节点
管理节点(调度节点,master)
注:,每次初始化./torque.setup <username>
,会清空管理节点的配置信息,需重新配置
终止pbs_server
qterm
编辑/var/spool/torque/server_priv/nodes
,填入管理节点主机名,如
VM_10_194_centos np=8 normal
#指定节点,节点的进程数目,节点属性
计算节点
编辑/var/spool/torque/mom_priv/config
,填入
$pbsserver VM_10_194_centos
$logevent 255
重启
for i in pbs_server pbs_sched pbs_mom ; do service $i restart; done
trqauthd
查看节点
[root@VM_10_194_centos cndaqiang]# qnodes
VM_10_194_centos
state = free
power_state = Running
np = 1
ntype = cluster
status = opsys=linux,uname=Linux VM_10_194_centos 3.10.0-514.21.1.el7.x86_64 #1 SMP Thu May 25 17:04:51 UTC 2017 x86_64,sessions=10148,nsessions=1,nusers=1,idletime=48030,totmem=3113664kb,availmem=2808244kb,physmem=1016516kb,ncpus=1,loadave=0.00,gres=,netload=2164774121,state=free,varattr= ,cpuclock=Fixed,version=6.1.1.1,rectime=1515722674,jobs=
mom_service_port = 15002
mom_manager_port = 15003
计算节点配置
由于这次是单机,计算节点和管理节点在同一机器,很多集权计算节点的配置不用做了
安装软件包
./torque-package-clients-linux-x86_64.sh --install
./torque-package-mom-linux-x86_64.sh --install
重启
for i in pbs_server pbs_sched pbs_mom ; do service $i restart; done
trqauthd
创建队列
[root@VM_10_194_centos torque]# qmgr
Max open servers: 9
Qmgr: creat queue normal queue_type=execution
Qmgr: set server default_queue=normal
Qmgr: set queue normal started=true
Qmgr: set queue normal enabled=true
Qmgr: set server scheduling=true
Qmgr: (ctrl+d退出)
重启
for i in pbs_server pbs_sched pbs_mom ; do service $i restart; done
注
每次管理节点开机,都需要
trqauthd
和重新创建队列
测试提交任务qsub
[root@VM_10_194_centos torque]# su cndaqiang
[cndaqiang@VM_10_194_centos torque]$ echo "sleep 30" |qsub
8.localhost
[cndaqiang@VM_10_194_centos torque]$ qstat
Job ID Name User Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
8.localhost STDIN cndaqiang 0 R normal
[cndaqiang@VM_10_194_centos torque]$ qstat
Job ID Name User Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
8.localhost STDIN cndaqiang 00:00:00 C normal
30秒后,状态由R
run变为了C
complete
使用
命令
- 提交脚本
qsub <PBS作业脚本>
- 查询作业状态
cndaqiang@centos1:~$ qstat Job ID Name User Time Use S Queue ------------------------- ---------------- --------------- -------- - ----- 8.centos1 STDIN cndaqiang 0 R normal
状态:E退出,Q排队,H挂起,R运行,C结束
- 删除作业
qdel <Job ID>
- 挂起作业
qhold <Job ID>
- 取消挂起
qrls <Job ID>
- 交换作业顺序
qorder <Job ID> <Job ID>
- qstat
qstat 查看最近作业状态 qstat -f <Job ID> 查看作业信息(作业提交多了,忘记是什么必备) qstat -n <Job ID> 查看作业节点
PBS脚本文件
说明
- 本质是一个SHELL脚本,和bash语法相同,可直接调用shell命令
#
开头注释#PBS
开头是PBS运行参数- 环境变量
类似于PHP的魔术变量(预定义常量)
PBS运行参数
可以在qsub 运行参数 <作业脚本>
中设置
也可以在脚本中以#PBS 运行参数
设置
qsub 运行参数 <作业脚本>
设置的优先级更高
详细参数设置
运行VASP示例
pbs脚本中用中文注释会报错qsub: file must be an ascii script
#####PBS参数设置#####
#PBS -N vasp
#程序名
#PBS -l nodes=1:ppn=3
#节点,每个节点核数
#PBS -l walltime=1:00:00:00
#作业运行最大时间1天,估算自己的作业最大运行时间,这里指定一下
#PBS -q batch
# 添加到队列batch
#PBS -V
#定义环境变量范围
#PBS -S /bin/bash
#####设置PATH#####
source /opt/intel/compilers_and_libraries_2018.0.128/linux/bin/compilervars.sh intel64
source /opt/intel/compilers_and_libraries_2018.0.128/linux/bin/iccvars.sh intel64
source /opt/intel/compilers_and_libraries_2018.0.128/linux/bin/ifortvars.sh intel64
source /opt/intel/compilers_and_libraries/linux/mkl/bin/mklvars.sh intel64
source /opt/intel/impi/2018.0.128/bin64/mpivars.sh
#####计算#####
cd $PBS_O_WORKDIR
#进入工作目录
EXEC=/home/cndaqiang/soft/vasp.5.4.1/build/std/vasp
#vasp
NP=`cat $PBS_NODEFILE | wc -l`
#wc -l 统计行数
#NP为 mpirun运行的np(number of processes,),核数
NN=`cat $PBS_NODEFILE | sort | uniq | tee /tmp/cqiang_nodes.$$ | wc -l`
#sort排序,uniq去除重复,tee重定向输出,$$代表shell本身的PID
#NN为节点数
cat $PBS_NODEFILE > /tmp/cqiang_nodefile.$$
#存储节点进程信息
mpirun -genv I_MPI_DEVICE rdssm -machinefile /tmp/cqiang_nodefile.$$ -n $NP $EXEC
# -machinefile :指定加入运算的资源
# -nolocal :本机器不参与运算
# -np :处理器数量
rm -rf /tmp/cqiang_nodefile.$$
rm -rf /tmp/cqiang_nodes.$$
将脚本放于vasp输入文件同一目录
qsub <脚本名>
即可运行
本文首发于我的博客@cndaqiang.
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!