不得不吐槽一下,我刚开始用的CentOS 7搭了好几天不是这里错就是那里错,然后我觉得可能是系统与mpich2不兼容,于是就换了CentOS 5,但是发现出现同样的问题。主要出现的问题是能够启动节点的mpd,但是mpdtrace和mpdallexit命令执行会出错。思来想去,之前好像误打误撞能够执行这两个命令(但那时候不能运行双节点),那时候mpich2不是在root下安装的,于是我觉得是root安装的问题,果不其然,在非root用户下弄好了,真是心累!废话不多说,说下过程,以免以后要搭的时候又出bug,也给大家一个参考。

环境说明

VMware Workstations Pro下的两台CentOS 5.5虚拟机

配置虚拟机的静态ip及修改hostname
  • 配置静态IP(这是在已经建立虚拟机之后)
    不想写太多文字,直接贴图
    ![Alt text]() 把VMnet8中的“使用本地DHCP…”勾掉,子网自己可以设,我是用默认的,然后“应用”

    进虚拟机后,应该是上不了网,此时就要配置/etc/sysconfig/network-scrips/ifcfg-eth0,随便你用什么编辑该文件,笔者直接用gedit(boot下),修改如下(可能你的跟我的不太一样,但是大同小异):
•  DEVICE=eth0 
 BOOTPROTO=static
IPADDR=192.168.253.5
NETMASK=255.255.255.0
 HWADDR=00:0C:29:EE:09:04#这一行为默认,如果克隆虚拟机则需要求改 
 ONBOOT=yes 
DNS1=192.168.253.2#这一行与默认网关相同,可在虚拟网络编辑器的VMnet8的nat设置中查看 
 修改/etc/sysconfig/network文件如下 
 NETWORKING=yes 
 NETWORKING_IPV6=no 
 HOSTNAME=C1#主机名,修改hostname需要 
 GATEWAY=192.168.253.2#默认网关 
 然后重启网络(命令:service network restart),现在应该就可以上网了。• 修改hostname 
 除了上面修改的/etc/sysconfig/network外,还要修改/etc/hosts,如下: 
#127.0.0.1 localhost.localdomain localhost#这一行最好注释掉,反正应该不会有很大影响 
 192.168.253.5 C1#网卡ip hostname 
 192.168.253.6 C2 
 ::1 localhost6.localdomain6 localhost6

  • 这里要说明的是我加了两行C1和C2,这是为了。。额忘了,是为了ping C2能对应上ip。重启后应该就能生效!艾玛本来不想写这部分,累死我了。
SSH无密码登录配置

接下来是比较重要的一环了,这关系到多节点的mpd启动。
1.在每个节点上执行ssh-keygen -t rsa命令,之后直接回车就可以
2.在每个节点上执行cat ~/.ssh/id_rsa.pub | ssh mlv(用户名,每个节点相同)@C1(你设的hostname) “cat - >> ~/.ssh/authorized_keys” ,这一步生成authorized_keys
3.在每个节点上执行scp mlv@C1:~/.ssh/authorized_keys ~/.ssh/,这一步把authorized_keys复制到各节点的/.ssh目录
4.权限设置chmod 600 ~/.ssh/authorized_keys
现在就可以无密码登陆了!ssh c2试下!如果觉得我没说清楚,可以参考:

安装mpich2(每个节点都要)

1.下载mpich2,百度一下就有了,我下的1.4.1p1版
2.如果没有GCC,要先安装不然下面出问题,命令:yum install gcc* -y
3.安装随便你实在root还是在非root下,我是在root下好像,执行以下命令:

tar zxvf mpich2-1.4.1p1.tar.gz 
 cd mpich2-1.4.1p1 
 ./configure –prefix=/opt/mpich2-1.4.1p1 –with-pm=hydra:mpd –with-mpe 
 make && make install


4.我退回到非root用户下配置环境变量,修改~/.bashrc,添加下面一行PATH=”$PATH:/opt/mpich2-1.4.1p1/bin”,然后运行source ~/.bashrc就可以了。
5.不放心的话可以测试一下:which mpd如果有路径则说明成功了。
6.创建配置文件mpd.conf
由于我是普通用户,所以应创建~/.mpd.conf,内容为secretword=123456,这个值可以自己设,但是每个节点上的该文件内容要相同。
7.创建配置文件~/mpd.hosts,其内容为每一行对应一个hostname
8.在各个节点搞完上面的,应该就可以启动mpd了,单节点启动(本机):mpd &,多节点启动:mpdboot -n 2(节点数) -f ~/mpd.hosts,查看运行节点:mpdtrace -l,关闭所有:mpdallexit.
然后就可以运行程序了,注意如果要在各个节点上运行的话要指明host,比如我要在C1,C2运行,则要执行以下命令mpirun -hosts C1,C2 -n 2 ./cpi。OK,大功告成!

不行的话参考下,下面的吧,我是东拼西凑搞出来的,如果没说清楚还请见谅!