[转帖]简易cluster架设
近年来因为数值模式仿真的盛行,所以『平行运算』的架构也就越来越重要了!什么是数值仿真呢?主要就是藉由一些物理理论去开发出来的一些『计算公式』,而这些计算公式藉由程序语言(例如C、Fortran等等)实际的将他编译成为可执行的程序,最常见的例如中央气象局不是每天都会预报天气吗?这个预报的动作就是利用数值计算去演算出来的。另外,还有空气品质模式仿真,也是经过运算出来的,除此之外,例如天文、物理、水文等等很多方面的工作,都是利用这种数值仿真的运算的喔!不过,这些程序是很大型的!也就是说,他们在运算的时间是很长的,如果使用单颗 CPU 的话,不论这颗 CPU 的频率与效能有多高,还是得要运算个好几个钟头的~如此一来,对于像气象预报这个急需时效性的工作可能就会有所延误啊!不过,如果我将这个运算的工作同时丢给多颗 CPU 呢?也就是让多颗 CPU 同时进行这个程序的运算工作,如此一来,将可以大大的减低时间的损耗了~这就是平行运算的简单说明。在 Linux 平台上面,要达成简单的平行运算,可以透过 MPI 的函式库,例如 MPICH 就是一个很有名的 MPI 软件喔!马上来给他看看平行运算类型的 Cluster 建置吧! <br><br>
原理: <br>
:什么是 Cluster 与 Cluster 的优点 <br>
:Cluster 的主从架构 <br>
:达成 Cluster 所需要额外功能 ( RSH ) 与软件 ( MPICH ) <br>
架设流程: <br>
:整体架构 <br>
:鸟哥的一个实例规范 <br>
:系统安装 ( Red Hat 9 ) <br>
:防火墙 ( 含 NAT 主机 ) 与网络设定 <br>
:NFS 架设规划(相当重要,参考说明) <br>
:NIS 架设规划 <br>
:RSH 设定 <br>
:安装 Fortran 90 的编译程序 PGI pgf90 ( PS. server version ) <br>
:安装 MPICH <br>
-------------------------------------------------------------------------------- <br>
<br>
原理: <br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
什么是 Cluster 与 Cluster 的优点 <br>
<br>
什么是 Cluster 呢?目前常见的 Cluster (丛集)架构有两种,一种是 Web / Internet cluster system,这种架构主要是将资料放置在不同的主机上面,亦即由多部主机同时负责一项服务;而另外一种则是所谓的平行运算了!平行运算其实就是将同一个运算的工作,交给整个 Cluster 里面的所有 CPU 来进行同步运算的一个功能。由于使用到多个 CPU 的运算能力,所以可以加快运算的速度。目前比较常见于平行运算功能的,通常需要在超级计算机上面才看的到,这些超级计算机主要是用在天文、军事、物理等需要很精密的、大量的运算的工作中,而考虑到稳定性,则通常是用在 Unix 系统上面的硬件架构上。不过,目前由于 PC 上面的 CPU 的运算功能越来越强大了~因此,当然很多程序开发者就动脑筋到 PC 上面来制作并行计算机的系统啰!我们这篇短文主要在介绍的就是『平行运算』这一类的 Cluster 了! <br>
<br>
由于 Cluster 主要是用在平行运算上面的,而所谓的平行运算是使用到多颗 CPU 的运算功能,因此可以让您的大型运算的程序很快的执行完毕!因此,如果你的工作环境当中,常常会使用到很耗 CPU 运算功能的程序时,就可以尝试使用 Cluster 来进行工作啰!应该可以节省您不少的时间吶!此外,我们这篇短文主要是在 X86 架构下的 PC 来架设 Cluster 的喔! <br>
<br>
不过,也需要特别留意的是,由于我们的 Cluster 是将一个工作平均分给所有的 node (注:一颗 CPU 在一个 Cluster 架构下,就称为一个 node 啰!),所以,万一您做成的 Cluster 系统当中,所有的 node 并非完全相同的运算等级,那么先做完工作的 node 将会暂停工作,会等到所有的 node 都进行完毕后,才会在进行下一动~所以啦!强烈的建议在同一个 cluster 的架构中,尽量所有的 CPU 都使用相同的 CPU 型号,应该会比较好一点喔! <br>
<br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
Cluster 的主从架构 <br>
<br>
最简单的 Cluster 其实就是以一种主从架构来进行资料的运算工作的,图标如下: <br>
<br>
上面的 Master 与 Slave 指的都是 CPU 喔! <br>
<br>
Master 那部机器上面必须要有可以将工作分配给各个 node 去工作的函式库,也就是 MPI ,他最重要的功能就是将工作给他分配下去的啦!而最重要的软件就是:(1)MPICH;(2)编译器(compiler, 例如 Fortran); <br>
<br>
什么是网络功能呢?如果 master 与 slave 是在同一部机器当中,例如双 CPU 的主机板,那么这里就不需要网络功能啦!不过,如果我是使用四台双 CPU 的 PC 呢?呵呵!那么这四部主机就需要以高速网络架构进行联机啦!此外,还需要在这四部主机之间建立可以互通讯息的通讯协议才行,这方面的功能就含有:(1)R Shell, 亦即称为 RSH;(2)NIS,使 Master 与 Slave 具有相同的帐号群组关系;(3)NFS,使读取写入的资料可以在同一个 partition 上面; <br>
<br>
Slave 就是单纯的将来自 Master 的任务给他做完就是了! <br>
<br>
整个主从架构大致上就是这样啦!因此,可以知道的是,我们需要的就是上面那些咚咚啰!
re:达成 Cluster 所需要额外功能 (...
达成 Cluster 所需要额外功能 ( RSH ) 与软件 ( MPICH ) <br><br>
由上面的 Cluster 主从架构当中,我们知道 Master 与 Slave 之间的网络沟通很重要的一个咚咚,那就是 R Shell 啰!此外,还有将一个工作传送给不同的 node 来进行计算的任务,就需要 MPICH 这个函式库来进行!简单的谈一谈这两个玩意儿吧! <br>
<br>
RSH: <br>
在我们的 Linux 主机上面工作,通常使用 BASH 这个 shell 来传达给 kernel 工作的讯息,以使主机正确的工作;而如果在不同的主机之间,那就可以使用 R Shell 来进行指令的下达喔,如此一来,我们就可以直接在 A 机器,向 B 机器下达工作的指令,而不需要登入 B 机器呢~那就是 RSH 的主要功能啦!最常见的 RSH 指令就是 rcp 与 rsh 了!有兴趣的朋友应该知道以 man 来查寻一下该指令的用法啰! <br>
需要附带一提的是,这个 RSH 是『相当危险』的一个服务喔!由于我们可以直接登入 RSH 主机,并且在上面进行指令的下达,为了避免还要输入密码的问题,因此通常 RSH 已经将信任主机设定好了,不过,由于 RSH 会激活一些 port 来监听 Clients 的需求,而偏偏这些 port 与 daemon 都还挺危险的,因此,『Cluster 最好是设定在内部网域当中,并使用私有 IP ,比较能够避免危险』喔!此外,那个 Master 也必须要设定好一定程度的严密防火墙喔! <br>
<br>
MPICH: <br>
MPI 是 Messages Passing Interface 的缩写,他本身是一个规格很严密的通讯标准,主要的功能是在处理平行运算之间各个 node 的资料交换,请注意, MPI 并不是一套软件喔!而至于 MPICH 就是符合 MPI 这个标准通讯协议的一套软件了!因此,我们可以经由 MPICH 这个软件提供的 MPI 函式库来达成平行运算的功能喔!也就是说,我们所写的程序,只要能够使用 MPICH 提供的函式库,那么该程序就可以进行平行运算时候所需要的功能了,这就可以避免程序开发者还要去处理通讯节点上面的问题,而可以将程序开发的重心着重在程序本身的问题上面! <br>
MPICH 是由 Mathematics and Computer Science Division的 Argonne 实验室所发展,详细的资料可以参考:<a target=_blank href=http://www-unix.mcs.anl.gov/mpi/mpich/>http://www-unix.mcs.anl.gov/mpi/mpich/</a> <br>
<br>
除了这两个软件之外,还需要 NIS 与 NFS 喔!所以啦!要建置一个 Cluster 的话,身为系统管理员的您,必须要学会的技能真是相当的多的,至少需要: <br>
<br>
熟悉 Linux 的操作技巧; <br>
熟悉 Linux 基础网络参数设定; <br>
熟悉 Linux 相关的 Server 架设(这方面请参考鸟哥的私房菜架站篇); <br>
了解 RSH 的相关功能与设定技巧; <br>
了解 MPICH 的设定与相关功能; <br>
熟悉至少一种程序语言。 <br>
<br>
还真的是不好学啊!鸟哥也是新手玩弄 Cluster 说~大家一起研究研究吧! <br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
架设流程 <br>
<br>
要架设 Cluster 当然就是需要多部的 PC 来联机啦!不然怎么称为 Cluster 呢?您说是吧!所以,无论如何,在架设 Cluster 之前,请务必要确认您的『所有硬件以及网络功能都是完整无缺的!』否则就无法继续下去啦!另外,建议 Cluster 的所有主机规格尽量相同,可以避免等待的困扰呢!底下就来谈一谈整个架设流程吧! <br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
整体架构 <br>
<br>
整体架构的架设当中,需要的所有软件为: <br>
<br>
Master 主机安装需要: <br>
防火墙的设定(含 NAT 架设); <br>
RSH <br>
NIS Server <br>
NFS Server <br>
Compiler Install <br>
MPICH Install <br>
其它特殊功能 <br>
<br>
Slave 主机安装需要: <br>
防火墙的设定 <br>
RSH <br>
NIS Client <br>
NFS Client <br>
<br>
基本上,几乎所有的工作都是在 Master 上面做啦! Slave 最大的任务就是进行来自 Master 所要求的计算工作,因此,Slave 能够越简单越好~至于 Master 上面,由于我们都是在 Master 主机上面下达工作指令,而总不能老是在屏幕前面下达指令吧!因此上,Master 通常会有两个网络接口,分别是对外的 Public IP 与对内的 Priavte IP。而既然 Master 有提供 Public IP 的设定,自然就比较担心所谓的骇客入侵问题,所以啦,您的 Master 主机,要吗就不要开放 Public IP ,要吗就务必要设定很严密的防火墙,并且不必要的服务就尽量关闭他~毕竟我们的 Cluster 是要用来做为计算运作的,所以不必要的网络协议服务,当然就是关闭他啦!底下鸟哥将以自己的一个实际案例进行说明的啦!参考看看吧! <br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
一个实例规范 <br>
<br>
在我这个案例当中, Cluster 主要的功能为:进行 MM5 这个气象模式的运算以及 Models-3/CMAQ 这个空气品质模式的运算,而由于这两个咚咚都是使用 PGI Fortran 90 做为 Compiler ,因此,我就必须要进行 PGI 的安装啦!而我的硬件架构主要是这样的: <br>
<br>
Master : 为双 CPU 主机,使用 AMD MP 的 CPU ,并且有一颗 120 GB 的硬盘,此外,由于我的数值模式需要 PGI Fortran ,所以就必须要安装 Server 版的 PGI Fortran 喔! <br>
Slave : 共有三部 Slave ,每一部均为双 CPU 的 AMD MP 的 CPU ,并且有一颗 120 GB 的硬盘; <br>
连接 Master 与 Slave 的为 10/100/1000 的 Switch ,当然,四部主机(1 x master + 3 x slave)都是安装 Intel 的 1GB 网络卡喔! <br>
<br>
硬件连接有点像这样: <br>
<br>
那么底下就来谈一谈怎么安装他吧! <br>
页:
[1]