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
&,这里的
16。配置完成。集群已经搭建成功。以后启动的时候,只需要在server上执行mpdboot -n
mpd.hosts,这里的
种种问题~~~~~~~:
1.没有使用相同的用户名(ubuntu上root用户你是不可能知道密码的),所以只有开始安装Ubuntu时的用户。你要做的是必须在所有节点都添加一个相同的用
户。因为mpich2在后续使用mpd -h
node3,是不可能通过的,除非你使用了ssh you@node3,但mpd不会这样作,除非你要修改它的源码。要建立用户可以使用我下面编写的小脚本,并且加入
的用户获得了和你安装用户一样的权限(除了自己组权限)。记得要使用sudo命令来执行并且chmod +x XXXscript。
1 |
|
2.hostname并不是node1,node2,node3,而是其他的名字。这里必须要改,否则mpd -h
-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的…好像也稍有不同。