cluster的安装调试 (一)
cluster的安装调试
历时月余,实验室的机器总算装好了。
实验室的机器是5台双cpu的机器。tyan主板,amd 2200+MP cpu。1G内存。80g硬盘。
系统是rh9,mpich1.2.5 作业管理系统torque
第一部分 系统安装
第一步先把服务器(管理节点)装好。把ip设为192.168.1.4
装其它机器时是利用pxe安装的。参考了下面的帖子
《Kickstart+HTTP+DHCP+TFTP+PXElinux实现RedHat的网络自动安装》
具体实现的过程是这样的:
1、 配制一个HTTP服务器(当然也可以是NFS、FTP)及kickstart文件:
1)配好后,在HTTP的DocumentRoot目录下(一般为/var/www/html)建一个rh9目录,
用于放 RedHat9的安装文件。把RedHat9第一张安装盘的RedHat目录及下面的内容全部考
到这个目录下,把第二、第三张盘的RPMS目录下的rpm 包考到rh9/RedHat/RPMS目录下,
完成安装文件的考贝。service httpd restart开启HTTP服务。可以在浏览器内打入:
http://192.168.1.4/rh9看一下,是不是能看到RedHat目录。
2) 用redhat-config-kickstart命令做一个ks.cfg文件,注意在“安装方法”选项中
选HTTP,在“HTTP服务器:”中打入HTTP服务器的IP地址,在“HTTP目录:”中打入rh9,
其它的我就不多说了。做好后把这个ks.cfg 文件考到HTTP服务器的DocumentRoot/rh9目
录下。
3)在一台机器上做一下测试(注意:因为是自动安装,这台机器的上的数据可能全部
被格掉喔)。用光盘启动机器,在boot:提示符下打入:
linux ks=http://192.168.1.4/rh9/ks.cfg,
看一下是不是能实现自动安装,如果能,OK我们一半的工作已经做好了。
2、 配制DHCP、TFTP、和PXElinux。(当然这些服务可以和HTTP放在一台服器上)
1) 做一台TFTP服务器太容易了,用rpm –qa | grep tftp看一下tftp有没安装,没
有的话安装一下。用chkconfig tftp on 打开xinetd代理的tftp服务。
2)下面是我的dhcpd.conf文件:
ddns-update-style interim;
allow booting; #定义可以PXE 启动
allow bootp; #定义支持boottp
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.14; #定义默认网关
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.1.4; #定义nameServer
option time-offset -18000; # Eastern Standard Time
#range dynamic-bootp 192.168.168.12 192.168.168.254;
#default-lease-time 21600;
#max-lease-time 43200;
# You need an entry like this for every host
# unless you're using dynamic addresses #可PEX启动的主机的IP与MAC地址的邦定
host p1
{ hardware ethernet 00:00:E2:89:9B:DB;
fixed-address 192.168.1.201;
next-server 192.168.1.4; #TFTPServer的IP
filename "/pxelinux.0";#pxelinux loader文件位置 }
}
文件里节点机的mac地址很好找。把节点机的网络启动打开,启动机器。机器会显示寻找dhcp
的信息,屏幕显示的地址就是机器的mac地址。
3)配制PEXlinux。要远程启动机器,就必须要有PXElinux这个由syslinux、isolinux派生
出来的,支持PXE的 bootloader,它可以实现远程通过PEX启动一台机器。把/usr/lib/syslinux/pxelinux.0
考到/tftpboot目录下,把RedHat9第一张安装光盘上/image/pxeboot/initr.img和vmlinux也
考到/tftpboot目录下。在 /tftpboot建一个pxelinux.cfg目录,用于放syslinux的配制文件。
Sysconfig 的配制文件有现成的可用,在rh9第一张安装光盘isolinux/下有一个isolinux.cfg文件,把它考成 /tftpboot/default,把isolinux/*.msg考到 /tftpboot下(RedHat的安装光盘的Loader就是个isolinux,呵呵)。对default(也就是isolinux.cfg)作一 下修改,下面是我的default文件:
default local
prompt 1
timeout 30
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
F7 snake.msg
label local
localboot 0
label linux
kernel vmlinuz
append initrd=initrd.img devfs=nomount ramdisk_size=9216
label text
kernel vmlinuz
append initrd=initrd.img devfs=nomount ramdisk_size=9216
label expert
kernel vmlinuz
append expert initrd=initrd.img devfs=nomount ramdisk_size=9216
label ks
kernel vmlinuz
append ks initrd=initrd.img devfs=nomount ramdisk_size=9216
label lowres
kernel vmlinuz
append initrd=initrd.img lowres devfs=nomount ramdisk_size=9216
label autoinstall
kernel vmlinuz
append ks=http://192.168.1.4/rh9/ks.cfg initrd=initrd.img devfs=nomount ramdisk_size=9216 nofb
cat一下/tftpboot/boot.msg文件:
splash.lss
- To Local boot 02Red Hat07 Linux , type:
0f07.
- To install or upgrade 02Red Hat07 Linux in graphical mode,
press the 0f linux07 key.
- To install or upgrade 02Red Hat07 Linux in text mode, type:
0flinux text 07.
- To Auto Install 02Red Hat07 Linux , type:
0flinux autoinstall 07.
- Use the function keys listed below for more information.
02[F1-Main] [F2-Options] [F3-General] [F4-Kernel] [F5-Rescue]07
理论上应该可以实现自动安装,可是也许是因为主板上集成了2个网卡。总之无法实现自动
安装,但是可以实现网络启动。不过这也够了。下面说说安装
在安装节点机的时候有几个包没有选,结果在后来配置服务时出来些麻烦。集群需要的服务
主要有NIS NFS SSH RSH所以在安装系统时要注意这个几个服务的rpm一定选上了。当然
还有一些库文件。在安装节点机的时候rsh-server,xinet.d,ligbf2c没有装上,运行程序时报
错,弱了半天。
本文由 amao 于2004年12月14日 03:30 PM 发表 | 评论 (1)
cluster的安装 (二)
第二部分
下面是集群需要的几个服务的配置
1 rsh
配置rsh-server, 下面的操作必须以root 身份执行。
编辑文件/etc/hosts.equiv, 在其中加上本机主机名(单独占一行)。如果该文件不存在则
创建一个。将所主机名加到文件/etc/hosts.equiv 中。此文件在每个机子都建立一份。
physics --------> 管理节点主机名
p1 --------> 计算节点主机名
p2
p3
p4
编辑/etc/xinet.d/rlogin
找到 disable = yes
把yes改成no
– 开启rsh 服务:
/sbin/chkconfig rsh on
/etc/init.d/xinetd start
测试rshd 的配置。以普通用户(非root) 登录并运行命令:
rsh 主机名/bin/hostname
如果配置正确该命令应该显示本机主机名。如果出错可查看/var/log/messages 文件中的
错误信息。
下面介绍的方法使用NIS (Network Information Service, 也叫做SUN Yellow Pages) 管
理用户帐号,使用NFS (Network File System) 共享用户目录。
将所有机器的主机名放在/etc/hosts 文件中。可以在所有机器上使用同样的/etc/hosts 文
件,它包含如下形式的内容:
127.0.0.1 localhost.localdomain localhost
192.168.1.201 p1
192.168.1.202 p2
192.168.1.203 p3
192.168.1.204 p4
192.168.1.4 physics
(按真实情况替换其中的主机名和IP 地址)。
首先根据情况选择一台机器作为NIS 和NFS 服务器,我们将该机器称为服务结点或主结点
机,而其它机器称为从结点机。主结点机和从结点机的配置方式不同,下面将分别介绍。
2 设置NFS主结点机
=======================================
" 创建目录:
mkdir -p /home/local
将/usr/local 链接到/home/local:
/bin/rm -rf /usr/local
ln -s /home/local /usr/.
(注: 如果以前的/usr/local 中安装有有用的文件, 则在执行上述命令前应该将其拷贝或移
走)。"
=======================================
上面的内容并没有用到。NFS服务器,我共享了以下3个目录:
/home ----------->用于存放用户的文件
/usr/local ----------->用于存放共享的软件
/redhat ----------->用于存放系统的安装文件
确认在主结点机上安装了nfs-utils 包。开启NFS 服务:
/sbin/chkconfig nfs on
/sbin/chkconfig nfslock on
/etc/init.d/nfslock restart
/etc/init.d/nfs restart
在文件/etc/exports 中加入下面一行:
/home *(rw,async,no_root_squash)
/usr/local *(ro,async,no_root_squash)
/redhat *(ro,async,no_root_squash)
它将/home 目录输出给所有机器。(注: 出于安全考虑可以限制仅将目录输出给指定的结
点机, 及将no_root_squash 改成root_squash。请用命令man 5 exports 查看相关参数
的写法)。
输出指定目录(/home):
exportfs -a
(也可重新启动系统)。
exportfs -v
查看共享的目录
其他的参数man一下
在结点机
===================================================
"创建目录:
mkdir -p /home "
===================================================
运行命令
showmount -e physics
可以看到共享的目录
在文件/etc/fstab 中加入下面一行:
physics:/home /home nfs defaults 0 0
physics:/redhat /redhat nfs defaults 0 0
physics:/usr/lcoal /usr/local nfs defaults 0 0
以上改动在所有的节点机做一遍
运行命令:
/sbin/chkconfig netfs on
它使得系统启动时自动挂接主结点机上的/home 目录。
运行命令:
mount /home
(也可重新启动系统)。
===================================================
将/usr/local 链接到/home/local:
/bin/rm -rf /usr/local
ln -s /home/local /usr/.
(注: 如果以前的/usr/local 中有有用的文件, 则在执行上述命令前应该将其拷贝或移走)。
上述所有操作必须以root 身份执行。本步骤完成后,所有结点机上的/home 和/usr/local
目录的内容应该是一样的。在从结点机上可用命令df 检查挂接情况。
===================================================
3 设置NIS
以下描述中假设以‘stars’ 作为NIS 域名。
A 主结点机
确认安装了下述包:
ypserv, ypbind, yp-tools
在文件/etc/sysconfig/network 中加入下面一行:
NISDOMAIN=stars 开启NIS 服务:
/sbin/chkconfig ypserv on
/etc/init.d/ypserv start
初始化NIS 数据库:
/usr/lib/yp/ypinit -m
程序运行时按Ctrl-D, 然后按“y” 和回车。该命令将生成NIS 数据库。可以忽略
No rule to make target ...
之类的错误信息。
开启NIS 客户程序:
/sbin/chkconfig ypbind on
/etc/init.d/ypbind start
验证NIS 设置
– 命令“ypwhich” 应该显示出主结点机主机名。
– 命令“ypcat passwd” 应该显示出(主结点机上的) 用户帐号。
B 节点机
确认安装了下述包:
ypbind, yp-tools
在文件/etc/sysconfig/network 中加入下面一行:
NISDOMAIN=stars
开启NIS 客户程序:
/sbin/chkconfig ypbind on
/etc/init.d/ypbind start
C 验证NIS 设置
– 命令“ypwhich” 应该显示出主结点机主机名。
– 命令“ypcat passwd” 应该显示出主结点机上的用户帐号。
为了能够使用NIS 用户登录,还需要修改/etc/nsswitch.conf 文件,使其包含下述设置:
passwd: files nis
shadow: files nis
group: files nis
hosts: files nis dns
注意在从结点机上不要重复定义用户信息,即在从结点机上应该将所有NIS 用户(可用命令
“ypcat passwd” 显示出来) 从文件/etc/passwd 和/etc/shadow 中删除,将所有NIS
组(可用命令“ypcat group” 显示出来) 从文件/etc/group 中删除。
完成NIS 配置后,创建新的用户帐号只需在主结点机上进行(注意将用户的主目录放到
/home下), 然后运行命令“cd /var/yp; make” 即可。
如果在主结点机上修改了一个用户帐号信息,也应该运行一次上述命令以刷新NIS 数据库。
NIS 用户在从结点机上不能用“passwd” 命令修改用户口令,而必须用“yppasswd”
命令来修改。
上述所有操作必须以root 身份执行。
后来启动机器的时候,节点机在mount nfs 分区时显示“ no route to host" --这时候
netfs进程无法启动。后来在/etc/rc.d/rc3.d/S99local中加入一行 /etc/init.d/netfs start
本文由 amao 于2004年12月14日 03:52 PM 发表 | 评论 (0)
cluster的安装 (三)
第三部分 配置 mpich 和pbs
A. 安装mpich
编译时,用下面的命令
./configure --prefix=/usr/local/mpich-1.2.5 --disable-weak-symbols
然后 make
make install
编辑用户目录下的.bashrc文件
export MPICH_GNU=/usr/local/mpich1.2.5/
export MPICH=${MPICH_GNU}
export MPICH_LIB="{MPICH}/lib"
export MPICH_PATH="{MPICH}/bin"
export PATH="{MPICH_PATH}:${PATH}"
export LD_LIBRARY_PATH="/usr/local/lib/:{MPICH_LIB}:${LD_LIBRARY_PATH}"
B. 安装mpiexec
./configure --prefix=/usr/local/mpiexec/ --disable-mpich-gm
--with-pbs=/usr/local/torque/ --with-default-comm=mpich-p4 --disable-p4-shmem
make
make install
C. 安装pbs,即torque
./configure --prefix=/usr/torque --disable--gui
make
make install
在/etc/profile.d目录下编辑pbs.sh
export PATH=${PATH}:/usr/local/torque/bin:/usr/local/torque/sbin
export PBS_DEFAULT=physics
chmod 755 pbs.sh
1)设置服务端
[root@physics server_priv]# pwd
/usr/spool/PBS/server_priv
建立nodes文件
[root@physics server_priv]# cat nodes
p4 np=2
p3 np=2
p2 np=2
p1 np=2
创建pbs.conf在/etc 目录下
pbs_home=/usr/spool/PBS/
pbs_exec=/usr/local/torque/
start_server=1
start_mom=0
start_sched=1
2.)设置客户端 intall pbs_mom in node
1.
[root@node01 init.d]# pwd
/home/torque-1.1.0p0/src/tools/init.d
copy pbs ---> /etc/init.d/
copy pbs.conf --> /etc/
vi pbs.conf
pbs_home=/usr/spool/PBS/
pbs_exec=/usr/local/torque/
start_server=0
start_mom=1
start_sched=0
chmod 755 pbs.conf
2.
/home/torque-1.1.0p0/buildutils
sh pbs_mkdir mom
sh pbs_mkdir aux
sh pbs_mkdir default
3.
建立下面3个文件 config epilogue prologue
cd /usr/spool/PBS/mom_priv
vi config
$logevent 0x1ff
$clienthost physics
[root@p1 mom_priv]# pwd
/usr/spool/PBS/mom_priv
[root@p1 mom_priv]# cat epilogue
#!/bin/sh
sleep 5
PBS_HOME=/usr/spool/PBS
PBS_PREFIX=/usr/local/torque
function printline
{
for i in $(seq 1 40)
do
echo -n "-"
done
echo
}
printline
echo "Begin PBS Epilogue $(date)"
echo "Job ID: $1"
echo "Username: $2"
echo "Group: $3"
echo "Job Name: $4"
echo "Session: $5"
echo "Limits: $6"
echo "Resources: $7"
echo "Queue: $8"
echo "Account: $9"
echo -n "Nodes: "
for i in $(sort $PBS_HOME/aux/$1 | uniq)
do
echo -n "$i "
done
echo
echo
#echo "Killing leftovers..."
echo
echo "End PBS Epilogue $(date)"
printline
exit 0
[root@p1 mom_priv]#
[root@p1 mom_priv]# cat prologue
#!/bin/sh
PBS_HOME=/usr/spool/PBS
PBS_PREFIX=/usr/local/torque
function printline
{
for i in $(seq 1 40)
do
echo -n "-"
done
echo
}
printline
echo "Begin PBS Prologue $(date)"
echo "Job ID: $1"
echo "Username: $2"
echo "Group: $3"
echo -n "Nodes: "
for i in $(sort $PBS_HOME/aux/$1 | uniq)
do
echo -n "$i "
done
echo
echo "End PBS Prologue $(date)"
printline
#sleep 5
exit 0
4.
vi /home/torque-1.1.0p0/torque.setup
找到“pbs_server -t create” 注释掉这行
然后运行./torque.setup
5.
/etc/init.d/pbs start
把上面这行命令加入 /etc/rc.d/rc3.d/S99local
6.
启动pbs后,服务端和客户端
[root@node01 torque-1.1.0p0]# qmgr
Max open servers: 4
Qmgr:
Qmgr: l n node02
Node node02
state = free
np = 1
ntype = cluster
status = arch=linux,
uname=Linux node02 2.4.20-8 #1 Thu Mar 13 17:18:24 EST 2003 i686,
sessions=? 15201,nsessions=? 15201,nusers=0,idletime=1582,
totmem=1501464kb,availmem=1209188kb,physmem=449216kb,ncpus=1,
loadave=0.00,rectime=1123147821
可以查看其它节点的信息。
Qmgr: s s query_other_jobs = true 可以查看其它id的作业。
7. 提交作业
编写脚本 sub.pbs
#PBS -l nodes=4:ppn=2,walltime=168:00:00
#PBS -N cpi
#PBS -j oe
cd ~/pi
/usr/local/mpiexec/bin/mpiexec cpi
第一行 nodes 申请的节点数,ppn 每个节点运行的cpu个数 walltime 程序运行的时间
第二行 任务的名字
第三行 输出文件和错误信息都输出到同一个文件
第四行 进入要运行的文件的所在目录。
qsub sub.pbs
没有评论:
发表评论