openmpi+NFS+NIS搭建分布式计算集群,openmpinis


 

1.        配置防火墙

正确配置防火墙的过滤规则,否则会造成NFS文件系统的挂载失败,NIS账户认证的失败,mpirun远程任务实例投放的失败。一般情况下,计算集群是在内部局域网中使用,所以可以不用太顾及安全问题,直接关闭掉所有节点服务器的防火墙即可。

相关命令如下:

service iptables stop        #或者
/etc/init.d/iptables stop    #以上这两种方法,即时生效但重启后复原
                                    #或者
chkconfig iptables on        #重启后永久生效

  

2.        配置集群局域网ip与主机名的映射

为了方便,可能需要将节点主机名改为node1、node2、node3……的统一形式,修改主机名的命令是:

hostname node1                     #将主机名修改成了node1,但机器重启后会失效

永久修改的方法是修改/etc/sysconfig/network文件中的hostname一行:

HOSTNAME=node1

修改每个节点中的文件/etc/hosts,将集群中各个节点主机名与ip的对应关系写进去。

    

3.        配置NFS共享文件系统

分布式并行计算一般要求各个节点服务器的应用软件环境和工作目录环境要保持一致,如果在每个节点上都要配置一遍,会特别麻烦。所以采用NFS共享文件系统,将应用软件和工作目录都部署在公共目录,就能能很好的解决这一困难。只需部署一次,所有的节点服务器就都能访问。

首先在所有的节点安装nfs套件,采用命令:

yum install nfs

然后,选在一台硬盘存储较大的节点服务器,例如node0,将其作为NFS server进行配置。具体做法是,先配置/etc/exports文件,在这个文件中写入:

/tmp        node*(rw,no_root_squash)                  #将允许主机名为node*(*代表通配符)的服务器以rw形式挂载tmp目录。

然后在NFS server节点上执行如下命令:

exportfs  –ar    #每次修改/etc/exports文件后都要执行一下这个命令。
service nfs start   #启动nfs服务

其它的节点服务器,作为NFS client进行配置,需要执行如下命令:

service nfs start    #启动nfs服务
mount –t nfs node0:/share  /share           #强nfs server(即node0)的/share目录挂载到本地的/share目录

通过修改/etc/fstab文件可以实现开机自动挂载,在此文件中填入一行:

192.168.44.130:/share   /share                  nfs     defaults        0 0

其它一下相关命令:

showmount -e 192.168.0.30         #在客户端使用此命令检查NFS SERVER上export出来的目录
showmount –a                                   #一般在NFS SERVER上用,显示已经mount上本机nfs目录的client机器
chkconfig  --level 35 nfs on     #配置开机自动启动nfs服务

  

4.        配置NIS服务

分布式并行计算要求各个节点服务器上的账户信息环境要一直,如果在每台节点服务器上都配置一遍用户信息,工作量太大且重复。这个问题可以通过配置一台NIS服务器来解决,所有主机都可以到NIS服务器上查找用户信息进行账户认证。NIS(Network information service)又叫YP(Yellow Pages,电话簿的意思)。

首先在所有的计算节点上安装NIS相关套件,命令如下:

yum install yp*
yum install xinetd

在所有的节点上修改/etc/xinetd.d/time,使disable=no,然后执行如下命令:

service xinetd restart                     #启动xinetd服务
nisdomainname cluster                  #设置NIS域的名字,在这设成了cluster

在所有的节点上修改/etc/sysconfig/network文件,加入一行:

NISDOMAIN=cluster

选择一台节点服务器,例如node0,作为NIS server进行配置,配置/etc/ypserv.conf文件,添加三行:

127.0.0.0/255.255.255.0    : *       : *                : none
192.168.0.0/255.255.255.0  : *       : *                : none
*                          : *       : *                : deny

 其中192.168.0.0代表网段,要根据具体网络配置填写。

 然后创建账户数据库,执行命令:

/usr/lib64/yp/ypinit –m     #添加用户时,只需要在NIS服务端增加,然后执行/usr/lib64/yp/ypinit –m更新一下数据库即可

创建数据库,之后要启动服务ypserv和yppasswdd:

service ypserv start
service yppasswdd start
chkconfig  --level 35 ypserv on                    #开机启动服务
chkconfig  --level 35 yppasswdd on              #开机启动服务

其他计算节点服务器作为NIS client进行配置,首先配置/etc/yp.conf 添加两行:

nisdomain cluster  #设置NIS域的名字,在这设成了cluster
ypserver node0     #设置NIS server的主机名,在这设成了node0

配置/etc/passwd 添加1行:

+::::::                 #注意冒号的数量

配置/etc/nsswitch.conf,添加如下4行:

passwd:     files nis nisplus 
shadow:     files nis nisplus 
group:      files nis nisplus 
hosts:      files nis dns

最后执行命令:

service ypbind restart          #启动服务
chkconfig  --level 35 ypbind on  #开机自动启动ypbind的方法

  

5.        配置ssh无密码登陆

在家目录没有配置在共享文件系统中的情况下,若要主机B无密码登陆主机A,则要配置主机A,在主机A用户家目录中建立.ssh目录,cd进去之后上执行如下:

ssh-keygen -t rsa                                        #然后一直回车键,按照默认将生成的密钥保存在.ssh/id_rsa文件中。
cp id_rsa.pub authorized_keys            #这步完成后,正常情况下就可以无密码登录本机了。
scp authorized_keys test@B:/homename/.ssh  #把刚刚产生的authorized_keys文件拷一份到主机B上.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 authorized_keys   进入主机B的.ssh目录,改变authorized_keys文件的许可权限

 按照以上步骤,只能让B无密码访问A, 所以为了让集群内每个节点都能相互无密码访问,就需要把没两台节点配对相互按照上面步骤配置,工作量特别大。

 如果家目录配置在了共享文件系统中,则要简单的多,执行执行以下命令,即可让集群内每个节点都能相互无密码访问

ssh-keygen -t rsa                                       
cp id_rsa.pub authorized_keys           
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

另外在/etc/ssh/ssh_config文件中添加StrictHostKeyChecking no,这样在第一次ssh登陆时,系统不会再提示是否将主机加入到known hosts中。

 

6.        安装并配置openmpi

安装openmpi的一版配置如下,如果使用intel的编译器,需要先安装intel编译器,然后执行命令:

./configure CC=icc CXX=icc FC=ifort  --prefix=/opt/openmpi/ --enable-static --enable-mpi-cxx   ps:一定要新建一个目录作为安装目录

 如果使用系统自带默认编译器,则执行如下命令:

./configure --prefix=/opt/openmpi/ --enable-static --enable-mpi-cxx   ps:一定要新建一个目录作为安装目录

最后编译openmpi,命令如下:

make all install

   

7.        安装配置负载均衡系统(可选)

如果想增加作业调度功能,则还需要安装lsf等软件,这些软件的配置较为负载,而且一般小型集群没有必要使用,所以这里不再赘述。

相关内容