本文主要包括个节点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"。如下图
保存退出,并执行以下命令:source .bash_profile
测试环境变量设置
如果显示正确就是安装完成了。
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里面创建一个文件,然后在其他节点的挂载目录下看看有没有该文件,如果有表示成功。
以上都是经过本人亲自测试过,并且成功的。