NFS+MPICH2 简单集群搭建
准备工作:
Sudo apt-get install openssh-server( master node)
Sudo apt-get install openssh-client(slave node)
Sudo apt-get install nfs-kernel-server(master node)
Sudo apt-get install nfs-client(slave node)
Sudo apt-get install gcc  (g++ gfortran 可选)
加上所有用户名都是(h)
NFS系统配置
1. master node
(1)用 命令sudo vi /etc/hostname 打开 hostname 文件, 将主机名改为自己想要的名字(如 node0),保存退出vi编辑器,然后用命令sudo reboot重启, CTR+ALT+t 会在命令行窗口看到刚才改的名字;
(2)用命令 sudo vi /etc/hosts 打开hosts 文件,配置hosts文件(如下面形式(3个节点))
127.0.0.1              localhost
192.168.1.10           node0
192.168.1.11           node1
192.168.1.12           node2
注意:此时的node0 必须与第一步改的一样 否则启动不了mpich2)
(3)第一步,利用命令 cd / 回到根目录,然后 sudo mkdir cluster 创建 共享目录cluster。用ls –l 或者ll 查看刚建立的 cluster目录,其属于root用户和root组。用命令 sudo chown h:h /cluster进行修改,再次参考会发现 目录/cluster 已经被改成我们所想要的用户和组;第二步,用命令sudo vi  /etc/exports(或者 sudo gedit /etc/exports)打开 exports 文件,并在文件末尾添加如下形式的东西
/cluster  node0(rw,sync,fsid=0,crossmnt,no_subtree_check)
/cluster  node1(rw,sync,fsid=0,crossmnt,no_subtree_check)
/cluster  node2(rw,sync,fsid=0,crossmnt,no_subtree_check)
这两句的意思是说 将master node0 的/cluster 目录共享给node1,node2,权限是读和写
到此,master node 的NFS配置完毕。
最后,运行 sudo exportfs -rv 使配置生效。
2. slave nodes 配置(每个slave node)
(1)用 命令sudo vi /etc/hostname 打开 hostname 文件, 将主机名改为自己想要的名字(如 node0),保存退出vi编辑器,然后用命令sudo reboot重启, CTR+ALT+t 会在命令行窗口看到刚才改的名字;
(2)用命令 sudo vi /etc/hosts 打开hosts 文件,配置hosts文件(如下面形式(3个节点))
127.0.0.1              localhost
192.168.1.10           node0
192.168.1.11           node1
192.168.1.12           node2
保存退出。
(3)挂载 master node 的 cluster目:用命令sudo vi  /etc/fstab(或者 sudo gedit /etc/fstab)打开 fstab 文件,并在文件末尾添加如下形式的东西
node0:/cluster  /cluster nfs rw, async,auto,exec,nouser,suid 0 0
保存退出。
节点之间的ssh 无密码登录
所有节点之间都执行相同的操作,在此以master node为例进行操作
注:ping node1( ping node2) 看是否都能ping通,否则检查硬件和自己的配置,直到所有节点都ping通之后再继续下面的操作
cd
ssh-keygen –t rsa 一路回车之后
cd .ssh (进入 .ssh 目录)
ls  (会看到 有 id_rsa, id_rsa.pub 两个文件,分别表示公钥和私钥)
touch authorized_keys (创建空文件authorized_keys, 制作授权密钥)
cp id_rsa.pub  ~/.ssh/authorized_keys
scp id_rsa.pub  node1:~/.ssh/0.pub
scp id_rsa.pub  node2:~/.ssh/0.pub
分别进入node1, node2 的.ssh目录执行
cat 0.pub  >> authorized_keys
所有node 执行上面相同的操作之后,在每个节点分别执行
ssh node* ( * 可以代表0, 1, 2中的一个),如果都不需要输入密码就能进入别的node则说明配置成功,否则检查,直到能无密码登录为止。
利用 exit退出登录。
(可能出错,出错时将 known-hosts 删除,重新执行(类似cat 0.pub  >> authorized_keys
的语句,便可解决)
MPICH 2 安装及配置
安装:(master node)
sudo apt-get install build-essential
sudo apt-get install autoconf
sudo apt-get install automake
在mpi官网下载最新的mpich2,然后 利用 cp  ~/Downloads mpich2-xxxx.tar.gz  /cluster/
tar –xzvf  mpich2-xxxx.tar.gz (解压缩)
sudo mkdir mpich2 (新建目 mpich2 用来安装mpich2)
cd /cluster/mpich2-xxxx
./configure –prefix=/cluster/mpich2  --with-pm=mpd (参考mpic2 用户手册 根据自己的需要进行配置)
配置完之后,运行
sudo make (需要几分钟时间)(反make: make clean)
完事之后,运行
sudo make install  (需要几分钟时间)(反install: sudo make uninstall)
环境变量配置:(master node 和slave node节点相同部分)
cd  (回到 ~/ 目录)
vi .bashrc (打开 .bashrc 文件,然后 在文件末尾添加如下内容)
export  PATH=”/cluster/mpich2/bin: $PATH”
export  PATH
export  LD_LIBRARY_PATH=”/cluster/mpich2/lib:$ LD_LIBRARY_PATH”
export  LD_LIBRARY_PATH
保存,退出,然后运行
source  ~/.bashrc 加载修改的内容
对master node 还多下面一步
sudo vi /etc/environment
将PATH 的值修改为(使ssh能够找到)
修改前
PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games”
修改后
PATH=”/cluster/mpich2/bin:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games”
要使mpich2能够运行还需要一下一些配置
master node
cd  (回到 ~/ 目录)
touch  mpd.hosts
vi mpd.hosts 添加如下内容,然后保存退出
node0
node1
node2
也可以以这种方式
node0:num0
node1:num1
node2:num2
其中,numi 为每个节点的cpu数
接着配置 .mpd.conf 文件(所有node)
cd  (回到 ~/ 目录)
touch .mpd.conf
vi  ~/.mpd.conf
添加 MPD_SECRETWORD=mypasswd. 其中mypasswd最好喝用户的密码保持一致
chmod 600 ~/.mpd.conf (修改权限)
到此所有配置全部完成
在个节点分别用一下命令进行测试,看是否配置成功
mpd &
mpdtrace
mpdallexit
若以上测试都成功,则可以回到master node 进行体验简单的并行程序
cd
mpdboot –n 3 –f  mpd.hosts
mpirun  -n 20  /cluster/mpich2-xxxx/examples/cpi
mpdallexit   完工