Ubuntu下MPICH2集群搭建

1.1编写目的本文档为大连理工大学软件学院体系结构与高性能计算实验室所编写的Ubuntu环境下MPICH2并行环境搭建手册,目的是为了详细记录MPICH2配置过程,方便系统管理与维护,为实验室积累学习资料。
本文档的预期读者为并行环境的搭建人员、系统管理员以及需要使用MPICH2环境的用户。
1.2定义MPI    :Message Passing Interface,并行含数据标准
NFS    :Network File System,网络文件系统。
SSH    :Secure Shell Client
GCC    :GNU Compiler Collection,GNU编译器套装
Putty     :一个免费的Telnet/SSH客户端
1.3 系统结构说明本文档所搭建的系统物理结构如下图所示,文中的说明均按照此结构进行。

<!--[if !vml]-->

<!--[endif]-->

注意:在给每个节点安装系统发的时候,请提供一个统一的用户名及密码,此文中使用cluster为统一用户名。方便之后的配置。同时,为每一个节点做好网络配置。过程如下:
首先配置IP:
sudo vi /etc/network/interfaces 
配置静态IP地址,要编辑的内容如下: 
auto eth0 ##自动启用第一块网卡
ifconf eth0 inet static 
address 192.168.0.30 ##IP地址
netmask 255.255.255.0 ##子网掩码
gateway 192.168.0.1 ##网关

然后配置DNS服务器:
sudo gedit /etc/resolv.conf
nameserver 192.168.3.2 #添加或者更改这一行

重启网络服务:
sudo /etc/init.d/networking restart
1.4参考资料[1] 王鹏 吕爽等. 并行计算应用及实战.机械工业出版社, 2009,1. 

[2] Ubuntu社区,http://wiki.ubuntu.org.cn/index.php?title=UbuntuHelp:Mpich Cluster&variant=zh-hans


2并行环境搭建——主节点配置2.1 配置主机名在主节点(Main Node,也称Node0)上,按下图所示配置/etc/hosts。

<!--[if !vml]-->

<!--[endif]-->

图1 配置主机名

注意:对于环回地址127.0.0.1,请配置为localhost而不是主机名
2.2安装NFS文件系统与共享目录在终端窗口输入如下命令:
sudo apt-get install nfs-kernel-server
安装完成之后,可以使用在终端窗口下输入:
sudo mkdir /mirror                
该命令会在根目录下创建一个/mirror的目录,该目录就是今后所有节点共享的目录,稍后我们会将MPICH2安装在该目录下,同时可以设置所有节点已启动便挂在该目录,这样,我们可以只在主节点上安装一次MPICH即可。
接下来需要修改该目录所属的用户及组,使用ls –l命令可以看到,刚才创建的/mirror目录属于root用户,需要将它的用户和组改为cluster。使用如下命令更改用户和组:
sudo chown cluster:cluster /mirror    
接着,我们需要对NFS sever做一些配置。如下图所示

<!--[if !vml]-->

<!--[endif]-->

图1 配置NFS server

至此,主节点NFS server配置完毕。
提示:安装过程中如有需要可以使用sudo /etc/init.d/nfs-kernel-server restart命令来重启NFS服务。关于NFS server的更多配置,请参见:http://www.dlog. cn/truelife/diary/3709682
出现过的问题:在配置过程中出现过NFS服务无法正常启动的问题,表现为启动nfs-common服务failed,经查明,该问题是由于在安装nfs-kernel-server的时候由于网络原因一些包无法获取,导致nfs-common没有安装成功。解决的办法是换用合适的更新源。教育网下推荐中科大或者上交的更新源。
2.3安装SSH服务在终端窗口输入如下命令:

sudo apt-get install openssh-server openssh-client

安装完成之后,我们需要做一些配置使得这些节点之间用ssh登陆的时候不在需要密码。按如下操作:

mkdir ~/.ssh                           

cd   ~/.ssh                              

ssh-keygen –t dsa                     

系统会提示:

Generating public/private dsa key pair.    

Enter file in which ti save the          

key(/home/user/.ssh/id_dsa):             

#直接按Enter                           

Enter passphrase (empty for no passphrase):

#直接按Enter,不使用密码

Enter same passphrase again:             

#直接按Enter                           

Your identification has been saved in    

/home/user/.ssh/id_dsa.               

Your public key has been saved in      

/home/usrer/.ssh/id_dsa.pub.            

The key fingerprint is :               

至此,私钥id_dsa和公钥id_dsa.pub已经被成功的生成。接下来要使用该密钥进行访问授权。待所有节点系统安装完毕之后,将主节点下~/.ssh目录下的所有文件拷贝到其他的节点下:

scp –r ~/.ssh node1

scp –r ~/.ssh node2

scp –r ~/.ssh node3

scp –r ~/.ssh node4

之后,检查是否可以直接(不需要密码登陆到其他的节点):

ssh node1   

ssh node2   

ssh node3   

ssh node4   

如果不需要密码直接登陆其他节点,则表明配置成功。
2.4安装MPICH2首先安装GCC,在终端输入如下命令:

sudo apt-get install build-essential

sudo apt-get install autoconf      

sudo apt-get install automake      

另外可以选择安装一些开发工具,例如调试使用的gdb等。
接下来,先从http://www-unix.mcs.anl.gov/mpi/mpich上下载MPICH2的安装包,然后将其上传到主节点的/mirror目录下(可以使用FTP的方式)。然后解压安装,在终端窗口输入以下命令:

cd /mirror                           

mkidr mpich2                           

tar xvf mpich2- 1.0.5p3.tar.gz       

cd mpich2 -1.0.5p3                  

./configure -- prefix=/mirror/mpich2

make                               

sudo make install                  

安装完成之后可以在/mirror下面看到MPICH2的安装目录:
<!--[if !vml]-->

<!--[endif]-->
接下来需要做的是配置环境变量,使用vi打开~/.bashrc,在文件末尾添加如下语句:
<!--[if !vml]-->

<!--[endif]-->
然后保存退出。接着需要配置/etc/environment文件使ssh能够找到MPICH2的安装目录。使用vi打开/etc/environment,在PATH环境变量中添加/mirror/mpich2/bin,效果如图所示:
<!--[if !vml]-->

<!--[endif]-->
至此,MPICH2的安装工作完成。可以输入以下命令测试MPICH2是否安装成功:

which mpd    

which mpiexec

which mpirun  

如果安装正确,执行结果如下:
<!--[if !vml]-->

<!--[endif]-->
2.5 MPD配置首先,在cluster的家目录下创建mpd.hosts文件,命令如下:

vi ~/mpd.hosts

接着,将所有节点的名字写入,如下图所示:
<!--[if !vml]-->

<!--[endif]-->
保存退出。接着需要配置~/.mpd.conf文件,使用如下命令:

vi ~/.mpd.conf             

在文件中写入如下语句:

secretword=something #something为任意字符串,所有节点都要设置相同的字符串

保存退出,接着,需要将~/.mpd.conf文件的权限设置为600,使用如下命令:

chmod 600 ~/.mpd.conf

至此,MPD的配置工作完成。用户可以使用mpd &,mpdtrace和mpdallexit测试MPICH2是否正常工作。

3并行环境搭建——客户端配置3.1安装NFS客户端与SSH在每一个节点都需要安装nfs客户端与ssh,安装过程与主节点类似。使用如下命令:

sudo apt-get install nfs-kernel-server #或者nfs-common

sudo apt-get install openssh-server openssh-client    

对于SSH,请参见主节点SSH配置一节的操作,如果配置成功,各节点之间访问应该都不需要密码。如果失败,可以重复生成私钥和公钥以及拷贝的操作。
对于NFS,客户节点需要做自动挂载主节点的/mirror目录。使用vi打开各节点的/etc/fstab文件,在文件末尾添加:

node0:/mirror /mirror nfs rw, async, auto, exec, nouser, suid    0   0                                           

效果如图所示:

<!--[if !vml]-->

<!--[endif]-->

保存退出之后,重启系统,如果成功挂载/mirror则说明配置成功。
在成功挂载/mirror目录之后,最后需要做的就是环境变量配置,在~/.bashrc中添加如下语句:
<!--[if !vml]-->

<!--[endif]-->
至此,客户端配置完毕。
3.2 测试首先,在每个节点单独使用mpd &命令测试,看服务是否能正常启动。接着,在主节点进行集群的测试。在主节点终端输入如下命令:

mpdboot –n 5 –f ~/mpd.hosts

mpdtrace

若配置成功,则运行结果如下,系统会输出每个节点的名字:
<!--[if !vml]-->

<!--[endif]-->
出现过的问题:在测试过程中,经常出现mpd进程无法与某个节点建立连接或者无法通信的问题,出现这种问题一是要检查该节点单独启动mpd是否成功,如果成功,则问题一般出现在防火墙的配置上,可以使用如下命令关闭防火墙:

sudo iptables –P INPUT ACCEPT

sudo iptables –P OUTPUT ACCEPT

sudo ufw disable   

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值