OpenPBS这个软件在全是32位机器的cluster上很容易装,但在32位的前端机,64位的后台节点的cluster
上就不容易装好,还没找到文档,因此写一个。
cluster环境:1个32位的前端机gridserver和8个64位的后台结点。那个前端机安装了2块网卡。
前端机:166.*.*.47/10.0.1.191 hostname: gridserver
后台8个结点:10.0.1.121-----10.0.1.128 hostname分别是:cn121------cn128
其中166开头的是外网地址,10开头的是内网地址。
前端机上AS4,内核2.6,i686 arch; 后台节点AS3,内核2.4,IA64 arch。
别用太新的OS,OpenPBS在gcc 4以上编译出错。如果是新系统,就装torque。
总体安装过程就是:
从后台8个节点中选出一个cn121做pbs的server,其他7个节点做pbs的client。
pbs server (cn121) exports 目录给cn122---cn128、gridserver
一般exports $HOME/users/ ,本文档$HOME不准备用,直接exports $HOME了。
因此这里的前端机gridserver只是一个观察的窗口。在全是32位机器的情况下,一般是把前端机做为
pbs的server。当前硬件条件下,把前端机做pbs server的方法只能部分成功,就是执行一般的脚本时
都可以,但当需要执行二进制文件时就出错,会使pbs server崩溃,需要重启机器才行。
安装分为四大步:无密码登录、装OpenPBS、NFS、启动OpenPBS
一.在上面9台机器上配置rsh和rlogin
[root@gridserver ~]# useradd fitgrid -u 620
[root@gridserver ~]# passwd fitgrid
注意:不同机器上的fitgrid用户要拥有同样的uid和gid。我指定了uid,大一些防止冲突.
1. 安装rsh-0.17-14.i386.rpm和rsh-server-0.17-14.i386.rpm
[root@gridserver ~]# rpm -qa |grep rsh 如果没有就下rpm装
[root@gridserver ~]# rpm -ivh rsh-0.17-14.i386.rpm rsh-server-0.17-14.i386.rpm
2.在9台机器上,# vi /etc/hosts 末尾加上以下内容:
10.0.1.125 cn121 #compute node1
10.0.1.125 cn122 #compute node2
10.0.1.125 cn123 #compute node3
10.0.1.125 cn124 #compute node4
10.0.1.125 cn125 #compute node5
10.0.1.126 cn126 #compute node6
10.0.1.127 cn127 #compute node7
10.0.1.125 cn128 #compute node8
10.0.1.191 gridserver #head node
166.*.*.47 gridserver #head node
3. 在9台机器上
[root@gridserver ~]# su - fitgrid
[fitgrid@gridserver ~]$ cd && vi .rhosts 末尾加上以下内容:
cn121 fitgrid #compute node1
cn122 fitgrid #compute node2
cn123 fitgrid #compute node3
cn124 fitgrid #compute node4
cn125 fitgrid #compute node5
cn126 fitgrid #compute node6
cn127 fitgrid #compute node7
cn128 fitgrid #compute node8
gridserver fitgrid #head node
[fitgrid@gridserver ~]$ chmod 0600 .rhosts && exit
[root@gridserver ~]# chkconfig rlogin on && chkconfig rsh on
[root@gridserver ~]# iptables –F
[root@gridserver ~]# vi /etc/selinux/config 将SELINUX= 那行改成:
SELINUX=disabled
[root@gridserver ~]# service network restart
[root@gridserver ~]# service xinetd restart
4. 测试:
[root@gridserver ~]# su - fitgrid
[fitgrid@gridserver ~]$ rsh cn125 ls /home
如果能看到里面的文件就成功了,否则就回去查错,多看/var/log/ 下的日志,实在不行就重启机器试试。
说明:
1).rhosts文件可以用/etc/hosts.equiv文件替代,在里面添加信任的hostname + username,
当用户数量较多时,一般都用这个文件,更方便。man hosts.equiv
2)rsh的时候要经过krb4验证之后才显示内容:
[fitgrid@gridserver bin]$ rsh cn125 ls /home
connect to address 10.0.1.125: Connection refused
Trying krb4 rsh...
connect to address 10.0.1.125: Connection refused
trying normal rsh (/usr/bin/rsh)
cgsp
cgsp2
fitgrid
这个不影响,不用管。
3)当rsh到某个节点时候,有时候有如下出错信息:
[fitgrid@gridserver root]$ rsh cn127
connect to address 10.0.1.127: Connection refused
Trying krb4 rlogin...
connect to address 10.0.1.127: Connection refused
trying normal rlogin (/usr/bin/rlogin)
YPBINDPROC_DOMAIN: Domain not bound
YPBINDPROC_DOMAIN: Domain not bound
这是NIS配置引起的,# vi /etc/nsswitch.conf 如发现有如下行:
passwd: nis files
shadow: nis files
group: nis files
改写成如下形式:
passwd: files
shadow: files
group: files
二、安装配置OpenPBS(必须用root安装,假设压缩包在/usr/local目录下)
主要参考下面两篇文章:
1. http://www.webmo.net/support/pbs.html
2. External Reference Specification.pdf
安装分为pbs server、pbs client端、前端机gridserver三部分。 pbs server端指cn121,即提交
作业的节点,而pbs client端指cn122---cn128,即执行作业的节点。
前端机gridserver是cluster提供给外界的窗口。
pbs server的安装:
[root@cn121 ~]# tar zxvf OpenPBS.2.3.16-IA64-AS3.tgz -C /usr/local/
[root@cn121 local]# cd /usr/local/OpenPBS_2_3_16
[root@cn121 OpenPBS_2_3_16]# ./configure --disable-gui && make && make install
默认装到 /usr/spool/PBS/ 下
[root@cn121 OpenPBS_2_3_16]# vi /etc/profile 末尾加上:
PBS_HOME=/usr/spool/PBS
export PBS_HOME
[root@cn121 OpenPBS_2_3_16]# source /etc/profile
这里最好设置$PBS_HOME=/usr/spool/PBS。因为有的软件比如Globus Toolkit将pbs默认的安装路径假
定为/var/spool/PBS.
一般来说, PBS系统必须有server和至少一个mom, server负责作业的提交, mom接受server的控制,负责
作业的执行。Client端必须配置mom,只有执行任务的节点才需要配置mom。这里我没让cn121执行任务。
[root@cn121 ~]# vi /usr/spool/PBS/server_priv/nodes 一般有几个core, np就填几。
cn121 np=2
cn122 np=2
cn123 np=2
cn124 np=2
cn125 np=2
cn126 np=2
cn127 np=2
cn128 np=2
[root@cn121 ~]# vi /usr/spool/PBS/server_name
cn121
pbs client端的安装, 这里拿cn125做为例子:
client端的安装有多种方案,这里采用完全安装,即client端的安装与serve端的安装完全一样。
这样以后可以随意的选择一个节点作为server端,别的节点作为client端。
[root@cn125 ~]# vi /usr/spool/PBS/server_name
cn121
[root@cn125 ~]# vi /usr/spool/PBS/mom_priv/config
$logevent 0x1ff
$clienthost cn121
$clienthost 就填pbs server的hostname
前端机gridserver的安装 要装32位的,而且要先打补丁,假定安装包在/usr/local/下:
[root@gridserver ~]# tar xvf OpenPBS_2_3_16.tar -C /usr/local
[root@gridserver ~]# cp pbs.patch /usr/local/OpenPBS_2_3_16/
[root@gridserver ~]# cd /usr/loca/OpenPBS_2_3_16 && patch -p1 -b < pbs.patch
[root@gridserver OpenPBS_2_3_16]# vi /usr/spool/PBS/server_name
cn121
[root@gridserver OpenPBS_2_3_16]# vi /usr/spool/PBS/ mom_priv/config
$logevent 0x1ff
$clienthost gridserver
三.配置NFS
1. 在cn121上
[root@cn121 ~]# vi /etc/exports
/home/fitgrid cn122(rw,sync,no_root_squash)
/home/fitgrid cn123(rw,sync,no_root_squash)
/home/fitgrid cn124(rw,sync,no_root_squash)
/home/fitgrid cn125(rw,sync,no_root_squash)
/home/fitgrid cn126(rw,sync,no_root_squash)
/home/fitgrid cn127(rw,sync,no_root_squash)
/home/fitgrid cn128(rw,sync,no_root_squash)
/home/fitgrid gridserver(rw,sync,no_root_squash)
参数意义可以man exports
[root@cn121 ~]# exportfs -rv
如果以后修改了/etc/exports,不必重启portmap和nfs,只需执行exportfs -rv就可使设置生效
[root@cn121 ~]# service portmap start && service nfs start
2. 在cn122---cn128和前端机gridserver上,分别执行如下命令(以cn125)为例:
[root@cn125 ~]# mount -t nfs cn121:/home/fitgrid/ /home/fitgrid/
mount -l看mount的情况,umount /home/fitgrid来卸载。
NFS client想看NFS server共享哪些目录出来了,就 showmount -e 10.0.1.121
详细 man mount
测试NFS:
[fitgrid@cn125 ~]$ touch a.txt
然后在cn121上ls /home/fitgrid/,如果有a.txt就成功了.
注意各机器用户的uid和gid必须相同, NFS是用uid和gid来区别用户的。
如果想设置成开机自动mount,那就写命令进 /etc/rc.d/rc.local
四.测试
用root启动pbs各个进程,启动顺序最好是:mom, server, sched. 启动之后用 ps -A 看结果.
1.在所有client结点上启动pbs_mom:(拿cn125做例子)
[root@cn125 ~]# pbs_mom
2. 在pbs server (cn121)上启动pbs_server:
[root@cn121 ~]# pbs_server -t create
注意:如果是第一次启动pbs_server,则必须在启动pbs_server时,加上-t create 选项用来初始化
一些环境。以后启动时则只需执行命令pbs_server,不要加参数,否则以前的配置信息会被删除。
3. 启动sched
[root@cn121 ~]# pbs_sched
如果你想让server端也执行任务,那client端的配置不变,只需在server端多加两道工序:
[root@cn121 ~]# vi /usr/spool/PBS/mom_priv/config
$logevent 0x1ff
$clienthost cn121
pbs server端启动时加一项pbs_mom。也就是server端这样启动:
pbs_mom、pbs_server -t create、pbs_sched
4.在前端机gridserver上启动pbs_server和 pbs_sched:
[root@gridserver ~]# pbs_server -t create
[root@gridserver ~]# pbs_sched
然后在pbs server cn121上操作:
1.创建一个队列脚本
[root@cn121 ~]# cd /home/fitgrid && vi pbsconf
#
# Create and define queue verylong
#
create queue verylong
set queue verylong queue_type = Execution
set queue verylong Priority = 40
set queue verylong max_running = 10
set queue verylong resources_max.cput = 72:00:00
set queue verylong resources_min.cput = 12:00:01
set queue verylong resources_default.cput = 72:00:00
set queue verylong enabled = True
set queue verylong started = True
#
# Create and define queue long
#
create queue long
set queue long queue_type = Execution
set queue long Priority = 60
set queue long max_running = 10
set queue long resources_max.cput = 12:00:00
set queue long resources_min.cput = 02:00:01
set queue long resources_default.cput = 12:00:00
set queue long enabled = True
set queue long started = True
#
# Create and define queue medium
#
create queue medium
set queue medium queue_type = Execution
set queue medium Priority = 80
set queue medium max_running = 10
set queue medium resources_max.cput = 02:00:00
set queue medium resources_min.cput = 00:20:01
set queue medium resources_default.cput = 02:00:00
set queue medium enabled = True
set queue medium started = True
#
# Create and define queue small
#
create queue small
set queue small queue_type = Execution
set queue small Priority = 100
set queue small max_running = 10
set queue small resources_max.cput = 00:20:00
set queue small resources_default.cput = 00:20:00
set queue small enabled = True
set queue small started = True
#
# Create and define queue default
#
create queue default
set queue default queue_type = Route
set queue default max_running = 10
set queue default route_destinations = small
set queue default route_destinations += medium
set queue default route_destinations += long
set queue default route_destinations += verylong
set queue default enabled = True
set queue default started = True
#
# Set server attributes.
#
set server scheduling = True
set server max_user_run = 6
set server acl_host_enable = True
set server acl_hosts = *
set server default_queue = default
set server log_events = 63
set server mail_from = adm
set server query_other_jobs = True
set server resources_default.cput = 01:00:00
set server resources_default.neednodes = 1
set server resources_default.nodect = 1
set server resources_default.nodes = 1
set server scheduler_iteration = 60
set server default_node = 1#shared
定义了verylong long medium small 四个作业队列和一个default队列. 详细参数看文档。
2.
[root@cn121 fitgrid]# qmgr < pbsconf
Max open servers: 4
测试: 用普通用户提交作业(必须是普通用户)
[fitgrid@gridserver ~]$ vi sample.sh
#!/bin/bash
echo `date`
sleep 20
echo `date`
[fitgrid@gridserver ~]$ qsub sample.sh
0.cn121
[fitgrid@gridserver ~]$ qstat 0
Job id Name User Time Use S Queue
---------------- ---------------- ---------------- -------- - ------------------
0.cn121 sample.sh fitgrid 0 R normal
如果任务状态显示为R,就代表任务运行了,在sample.sh所在的目录会生成2个输出文件:
[fitgrid@gridserver ~]$ ls -l
-rwxr--r-- 1 fitgrid fitgrid 49 Oct 13 12:41 sample.sh
-rw------- 1 fitgrid fitgrid 107 Oct 14 21:13 sample.sh.e0
-rw------- 1 fitgrid fitgrid 0 Oct 14 21:13 sample.sh.o0
[fitgrid@gridserver ~]$ cat sample.sh.e0
: bad interpreter: No such file or directoryerv.SC: /bin/bash
这个sample.sh是从Windows上copy过来的,要转成linux格式:
[fitgrid@gridserver ~]$ dos2unix sample.sh
[fitgrid@gridserver ~]$ qsub sample.sh
1.gridserver
[fitgrid@gridserver ~]$ qstat 1
Job id Name User Time Use S Queue
---------------- ---------------- ---------------- -------- - ------------------
1.gridserver sample.sh fitgrid 0 R normal
[fitgrid@gridserver ~]$ ls -l
-rwxr--r-- 1 fitgrid fitgrid 49 Oct 13 12:41 sample.sh
-rw------- 1 fitgrid fitgrid 0 Oct 14 21:33 sample.sh.e1
-rw------- 1 fitgrid fitgrid 58 Oct 14 21:33 sample.sh.o1
[fitgrid@gridserver ~]$ cat sample.sh.o1
Sun Oct 14 21:33:23 CST 2007
Sun Oct 14 21:33:43 CST 2007
正是想要的结果!
说明:
1) 可以用pbsnodes -a 来看配置的各个节点,以及作业正在哪个节点上运行。
2) 如果有错先看/usr/spool/PBS/下面的日志。
测试二进制文件的执行。将常用的那个Blast2文件夹放到/home/fitgrid目录下,然后
[fitgrid@gridserver ~]$ vi blast.sh
export BLAST2_PATH=/home/fitgrid/Blast2
cd $BLAST2_PATH
echo "before ./blast2.sh 201.seq1195644608703 cdna.txt1195644608703"
./blast2.sh 201.seq1195644608703 cdna.txt1195644608703
cp 201.seq1195644608703.nhr $BLAST2_PATH
cp 201.seq1195644608703.nin $BLAST2_PATH
cp 201.seq1195644608703.nsd $BLAST2_PATH
cp 201.seq1195644608703.nsi $BLAST2_PATH
cp 201.seq1195644608703.nsq $BLAST2_PATH
cp 201.seq1195644608703.out $BLAST2_PATH
[fitgrid@gridserver ~]$ qsub blast.sh
过一会在/home/fitgrid/下如果发现了201.seq1195644608703.nhr等6个文件就成功了。
man qsub去看命令的详细信息
------------------------------------------------------------------------------------------
Ubuntu 8.04 x86_64上安装torque 2.3.6
官方文档在 http://clusterresources.com/torquedocs/torquequickstart.shtml
一共3台机器 x86_64 + Ubuntu 8.04 hostname分别为node7, node8和node9. 选node7做torque的server
首先在4台机器上分别建一个fitgrid用户,配置好fitgrid之间无密码登录.
在server端node7上用root身份操作
1. root@node7:/usr/local/src/torque-2.3.6# # vi /etc/ld.so.conf 加上
/usr/local/lib
root@node7:/usr/local/src/torque-2.3.6# # ldconfig
root@node7:/usr/local/src# tar zxvf torque-2.3.6.tar.gz && cd torque-2.3.16/
root@node7:/usr/local/src/torque-2.3.6# ./configure && make && make install
2. root@node7:/usr/local/src/torque-2.3.6# make packages 生成5个package:
torque-package-clients-linux-x86_64.sh
torque-package-devel-linux-x86_64.sh
torque-package-doc-linux-x86_64.sh
torque-package-mom-linux-x86_64.sh
torque-package-server-linux-x86_64.sh
root@node7:/usr/local/src/torque-2.3.6# ./torque-package-clients-linux-x86_64.sh --install
root@node7:/usr/local/src/torque-2.3.6# ./torque-package-mom-linux-x86_64.sh --install
root@node7:/usr/local/src/torque-2.3.6# vim /var/spool/torque/server_priv/nodes 填上
node7 np=2
node8 np=2
node9 np=2
root@node7:/usr/local/src/torque-2.3.6# vim /var/spool/torque/server_name 填上
node7
3.配置一个简单的queue:
root@node7:/usr/local/src/torque-2.3.6# pbs_server -t create
root@node7:/usr/local/src/torque-2.3.6# qmgr -c "set server scheduling=true"
root@node7:/usr/local/src/torque-2.3.6# qmgr -c "create queue batch queue_type=execution"
root@node7:/usr/local/src/torque-2.3.6# qmgr -c "set queue batch started=true"
root@node7:/usr/local/src/torque-2.3.6# qmgr -c "set queue batch enabled=true"
root@node7:/usr/local/src/torque-2.3.6# qmgr -c "set queue batch resources_default.nodes=1"
root@node7:/usr/local/src/torque-2.3.6# qmgr -c "set queue batch resources_default.walltime=3600"
root@node7:/usr/local/src/torque-2.3.6# qmgr -c "set server default_queue=batch"
4. root@node7:/usr/local/src/torque-2.3.6# ldconfig && pbs_sched && pbs_mom
root@node7:/usr/local/src/torque-2.3.6# chmod u+s /usr/local/sbin/pbs_iff
root@node7:/usr/local/src/torque-2.3.6# vim /etc/hosts.equiv
node8
node9
root@node7:~# vi /etc/profile 末尾加上
TORQUECFG=/var/spool/torque
export PATH TORQUECFG
root@node7:~# source /etc/profile
root@node7:~# vim /etc/rc.local 开机自动启动,加入
/usr/local/sbin/pbs_server &
/usr/local/sbin/pbs_sched &
/usr/local/sbin/pbs_mom &
5.测试:
root@node7:~# su - fitgrid
fitgrid@node7:~$ echo "sleep 30" qsub
fitgrid@node7:~$ qstat 0 显示R就对了
下面把这2个package copy到后台节点node8, node9上去:
fitgrid@node7:~$ exit
root@node7:/usr/local/src/torque-2.3.6#
cp torque-package-clients-linux-x86_64.sh node8:~/usr/local/src/ &&
cp torque-package-clients-linux-x86_64.sh node9:~/usr/local/src/
root@node7:/usr/local/src/torque-2.3.6#
cp torque-package-mom-linux-x86_64.sh node8:~/usr/local/src/ &&
cp torque-package-mom-linux-x86_64.sh node9:~/usr/local/src/
在node8和node9后台节点上操作,以node8为例
1. root@node8:~# vim /etc/ld.so.conf 加上
/usr/local/lib
root@node8:~# ldconfig
root@node8:/usr/local/src# tar zxvf torque-2.3.6.tar.gz
root@node8:/usr/local/src# mv torque-package* torque-2.3.6 && cd torque-2.3.6/
root@node8:/usr/local/src/torque-2.3.6# ./torque-package-clients-linux-x86_64.sh --install
root@node8:/usr/local/src/torque-2.3.6# ./torque-package-mom-linux-x86_64.sh --install
root@node8:/usr/local/src/torque-2.3.6# vim /var/spool/torque/server_name 填上
node7
root@node8:/usr/local/src/torque-2.3.6# chmod u+s /usr/local/sbin/pbs_iff
root@node8:/usr/local/src/torque-2.3.6# ldconfig && pbs_mom
root@node8:~# source /etc/profile 末尾加上
TORQUECFG=/var/spool/torque
export PATH TORQUECFG
root@node8:~# source /etc/profile
root@node8:~# vim /etc/rc.local 开机自动启动, 加入
/usr/local/sbin/pbs_mom &
好了,现在可以在node7上提交作业了.细节 man qsub pbs_resources ....
Monday, March 15, 2010
Linux IA32和IA64机器上安装OpenPBS-2.3.16
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment