MPICH2的Linux下安装及其实现多台主机高性能计算

提交实验需要,做MPICH的安装及其实现多台主机高性能计算。实验不难,经过一天的时间终于成功实现,特记录下全过程供有需要的人参考。

一、实验目的: 1、了解建设高性能计算机集群系统的过程;

2、熟悉利用MPICH搭建高性能计算机的方法。

二、实验环境:

软件环境: MPICH版本:mpich2-1.4.1p1.tar.gz

操作系统版本:CentOS 5.5

硬件环境: 三台主机

三、实验步骤:

(一) 集群网络环境介绍

1、本实验的集群网络环境包含三个节点:

一个主节点namenode,本实验的主节点为njrhero;

两个从节点datanode,本实验的从节点为njr和njrhero1。

2、各节点之间用局域网连接,相互之间可以ping通。

3、三个节点均运行在CentOS系统上,且都以root用户登录系统。

(二) SSH无密码验证配置

利用MPICH搭建并行高性能计算环境需要使用SSH协议,SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

SSH配置成功后,namenode可以使用SSH无密钥登陆并启动datanode进程,同样,在datanode上也可以用SSH无密钥登陆到namenode,datanode之间也可以实现无密钥登陆。也可以在datanode上启动或关闭MPICH。

注意:CentOS5.5 在安装完毕后,默认启动sshd服务,可以在“系统”->“管理”->“服务”中查看sshd服务是否启动。如果系统中没有安装sshd服务,则执行命令sudo yum install ssh来安装,还要安装远程数据同步工具rsync,可通过LAN/WAN快速同步多台主机间的文件,执行命令sudo yum install rsync即可。

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

SSH的配置过程如下:

1、 安装和启动SSH

在三台机器上均执行以下命令:

#sudo yum install ssh (若已经安装可省略此步骤)

#sudo yum install rsync

#ssh sudo /etc/init.d/ssh restart 启动服务(也可重启虚拟机)

2、在三台机器的/etc/hosts文件中添加所有节点名和相应的IP 地址,添加内容如下:

59.64.139.63  njrhero

59.64.138.38  njr

59.64.138.160 njrhero1

3、配置各节点的无密钥验证登陆

为实现集群网络环境中的各节点都可作为namenode节点,本实验在三台机器上均做了相同的namenode配置。

1)在root目录下生成密钥对

namenode和datanode均进入root目录下执行以下命令,每个节点都会生成一个.ssh目录,

【root@ ~】#ssh-keygen –t rsa

回车将出现以下代码,

Generating public/private rsa key pair.

Enter file in which to save the key (root/.ssh/id_rsa):

一路回车就可以了。产生密钥成功后将出现:

Your identification has been saved in root/.ssh/id_rsa.

Your public key has been saved in root/.ssh/id_rsa.pub.

进入到.ssh目录

【root@ .ssh】#ls –al

可以看到以下三个文件(分别代表私钥,公钥,已知主机):

id-rsa  id_rsa.pub  known_hosts

2)在每个节点的.ssh目录下新建authorized_keys文件:

【root@ .ssh】#touch authorized_keys

注意:此时在各个节点执行:ssh 节点主机名,这样系统就可以记住该用户,用户以后在自己主机上执行此命令就不再需要输入密码了。

3)将每个节点的公钥用scp命令(安全拷贝)传送到另外两个节点:

主机njrhero执行如下命令:

【root@ .ssh】# scp –r id_rsa.pub root@njr:~/.ssh/pubkey_njrhero

【root@ .ssh】# scp –r id_rsa.pub root@:~/.ssh/pubkey_njrhero

这样,就可以将njrhero上生成的密钥传到主机njr和njrhero1的root用户下,并重命名为pubkey_njrhero。

主机njr执行如下命令:

【root@njr .ssh】# scp –r id_rsa.pub root@:~/.ssh/pubkey_njr

【root@njr .ssh】# scp –r id_rsa.pub root@:~/.ssh/pubkey_njr

主机njrhero1执行如下命令:

【root@ .ssh】# scp –r id_rsa.pub root@:~/.ssh/pubkey_njrhero1

【root@ .ssh】# scp –r id_rsa.pub root@njr:~/.ssh/pubkey_njrhero1

4)在每个节点的.ssh目录下,将另外两个节点传过来的公钥文件的内容复制到本目录下的authorized_keys文件中,并将authorized_keys文件的权限改为600。

主机njrhero执行命令:

【root@ .ssh】#cat pubkey_njr >> authorized_keys

【root@ .ssh】#cat pubkey_yenjrhero1 >> authorized_keys

【root@ .ssh】#cat id_rsa.pub >> authorized_keys

(注意:此步很重要,方便主机可以无密钥登陆本主机)

【root@ .ssh】#chmod 600 authorize_keys

主机njr执行命令:

【root@njr .ssh】# cat pubkey_njrhero >> authorized_keys

【root@njr .ssh】# cat pubkey_yenjrhero1 >> authorized_keys

【root@njr .ssh】# cat id_rsa.pub >> authorized_keys

【root@njr .ssh】# chmod 600 authorize_keys

主机njrhero1执行命令:

【root@ .ssh】#cat pubkey_njrhero >> authorized_keys

【root@ .ssh】#cat pubkey_njr >> authorized_keys

【root@ .ssh】#cat id_rsa.pub >> authorized_keys

【root@ .ssh】#chmod 600 authorize_keys

至此,SSH配置完毕,三个节点可以使用SSH无密钥相互访问。

在主机njrhero上执行如下命令进行测试:

【root@ .ssh】#ssh njr

【root@ .ssh】#ssh njrhero1

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/psxzd.html