Ubuntu 8.10上安装MPICH2并行计算环境(2)

7. 安装后配置(多机测试)

由于需要将多台机器进行联网,组成强大的并行计算环境,我们必须对已经安装好的MPICH2进行多台机器的联机测试,看看到底可用否。
    MPICH2在多台机器上面组成并行计算环境的通信协议是SSH,因此我们首先必须保证,在参与计算的机器中,在每台机器上面都可以不用输入密码地SSH 到其他的机器上面(包括本机),这个我们通过配置SSH的公钥和私钥来解决。
    另一个重要的基础是每台机器上面的配置环境必须一模一样,有着同样的用户名,同样的用户目录,同样的环境变量,同样的MPICH2的bin目录及位置,同 样的需要并行计算的程序,这个我们采用samba文件共享来解决,让所有的客户机都共享同样的主机目录,这样只需要在主机上面做配置就可以了,其他的机器 上面直接享有主机的配置,省去了一台一台配置的麻烦,特别是当参与计算的机器很多的时候。其实采用samba文件共享仍然不是十分完美的解决方案,真正好 的方案是采用GFS(Global File System)等网络文件系统建立一个文件服务器,文件服务器当作主机,所有的客户机的用户的home目录都挂载主机的home目录。这不属于本文范畴, 我们就此打住。
    下面,让我们一步一步来做。
    需要说明的是,步骤(1)、(2)和(5)需要在每台客户机上面都执行。步骤(3)中的.ssh文件夹需要拷贝到每台客户机上面。

(1) 修改/etc/hosts
    在hosts文件中添加所有参与计算的机器的IP和主机名的配置,这样,我们就可以通过主机名来访问每台机器,省去了输入IP地址的麻烦。比如,我的 hosts文件配置如下:
linuxidc@:~$ more /etc/hosts
127.0.0.1    localhost
#127.0.1.1    zzm-desktop

192.168.1.190    zzm-desktop
192.168.1.248    zcni-desktop

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
linuxidc@:~$

不要忘记了将"127.0.1.1    zzm-desktop"注释掉。下面两行是对参与计算的机器的配置:
    192.168.1.190    zzm-desktop
    192.168.1.248    zcni-desktop

(2) 创建mpd.hosts
    这个文件的作用是告诉MPICH2,都有哪些机器参与了运算,每行一个机器名或者IP,该文件可以放在任何位置。比如我的mpd.hosts文件内容如 下:
linuxidc@:~$ more /home/zzm/mpd.hosts
192.168.1.190
192.168.1.248
linuxidc@:~$

(3) 配置SSH
安装SSH服务器和客户端:
    首先必须在每台参与运算的机器上面安装openssh服务器和客户端工具:
linuxidc@:~$ sudo apt-get install openssh-server openssh-client

然后配置密钥:
    首先在本机(主机)上面生成SSH公钥和私钥:
linuxidc@:/home/zzm$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/zzm//.ssh/id_rsa): [使用默认值,我什么都没输入]
Enter passphrase (empty for no passphrase): [使用默认值,我什么都没输入]
Enter same passphrase again: [使用默认值,我什么都没输入]
Your identification has been saved in /home/zzm//.ssh/id_rsa.
Your public key has been saved in /home/zzm//.ssh/id_rsa.pub.
The key fingerprint is:
67:ae:bd:ef:7b:3f:58:0e:a6:dc:35:68:56:1c:c5:37 linuxidc@
The key's randomart image is:
+--[ RSA 2048]----+
|               .o|
|               Eo|
|              . +|
|               o |
|        S o   o |
|         +   * + |
|          o * * .|
|         o o o.o |
|        . o++o .o|
+-----------------+
linuxidc@:/home/zzm$ cd .ssh/
linuxidc@:/home/zzm/.ssh$ ls
id_rsa id_rsa.pub

其中,id_rsa就是本机上面的私钥,id_rsa_pub是与本机上面的私钥可以对上号的公钥。
由于每台机器既要当作SSH服务器又要当作SSH客户端,因此我们需要做的就是将这对公钥和私钥分发给每台机器,但是首先必须将公钥的文件名改 成"authorized_keys":

linuxidc@:/home/zzm/.ssh$ mv id_rsa.pub authorized_keys
linuxidc@:/home/zzm/.ssh$ ls
authorized_keys id_rsa

然后使用scp命令将主机上面的.ssh目录整个拷贝给每台机器:

linuxidc@:/home/zzm/.ssh$ scp /home/zzm/.ssh/* zzm@192.168.1.248:/home/zzm/.ssh/
zzm@192.168.1.248's password:
authorized_keys                               100% 397     0.4KB/s   00:00   
id_rsa                                        100% 1675     1.6KB/s   00:00   
known_hosts                                   100% 442     0.4KB/s   00:00

执行完上面的操作之后,我们来进行测试:
linuxidc@:/home/zzm/.ssh$ ssh zcni-desktop
The authenticity of host 'zcni-desktop (192.168.1.248)' can't be established.
RSA key fingerprint is f2:99:c8:ac:e8:81:bd:4f:16:8f:c3:45:c5:56:65:c7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'zcni-desktop' (RSA) to the list of known hosts.
Linux zcni-desktop 2.6.27-7-generic #1 SMP Fri Oct 24 06:42:44 UTC 2008 i686

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To access official Ubuntu documentation, please visit:

Last login: Sat Jan 30 16:47:11 2010 from 192.168.1.190
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

zzm@zcni-desktop:~$

发现可以不用输入密码而很快的登录到另一台机器上面。
但是,我们要达到的效果是在每台机器上面都可以SSH到mpd.hosts文件中列出每台机器上面,因此针对本文中使用的mpd.hosts文件,我们必 须可以达到下面的效果:
在zzm-desktop上面,输入"ssh zzm-desktop"和"ssh zcni-desktop"都可以不用输入密码而登录到目标机器上面。
在zcni-desktop上面,输入"ssh zzm-desktop"和"ssh zcni-desktop"都可以不用输入密码而登录到目标机器上面。
如果,您发现您不能做到上述这样,请一定耐心查找原因,务必做到,这是使用MPICH2做并行计算的基础。

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

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