centos下配置MPI,无密码SSH和NFS

     本文主要包括个节点MPI环境的安装,各节点无密码SSH连接,NFS配置。

一、各节点MPI环境的安装

   (可以参考两个文档:ftp://ftp.mcs.anl.gov/pub/mpi/mpich2-doc-install.pdf和http://researchweb.iiit.ac.in/~abu_saad/files/Installing_MPI.pdf)
    准备工作:centos6.2_x64系统,mpich2-1.4.1p1.tar。
    配置三个节点的MPI机群,三节点分别为:host1,host2,host3。其中host2为主控节点。
    每个节点都添加相同的用户名,有利于SSH无密码访问,我这里使用zll。
    各节点名字最好有规律一点,修改方法有两种:
  1.用vi打开/etc/sysconfig/network,命令式:vi /etc/sysconfig/network,然后看到里面有一个hostname =     ***,把后面的   修改为你想要的     host name即可,需重启。这是修改单节点的名字。

   为了各节点间能够通过节点名顺利访问各节点,需要将各节点的/etc/hosts文件加入各节点的IP和hostname。如下:

   
   准备好,开始安装。

  1.解压文件。

     
      
          
 其中mpi是安装mpi环境的目录。

   2.配置MPI

进入解压后的文件夹,执行配置命令,其中prefix后面跟的是安装目录,这个用户可以自己选择。最新版本mpich2的进程管理默    认使用hydra,而不是mpd。如果想使用mpd,添加with-pm=mpd选择mpd。

  3.编译安装MPI

    
    
    

  4.修改环境变量

     修改用户主文件夹(添加用户zll后,会主动在/home下创建用户主文件夹/home/zll下的.bash_profile文件,在PATH变量后面      添加自己的MPI路径,例如我把MPI安装在我的zll用户主文件夹mpi路径下,在PATH最后添加“:/home/zll/mpi/bin"。如下图
centos下配置MPI,无密码SSH和NFS_第1张图片
保存退出,并执行以下命令:source .bash_profile

测试环境变量设置

centos下配置MPI,无密码SSH和NFS_第2张图片

如果显示正确就是安装完成了。

5.创建文件.mpd.conf

进入用户主文件夹/home/zll(或者$HOME),
  #创建文件
#设置权限
在.mpd.conf中添加一行:MPD_SECRETWORD=zll,其中zll可以随意起,但是三个节点要一致。这主要是使用mpd命令必须加入的,为了机器件的通信,如下图:

6.修改mpd.hosts文件

在主文件夹编辑mpd.hosts,写入三个节点的hostname,如下图

7.关闭防火墙

以root账户登录系统,执行service iptables stop关闭防火墙。

8.然后运行一下命令



其中第一条命令是启动一个mpd,
mpdtrace -l 查看mpd的主机名和端口号
mpdallexit是退出命令。
如果正常表示没有发生错误。(注意rhel6.2下面,执行程序前要执行mpdboot启用一组mpd进程,个数和节点个数一样:mpdboot -n 3 -f mpd.hosts,不然出错).

9.在其他节点上面执行以上步骤(可以不执行8).

10.测试

在主控节点上面执行以下命令:


在其他节点执行
mpd -h {主控节点ip} -p {主控节点显示的端口号} &
在主节点执行mpdtrace -l,可以显示当前ring中的主机。如果顺利,各节点同MPI成功互联了。

二、无密码SSH

原理Master作为客户端,要实现无密码公钥认证,连接到服务器Salve上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Salve上。当Master通过SSH链接到Salve上时,Salve会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Salve,Salve确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,期间不需要手工输入密码,重要的过程是将Master上产生的公钥复制到Salve上。 

1.主控节点

在主控节点的主文件目录下,执行如下命令

一路回车,不输入其他东西。这时目录下会生成一个.ssh(注意不要自己建立.ssh这个目录,否则出问题)的目录,里面会生成id_rsa和id_ras.pub两个文件,进去.ssh执行

2.其他节点

然后在其他节点的主文件目录下执行以下命令

生成.ssh文件夹,不要自己创建.ssh文件夹。

3.复制文件

将主控节点的authorized_keys文件拷贝到其他节点的.ssh目录下。

4.测试

如果没有问题,现在可以实现主控节点到其他节点无密码ssh了,执行
ssh host1和ssh host3(host2和host3是其他两个节点)
第一次要输入”yes“,回车,注意不要直接回车。之后连接就直接可以连接了。

5.注意问题

使用rsa不是dsa,每个节点的.ssh目录要使用命令ssh-keygen -t rsa生成,不要自己建。
首次连接输入yes,回车,不要直接回车。 
如果不成最好重启一下重试一次。(在rhel6.2上面我就是第一次没有成功,第二次成功了)。

三、NFS配置

三台机子是共享主控节点上主文件目录下的cluster文件夹,其中host2是nfs服务器,下面1-4在host2上面做。记得最好以root权限关闭防火墙或者在防火墙里面添加规则。

1.配置文件/etc/exports

配置文件/etc/exports,格式为:共享目录 可mount主机IP(参数1,参数2,……)


设置cluster的访问权限为777.

执行exportfs -r命令。

2.修改/etc/sysconfig/nfs

  如果不修改后面会出mount.nfs: access denied by server while mounting 10.4.14.211:/home/zll/cluster。
   在文件/etc/sysconfig/nfs添加一行:RPCNFSDARGS="--no-nfs-version 4".
  网上好多解决方法,都不行,最后发现是nfs4的问题,就是nfs版本4有问题,禁止掉就行。

3.开启相关服务

     
     
    启动以上命令的时候最好使用超级用户权限,否则有时候nfs服务打不开。
    注意centos6.2及其以上版本将portmap更换成了rpcbind。

   4.设置nfs开机自动启动

   

   5.nfs客户端

   开启nfs服务:sudo service nfs start
   开机启动nfs服务:sudo chkconfig nfs on
   可以查看可挂载的目录:showmount -e 10.4.14.211.
   挂载:mount -t nfs 10.4.14.211:/home/zll/cluster /home/zll/cluster
   开机自动挂载:在文件/etc/fstab最后一行添加:hostname(或者server ip):/directory 本机挂载目录  nfs defaults 0 0
   例如:host2:/home/zll/cluster  /home/zll/cluster  nfs defaults 0 0
   (如果有问题,可以重启nfs服务器的nfs一下:sudo service nfs restart).

   6.测试

   可以在server端的cluster里面创建一个文件,然后在其他节点的挂载目录下看看有没有该文件,如果有表示成功。
       以上都是经过本人亲自测试过,并且成功的。

你可能感兴趣的:(MPI)