达成 Cluster 所需要额外功能 ( RSH ) 与软件 ( MPICH )
由上面的 Cluster 主从架构当中,我们知道 Master 与 Slave 之间的网络沟通很重要的一个咚咚,那就是 R Shell 啰!此外,还有将一个工作传送给不同的 node 来进行计算的任务,就需要 MPICH 这个函式库来进行!简单的谈一谈这两个玩意儿吧!
RSH:
在我们的 Linux 主机上面工作,通常使用 BASH 这个 shell 来传达给 kernel 工作的讯息,以使主机正确的工作;而如果在不同的主机之间,那就可以使用 R Shell 来进行指令的下达喔,如此一来,我们就可以直接在 A 机器,向 B 机器下达工作的指令,而不需要登入 B 机器呢~那就是 RSH 的主要功能啦!最常见的 RSH 指令就是 rcp 与 rsh 了!有兴趣的朋友应该知道以 man 来查寻一下该指令的用法啰!
需要附带一提的是,这个 RSH 是『相当危险』的一个服务喔!由于我们可以直接登入 RSH 主机,并且在上面进行指令的下达,为了避免还要输入密码的问题,因此通常 RSH 已经将信任主机设定好了,不过,由于 RSH 会激活一些 port 来监听 Clients 的需求,而偏偏这些 port 与 daemon 都还挺危险的,因此,『Cluster 最好是设定在内部网域当中,并使用私有 IP ,比较能够避免危险』喔!此外,那个 Master 也必须要设定好一定程度的严密防火墙喔!
MPICH:
MPI 是 Messages Passing Interface 的缩写,他本身是一个规格很严密的通讯标准,主要的功能是在处理平行运算之间各个 node 的资料交换,请注意, MPI 并不是一套软件喔!而至于 MPICH 就是符合 MPI 这个标准通讯协议的一套软件了!因此,我们可以经由 MPICH 这个软件提供的 MPI 函式库来达成平行运算的功能喔!也就是说,我们所写的程序,只要能够使用 MPICH 提供的函式库,那么该程序就可以进行平行运算时候所需要的功能了,这就可以避免程序开发者还要去处理通讯节点上面的问题,而可以将程序开发的重心着重在程序本身的问题上面!
MPICH 是由 Mathematics and Computer Science Division的 Argonne 实验室所发展,详细的资料可以参考:
http://www-unix.mcs.anl.gov/mpi/mpich/
除了这两个软件之外,还需要 NIS 与 NFS 喔!所以啦!要建置一个 Cluster 的话,身为系统管理员的您,必须要学会的技能真是相当的多的,至少需要:
熟悉 Linux 的操作技巧;
熟悉 Linux 基础网络参数设定;
熟悉 Linux 相关的 Server 架设(这方面请参考鸟哥的私房菜架站篇);
了解 RSH 的相关功能与设定技巧;
了解 MPICH 的设定与相关功能;
熟悉至少一种程序语言。
还真的是不好学啊!鸟哥也是新手玩弄 Cluster 说~大家一起研究研究吧!
--------------------------------------------------------------------------------
架设流程
要架设 Cluster 当然就是需要多部的 PC 来联机啦!不然怎么称为 Cluster 呢?您说是吧!所以,无论如何,在架设 Cluster 之前,请务必要确认您的『所有硬件以及网络功能都是完整无缺的!』否则就无法继续下去啦!另外,建议 Cluster 的所有主机规格尽量相同,可以避免等待的困扰呢!底下就来谈一谈整个架设流程吧!
--------------------------------------------------------------------------------
整体架构
整体架构的架设当中,需要的所有软件为:
Master 主机安装需要:
防火墙的设定(含 NAT 架设);
RSH
NIS Server
NFS Server
Compiler Install
MPICH Install
其它特殊功能
Slave 主机安装需要:
防火墙的设定
RSH
NIS Client
NFS Client
基本上,几乎所有的工作都是在 Master 上面做啦! Slave 最大的任务就是进行来自 Master 所要求的计算工作,因此,Slave 能够越简单越好~至于 Master 上面,由于我们都是在 Master 主机上面下达工作指令,而总不能老是在屏幕前面下达指令吧!因此上,Master 通常会有两个网络接口,分别是对外的 Public IP 与对内的 Priavte IP。而既然 Master 有提供 Public IP 的设定,自然就比较担心所谓的骇客入侵问题,所以啦,您的 Master 主机,要吗就不要开放 Public IP ,要吗就务必要设定很严密的防火墙,并且不必要的服务就尽量关闭他~毕竟我们的 Cluster 是要用来做为计算运作的,所以不必要的网络协议服务,当然就是关闭他啦!底下鸟哥将以自己的一个实际案例进行说明的啦!参考看看吧!
--------------------------------------------------------------------------------
一个实例规范
在我这个案例当中, Cluster 主要的功能为:进行 MM5 这个气象模式的运算以及 Models-3/CMAQ 这个空气品质模式的运算,而由于这两个咚咚都是使用 PGI Fortran 90 做为 Compiler ,因此,我就必须要进行 PGI 的安装啦!而我的硬件架构主要是这样的:
Master : 为双 CPU 主机,使用 AMD MP 的 CPU ,并且有一颗 120 GB 的硬盘,此外,由于我的数值模式需要 PGI Fortran ,所以就必须要安装 Server 版的 PGI Fortran 喔!
Slave : 共有三部 Slave ,每一部均为双 CPU 的 AMD MP 的 CPU ,并且有一颗 120 GB 的硬盘;
连接 Master 与 Slave 的为 10/100/1000 的 Switch ,当然,四部主机(1 x master + 3 x slave)都是安装 Intel 的 1GB 网络卡喔!
硬件连接有点像这样:
那么底下就来谈一谈怎么安装他吧!