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

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 [email protected]:/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等软件,这些软件的配置较为负载,而且一般小型集群没有必要使用,所以这里不再赘述。

时间: 2024-10-09 11:09:18

openmpi+NFS+NIS搭建分布式计算集群的相关文章

搭建Artifactory集群

搭建Artifactory集群 在阿里云上搭建Artifactory集群. Artifactory许可证 官方正版license,3个 License 25900美元(16.7万人民币)一年,贵的离谱.本文以实验学习为主使用最新破解版4.7.4,破解也非常容易就不赘述了.商业用途,请使用正版. 所需硬件 Artifactory集群需要以下硬件设备: 支持粘性会话的均衡负载(HAProxy/Nginx等). NFS共享文件夹. 数据库(MySQL等). 网络 集群中所有的节点最好处于同一局域网内,

搭建hadoop集群的linux环境准备

1.修改主机名: 在 root 账号下用命令:vi /etc/sysconfig/network 或sudo vi /etc/sysconfig/network 2.设置系统默认启动级别 在 root 账号下输入 vi /etc/inittab  级别改成3 各启动级别代表含义如下: 0 关机 1 单用户系统,不需要登陆 2 多用户系统但不支持NFS,命令行模式登陆 3 完整多用户模式,命令行模式登陆 4 未定义 5 X11图形模式,图形模式登陆 6.重启 3.配置 hadoop 用户 sudo

MongoDB 搭建分片集群

在MongoDB(版本 3.2.9)中,分片是指将collection分散存储到不同的Server中,每个Server只存储collection的一部分,服务分片的所有服务器组成分片集群.分片集群(Sharded Clustered)的服务器分为三中类型:Router(mongos),Config Server 和 Shard(Replica Set 或 Standalone mongod).使用分片集群,不需要使用强大的计算机,就能存储更多的数据,处理更大的负载.分布式数据库系统的设计目的是:

Linux下安装搭建Memcached集群环境

Linux下安装搭建Memcached集群环境

Windows下搭建Redis集群

Redis集群:运行多个Redis实例,然后通过特定的工具,将这些实例以某种关系连接起来,形成一个Redis网络. 详细的内容可以阅读:Redis 集群教程 里面会详细介绍Redis集群的设计思想和内部结构,以及如何搭建Redis集群等. 本文主要讲述如何在Windows系统下快速搭建Redis集群: 1.下载Redis 其GitHub连接如下:https://github.com/MSOpenTech/redis/releases/ Redis提供msi和zip格式的下载文件,这里下载zip格

搭建Hadoop集群 (三)

通过 搭建Hadoop集群 (二), 我们已经可以顺利运行自带的wordcount程序. 下面学习如何创建自己的Java应用, 放到Hadoop集群上运行, 并且可以通过debug来调试. 有多少种Debug方式 Hadoop在Eclipse上的Debug方式 一般来说, Debug最多的应用场景是调试MR中的代码逻辑, 还有部分是调试main方法中的某些代码逻辑. 无论是Standalone, Pesudo-Distributed, 还是Fully-Distributed Mode, 都可以d

搭建mongodb集群(副本集+分片)

完整的搭建mongodb集群(副本集+分片)的例子... 准备四台机器,分别是bluejoe1,bluejoe2,bluejoe3,以及bluejoe0 副本集及分片策略确定如下: 将创建3个副本集,命名为shard1,shard2,shard3: 以上3个副本集作为3个分片: 每个副本集包含2个副本(主.辅): 副本分开存储,即shard1存在bluejoe1和bluejoe2上各一份...以此类推 将创建3个配置库实例,一台机器一个 bluejoe0上配置一个mongos(mongos一般可

分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用(主从.事务与锁.持久化)> 本文我们继续学习redis的高级特性--集群.本文主要内容包括集群搭建.集群分区原理和集群操作的学习. Redis集群简介 Redis 集群是3.0之后才引入的,在3.0之前,使用哨兵(sentinel)机制(本文将不做介绍,大家可另行查阅)来监控各个节点之间的状态.Redi

Centos7-单台物理机搭建ceph集群

学习ceph时,看到crush规则的时候,crush策略最小为osd,但是这个osd定义的是真实的osd还是指单块磁盘?为了验证一下,自己用测试机模拟了一下单台机器使用一块磁盘搭建ceph. 配置ceph源,这里使用的阿里云的源 # yum install --nogpgcheck -y epel-release # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 # vim /etc/yum.repos.d/ceph.repo [Ceph] n