ubuntu9.04 Mpich2 1.2版本 搭建集群种种问题

找到很多网上的文档,也是一步一步按照上面所做,可是就是有太多的问题。写一篇自己的搭建过程和错误产生的原因。

开始我找了两台服务器,上面装的是Asianux的操作系统,因为含有rsh服务。所以会报出:

connect to address XXXX: Connection refused
Trying krb4 rlogin…
connect to address XXXX: Connection refused
trying normal rlogin (/usr/bin/rlogin)

这个问题解决方案有多种,不过最简单的一种是在配置时:./configure添加参数 -rsh=ssh如下:

./configure -rsh=ssh

后来我有了多台机器,并且因为要搭建云的缘故,所以只有重新来过。首先找来4台机器,一个switch,这4台机器都是内网中的。我可以通过远程ssh登录上去。然后
装系统ubuntu9.04,这里要注意的是,用户名必须一致,并且hostname设置为node1,node2,node3,node4.如果你不这样做,后面会
出来非常多的问题,我稍后会一一解决。这里先介绍一下一般流程。

1。然后找一个好源,再使用apt-get更新.具体步骤详见:
http://blog.csdn.net/cctt_1/archive/2009/10/14/4667460.aspx

然后sudo apt-get install ssh,这一步是下载并安装ssh.

2。然后下载 [ mpich2-1.2 ](http://www.mcs.anl.gov/research/projects/mpich2/download
s/tarballs/1.2/mpich2-1.2.tar.gz) ,当然你还可以下载一份 mpich2的安装文档

。都下载到server(主节点)上,然后执行下面的操作:

tar xzvf mpich2-1.2.tar.gz或者使用命令gunzip -c mpich2.tar.gz | tar xf -(后者我没有试过)

3。然后mkdir mpich2在进入刚才解压的目录,执行配置文件./configure -prefix=…/mpich2 -rsh=ssh这里的-
prefix是你要安装到哪里(就是刚才的mkdir的目录)。之后make一下,然后make install 一下,看看报的错误,我当时好像缺少g++和gcc
,所以最好先apt-get 这两个东东。如果还是报错,就使用sudo ./configure -prefix=…/mpich2 -rsh=ssh,
sudo make , sudo make install.

4。之后把mpich2/bin这个文件路径放入到/etc/profile的最后一行,这样写,这里/home/you/是你的用户主目录。

1
PATH=$PATH:/home/you/mpich2/bin

然后log out再log in,如果不想这样,也可以export PATH=$PATH:/home/you/mpich2/bin临时做一下。然后echo $PATH,看看有没有添加成功。再下一步which mpd,看看有没有找到相应的路径。

5。然后执行

1
cd $HOME touch .mpd.conf #创建一个文件 chmod 600 .mpd.conf #设置权限

6。下一步vi .mpd.conf,添加一行MPD_SECRETWORD=abcd,这里的abcd是自己写的,你可以变动。这一步是以后使用mpd命令必须加入
的,主要是为了机器间的通信。

7。然后vi mpd.hosts,写入你的那几台机器的hostname,记住一行一个,如下:

node1 node2 node3 node4

这其实是你要让那些主机运行mpi的程序。

8。然后你在server(主节点)运行一下以下命令。

mpd & #启动一个mpd mpdtrace #查看哪些主机加入到ring中 mpdallexit#退出

这几个命令执行一下,如果没发生什么错误,就ok.

9。之后修改/etc/hosts,添加几行ip和hostname的对应关系。在127.0.0.1
localhost之后添加几行(这里假设server节点为node1当然,你可以改动): 192.168.12.111 node1 server
#个人认为这里的server加不加都可以就只是一个名字 192.168.12.112 node2 192.168.12.113 node3
192.168.12.114 node4

10。然后配置ssh自动登录,如何配置请看blog:
http://blog.csdn.net/cctt_1/archive/2009/10/14/4667604.aspx

.配置完毕后,在server节点依次输入:ssh node1 date,ssh node2 date, ssh node3 date , ssh node4
date.看看有没有返回date,主要是为了检测自己能否使用ssh登录到自己或其他节点。其他节点按照此法依次检测一下。如果不需要输入密码,并返回了date,
则ssh配置成功。

11。之后把你的mpich2/bin这个目录(./configure时的目录)打包 tar cvf bin.tar
mpich2/bin,然后将包发送到其他节点:node2,node3…。可以使用scp命令如下:

scp bin.tar you@node2:bin.tar

12。使用ssh登录到其他节点上,并解压bin.tar,然后按照第4步添加此路径并检查一下。

13。在各个节点上重做一下5,6,8,9,10,第7步可以不做。

14。回到server,使用如下两个命令: mpd & ,  mpdtrace -l,这就会得到_
(ip),检查下这三项是不是对的
。hostname应该是自己的node1,port是一个随机分配的,ip是hostname对应的ip(和/etc/hosts中的一样)

15。ssh到其他节点,然后输入mpd -h -p
&,这里的是14步中server的。如果执行这步没有错误,输入mpdtrace,就能看到node1,node2…

16。配置完成。集群已经搭建成功。以后启动的时候,只需要在server上执行mpdboot -n -f
mpd.hosts,这里的是你想启动的mpi程序数(会分配到不同的节点上),mpd.hosts是第七步创建的文件。

种种问题~~~~~~~:

1.没有使用相同的用户名(ubuntu上root用户你是不可能知道密码的),所以只有开始安装Ubuntu时的用户。你要做的是必须在所有节点都添加一个相同的用
户。因为mpich2在后续使用mpd -h -p
&命令加入到已存在的ring中时使用的是相同的用户名。并且如果你的用户名不同,ssh node2, ssh
node3,是不可能通过的,除非你使用了ssh you@node3,但mpd不会这样作,除非你要修改它的源码。要建立用户可以使用我下面编写的小脚本,并且加入
的用户获得了和你安装用户一样的权限(除了自己组权限)。记得要使用sudo命令来执行并且chmod +x XXXscript。

1
2
3
4
5
6
7
#! /bin/sh newone="mpich" #这里添加的用户为mpich,你也可以改动。 hostloc="/etc/hosts" # create
a new member and input the password useradd -m $newone passwd $newone # get
the admin member who | awk '{print $1}' >> tmpuser user=`head -n 1 tmpuser` #
get the admin member's groups and remove the self group groupinfo=`groups
$user | awk '{print}'| sed 's/'$user'//'` # copy the groups to the new member
for i in $groupinfo;do gpasswd -a $newone $i done echo `groups $newone`

2.hostname并不是node1,node2,node3,而是其他的名字。这里必须要改,否则mpd -h -p
&命令时会有rsh connect refused 或者timeout的情况。并且mpdtrace
-l时,会有ip和hostname不对应的情况。如下是更改方法:先在/etc/hosts中删除原来的hostname,然后 vi
/etc/hostname改成你想要的,注意必须顶行写。然后使用sudo
/etc/init.d/hostname来重新得到hostname,logout一下再login就会改掉。

3. rsh krb4 krb5问题,就使用./configure -rsh=ssh就可以解决

4. ./configure时有时会让你添加–disable-c++,你需要升级你的g了,sudo apt-get install g

5.make时文件冲突,只要使用sudo make即可

6.创建了新用户,记得使用新用户来执行ssh-keygen。ssh和用户是相关的。

7.清看清我的blog题目,如果你的不是mpich2-1.2可能搭建起来与此过程不同。mpich-
1中mpd是非安装的。我之前曾照网上的文档安装就是走不通。原因是版本不对。那个官方文档是mpich2-1.0.6的…好像也稍有不同。