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

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

  1. 搭建Artifactory集群

    搭建Artifactory集群 制品仓库系统有很多,例如Artifactory.Archiva.Sonatype Nexus.Eclipse Package Drone,其中Artifactory拥有 ...

  2. MongoDB 搭建分片集群

    在MongoDB(版本 3.2.9)中,分片是指将collection分散存储到不同的Server中,每个Server只存储collection的一部分,服务分片的所有服务器组成分片集群.分片集群(S ...

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

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  4. 使用Windows Azure的VM安装和配置CDH搭建Hadoop集群

    本文主要内容是使用Windows Azure的VIRTUAL MACHINES和NETWORKS服务安装CDH (Cloudera Distribution Including Apache Hado ...

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

    搭建mongodb集群(副本集+分片) 转载自:http://blog.csdn.net/bluejoe2000/article/details/41323051 完整的搭建mongodb集群(副本集 ...

  6. 实验室中搭建Spark集群和PyCUDA开发环境

    1.安装CUDA 1.1安装前工作 1.1.1选取实验器材 实验中的每台计算机均装有双系统.选择其中一台计算机作为master节点,配置有GeForce GTX 650显卡,拥有384个CUDA核心. ...

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

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  8. virtualbox 虚拟3台虚拟机搭建hadoop集群

    用了这么久的hadoop,只会使用streaming接口跑任务,各种调优还不熟练,自定义inputformat , outputformat, partitioner 还不会写,于是干脆从头开始,自己 ...

  9. nginx+tomcat+memcached搭建服务器集群及负载均衡

    在实际项目中,由于用户的访问量很大的原因,往往需要同时开启多个服务器才能满足实际需求.但是同时开启多个服务又该怎么管理他们呢?怎样实现session共享呢?下面就来讲一讲如何使用tomcat+ngin ...

随机推荐

  1. 一些有用的 Emacs 配置(窗口快速切换、一键透明效果、任意位置删除整行等)

    本篇文章记录的是一些有用的 Emacs 配置,有些是自己原创,有些是借鉴别人(能记起来出处的我放了链接). 规定:C 代表 Ctrl,M 代表 Alt. 1.设置一次跳跃 n 行的快捷键 按 C-M- ...

  2. 自己总结的一些android公共库

    本文主要介绍自己在android开发中总结的一些公共库,目前包括下拉刷新ListView.可以响应各个方向CompoundDrawables点击操作的TextView.图片缓存,不断更新,欢迎交流 ? ...

  3. 【JavsScript】XMLHttpRequest2的进步之处

    本文参考自:XMLHttpRequest2 新技巧 (重点保留demo,方便自己日后查阅) HTML5是现在web开发中的热点,虽然关于web app和local app一直有争论,但是从技术学习的角 ...

  4. ckeditor与ckfinder简单整合使用

    Ckeditor与ckfinder简单整合使用 功能:主要用来发送图文的email,图片上传到本地服务器,但是email的图片地址要写上该服务器的远程地址(图片地址:例如:http://www.bai ...

  5. C语言嵌入式系统编程修炼之二:软件架构篇

    模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求.C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行 ...

  6. android Process.killProcess 和 System.exit(0) 区别

    1 Process.killProcess  和 System.exit(0) 两个都会 kill 掉当前进程. 你可以打开 DDMS 查看进程号,或 adb shell 进入 shell 然后 ps ...

  7. 【POJ】1056 IMMEDIATE DECODABILITY

    字典树水题. #include <cstdio> #include <cstring> #include <cstdlib> typedef struct Trie ...

  8. TimePicker,TimePickerDialog以及自定义timepicker(一)

    场景:在activity上点击,弹出一个dialog,然后点击dialog上的一个按钮,在弹出时间.以及自定义dialog 懒,要用到一个选择时间的需求,只要求小时和分钟,弹出式,第一时间想到了tim ...

  9. 博弈论(SG函数):HNOI 2007 分裂游戏

    Description 聪聪和睿睿最近迷上了一款叫做分裂的游戏. 该游戏的规则试: 共有 n 个瓶子, 标号为 0,1,2.....n-1, 第 i 个瓶子中装有 p[i]颗巧克力豆,两个人轮流取豆子 ...

  10. 换成gnome3桌面后国际版qq不能输入中文问题

    困扰了好久的问题今天终于解决了,网上也没有完整的教程,所以在这里整理下 前几天给自己的ubuntu装上了gnome桌面,一切都挺正常的,桌面很炫,用着也很舒服,不过之前的qq却没办法输入中文了,下面我 ...