1.什么是服务器集群0 {% d1 ]/ l- ?0 Q$ q
: g8 c/ n6 R1 S: ?) M7 a# K随着Internet的爆炸性增长, Internet与人的生活越来越息息相关,通过 Internet上进行交易也就越来越受关注。近几年,电子商务的年增长均超过100%。服务器的工作量也迅速增长,所以服务器(特别是一个受人欢迎的 WEB服务器)很容易在访问高峰时期过载。
5 u) r! O1 w) K4 C5 S9 d) p/ s" K# N" l2 v& /& o* H2 S( }
而另一方面,计算机从1946年单纯的科学计算任务到现在大量纷繁复杂的信息处理,工作量越来越大,需要越来越快的处理能力。所以计算机界就不得不不断研究更快的处理器,存储器,以适应这一需求。
" i0 f; h& O( u5 r; A* _
& ~: @6 }$ a/ G% h" u4 f. N; [6 `然而,科学家们意识到,单块处理器的速度发展空间是有限的,为什么不能让计算机象人一样协同工作,“群策群力”地将工作完成好呢!这时,就掀起了“并行计算”的研究。
1 }5 z9 a- D; O0 p
" G9 b! L# P3 T+ Q举 个例子来说,我们架设了一台WWW服务器,上面构建了一个电子商务网站,然而随着时间的推移,名声越来越大,这时点击率也就越来越高,WWW服务器的负载 也就越来越高。这种情况下,我们就必须提升WWW服务器的能力,以满足以益增长的服务请求。这时,我们就面临两种选择:
- @% w3 |- S; a( }
2 B3 i: e9 ], a. }- c( D! T4 q! O3 k1 {. u1)升级WWW服务器,采用更快的CPU,增加更多的内存,使其更具有POWER;但日益增长的服务请求又会使服务器再次过载,需要再次升级,这样就陷入了升级的怪圈。还有,升级时还得考虑到服务如何接续,能否中止!
8 @& t* K& ?" R
/ S6 J' M8 O& s3 p' v2)增加WWW服务器,让多台服务器来完成相同的服务。
0 n. n; M$ G: B+ C1 g- K) S0 H" Y6 x6 f1 o( I. i# @
这种方法就是服务器集群,通过并行技术来大大提升系统性能。也就是这一章的主要内容,这种方法具有很好的扩展性,而且可以最大限度地利用已有投资。
6 B: p, p# }, V% X. R1 P$ h: i$ N- N% D, F) g
1.1.集群的概念/ /7 ?0 q" C! ~/ b. t
/ z7 o: o& V2 r+ k y I9 K+ W* U7 V集群,是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。
0 E9 R4 e: _% B: R3 T/ X
; Q$ H. f+ l7 |近几年来,微处理器、内存、总线技术、网络技术有了非常大的进步,软件的并行技术也有了非常大的进步,这使得让一组廉价的个人电脑与工作站协同工作成为可能,甚至可以与拥有强大的芯片处理能力的超级计算机竞争。. R- `. t( y. f5 P# h" B
) |5 r e, C+ c6 S% n d# {: A比如,16个普通微处理器组成的集群系统可以达到亿次级浮点计算机能力,而且总的成本小于40万元。9 m4 C/ y& j9 C1 E* Q* Z
; g+ y! Q2 /0 f y- k- T5 g5 `3 W不幸的是,建造一个集群并不是一件简单的事件。集群的组成部分必须根据要运行的主要应用进行调整,以使之运行在最佳状态。这此因素带来的结果就是,建造集群系统不是只有一个标准的方案,在本章中,我们就会看到许多种建造方案。$ ~9 a$ w c2 u7 G4 O4 b S
# {6 r1 w6 C& f/ ~# Q& F5 G
集群技术是计算机系统结构的前沿领域,笔者也仅是略有了解,希望本文能起到抛砖引玉之用。
3 F, y( ?! }& O9 H$ T- x# a, X# f1 r. T r" q6 U: ?5 D
1.2.并行技术
' E: C- h& T4 j+ A* T9 k2 m" X; Z n3 c: F- u o
这是一个非常简单的建造四节点的小集群系统的例子,它是构建在Linux操作系统上,通过MPICH软件包实现的,希望这个小例子能让大家对集群系统的构建有一个最基本的了解。& J/ ?0 I. |5 G/ |# n
! q1 R; x6 w: H3 D" c6 v6 I
2.使用MPICH构建一个四节点的集群系统4 / `+ X$ d1 k& {4 _
8 j# o b; z! M3 m Q+ z这是一个非常简单的建造四节点的小集群系统的例子,它是构建在Linux操作系统上,通过MPICH软件包实现的,希望这个小例子能让大家对集群系统的构建有一个最基本的了解。1 o/ }2 Z/ P8 V; B5 b
7 f: t9 L7 @' W6 w* i2.1 所需设备- k$ g: t3 c- u. O
( a2 E9 Q5 e6 D5 x
1).4台采用Pentium II处理器的PC机,每台配置64M内存,2GB以上的硬盘,和EIDE接口的光盘驱动器。
6 e+ `' ]/ N: R6 m8 t' h2).5块100M快速以太网卡,如SMC 9332 EtherPower 10/100(其中四块卡用于连接集群中的结点,另外一块用于将集群中的其中的一个节点与其它网络连接。)
& b1 D: W- @! N0 M! p+ n( _3).5根足够连接集群系统中每个节点的,使用5类非屏蔽双绞线制作的RJ45缆线( S/ k+ T2 J$ m3 K0 k
4).1个快速以太网(100BASE-Tx)的集线器或交换机# R$ _7 @' J! @5 P6 e* l
5).1张Linux安装盘 ! R9 s& N+ m- m2 u7 w3 ?+ Z2 C3 g
6 B/ G: u! o& E8 i9 t2.2 构建说明- G) @9 /; p, H* v' b
. B) }* L5 r' u, `
对计算机硬件不熟的人,实施以下这些构建步骤会感到吃力。如果是这样,请找一些有经验的专业人士寻求帮助。
+ i, ^4 l# W, {, u8 ]5 P1. 准备好要使用的采用Pentium II处理器的PC机。确信所有的PC机都还没有接上电源,打开PC机的机箱,在准备与网络上的其它设备连接的PC机上安装上两块快速以太网卡,在其它的 PC机上安装上一块快速以太网卡。当然别忘了要加上附加的内存。确定完成后盖上机箱,接上电源。4 K/ D2 C. J i6 ^( G, `% o& r
2. 使用4根RJ45线缆将四台PC机连到快速以太网的集线器或交换机上。使用剩下的1根RJ45线将额外的以太网卡(用于与其它网络相连的那块,这样机构就可以用上集群)连接到机构的局域网上(假定你的机构局域网也是快速以太网),然后打开电源。
; f, ?& ]6 @* [- ?3 |' N+ R1 _3. 使用LINUX安装盘在每一台PC机上安装。请确信在LINUX系统中安装了C编译器和C的LIB库。当你配置TCP/IP时,建议你为四台PC分别指定 为192.168.1.1、192.168.1.2、192.168.1.3、192.168.1.4。第一台PC为你的服务器节点(拥有两块网卡的那 台)。在这个服务器节点上的那块与机构局域网相连的网卡,你应该为其指定一个与机构局域网吻合的IP地址。
( E' `6 {9 j9 ?3 N7 Z1 ^2 J- R6 r4.当所有PC都装好Linux系统后,编辑每台机器的/etc/hosts文件,让其包含以下几行:7 W3 F1 q! o7 c2 Y- c( w v6 B
192.168.1.1 node1 server
% i( O7 m0 p- K$ ?: `) s- l192.168.1.2 node2
; X0 |! T, b8 [192.168.1.3 node3' W) /6 r2 t) S f1 W% C
192.168.1.4 node42 J! M8 s+ P ]* A, V- ^
编辑每台机器的/etc/hosts.equiv文件,使其包含以下几行:8 Y! w/ s! T! c* N k- d
node1
$ y" R5 ^; ~/ {& r' i7 Y" dnode2$ Y3 _2 U& O6 K! B# `
node3
' k! Q( F& n) ?4 D; U" h/ Fnode4
5 ^; Y. M9 G) d以下的这些配置是为了让其能使用MPICH’s p4策略去执行分布式的并行处理应用。
+ z4 h' o E8 o- n1. 在服务器节点,建一个/mirror目录,并将其配置成为NFS服务器,并在/etc/exports文件中增加一行:; s# }0 j) /( d+ n2 y( C* Y- e
/mirror node1(rw) node2(rw) node3(rw) node4(rw) 8 o' Q4 J* X0 |3 d6 M$ l1 t+ A7 q: `) S5 N
2. 在其他节点上,也建一个/mirror目录,关在/etc/fstab文件中增加一行:
2 C' p5 W$ F0 Mserver:/mirror /mirror nfs rw,bg,soft 0 0 8 z' I/ d4 f! ]2 K/ j
3. /mirror这个目录从服务器上输出,装载在各个客户端,以便在各个节点间进行软件任务的分发。. z- R% y1 Z+ G$ k- ~
4. 在服务器节点上,安装MPICH。MPICH的文档可在http://www.mcs.anl.gov/mpi/mpich/docs.html获得。& p% b3 R$ c* [; v8 S% ?
5. 任何一个集群用户(你必须在每一个节点新建一个相同的用户),必须在/mirror目录下建一个属于它的子目录,如/mirror/username,用 来存放MPI程序和共享数据文件。这种情况,用户仅仅需要在服务器节点上编译MPI程序,然后将编译后的程序拷贝到在/mirror目录下属于它的的子目 录中,然后从他在/mirror目录下属于它的的子目录下使用p4 MPI策略运行MPI程序。
8 x: G/ d: H/ i9 R/ i, a) R
$ L; n% z8 g4 s) x6 R$ K2.3 MPICH安装指南) ]: z! M0 c- ~- K5 g
5 z3 t- `4 J/ m1. 如果你有gunzip,就d下载mpich.tar.gz,要不然就下载mpich.tar.Z。你可以到http: //www.mcs.anl.gov/mpi/mpich/downloa下载,也可以使用匿名FTP到ftp.mcs.anl.gov的pub/mpi 目录拿。(如果你觉得这个东西太大,你可以到pub/mpi/mpisplit中取分隔成块的几个小包,然后用cat命令将它们合并)) p. Y, i; D% z9 o( l# T* Y( }
2.解压:gunzip ;c mpich.tar.gz |tar xovf-(或zcat mpich.tar.Z|tar xovf-)+ // G: q3 ]+ T5 j" S' p
3.进入mpich目录
# B* v1 O' n$ Z6 O4 f7 j4.执行:./configure为MPICH选择一套适合你的实际软硬件环境的参数组,如果你对这些默认选择的参数不满意,可以自己进行配置(具体参见MPICH的配置文档)。最好选择一个指定的目录来安装和配置MPICH,例如:
+ j1 D# F/ p7 h2 `. P h./configure -prefix=/usr/local/mpich-1.2.0
# K$ t, M" @- r7 `8 N E5.执行:make >& make.log 这会花一段较长的时间,不同的硬件环境花的时间也就不同,可能从10分钟到1个小时,甚至更多。
& v; ~: W: U9 O6. (可选)在工作站网络,或是一台单独的工作站,编辑mpich/util/machines/machines.xxx(xxx是MPICH对你机器体系 结构取的名称,你能很容易的认出来)以反映你工作站的当地主机名。你完全可以跳过这一步。在集群中,这一步不需要。3 A5 ^, F; z- ~- | _0 N; {6 q
7.(可选)编译、运行一个简单的测试程序:
3 c% `+ e5 x t! V# Q7 Hcd examples/basic & {1 o/ m" f) U' D. e8 W/ }
make cpi: B+ j2 S. W& J8 U7 |1 C
ln ;s ../../bin/mpirun mpirun
$ p; _, [2 {3 Q./mpirun ;np 4 cpi/ D& @! z; c: O" ?$ W2 @, G
此时,你就在你的系统上运行了一个MPI程序。; I' g# ?. i8 n% G' h& w% U9 w
8.(可选)构建MPICH其余的环境,为ch_p4策略使用安全的服务会使得任何启动速度加快,你可以执行以下命令构建:
7 g) `4 D6 R. H4 Z/ V8 {make serv_p4
: Y* e: t3 B A0 B& k+ x$ C(serv_p4是一个较新的P4安全服务的版本,它包含在MPICH 1.2.0版中),nupshot程序是upshot程序的一个更快版本,但他需要tk 3.6版的源代码。如果你有这个包,你就用以下命令可以构建它:- l4 O4 l( |( S6 y+ v% o8 p
make nupshot$ _8 _! q2 n; O! u4 m
9.(可选)如果你想将MPICH安装到一个公用的地方让其它人使用它,你可以执行:
2 n: S! ^7 K# G5 P4 hmake install 或 bin/mpiinstall
7 l9 F8 Z+ X! t+ m你可以使用-prefix选项指定MPICH安装目录。安装后将生成include、lib、bin、sbin、www和man目录以及一个小小的示例目录,
. y( t+ W# [, u7 |+ [. t d R' ](可选)到此你可以通告所有的用户如何编译、执行一个MPI程序。
& }& Y: `% S0 u+ t. K; o! L
: q* w! r! Y7 o0 C8 j6 /; h/ T2.4 费用统计
# y; {4 B, N& h4 T0 O1 C
, |+ ^1 p& @. P1 a& m4 ?这个小的集群方案总的费用大致如下:6 u' s1 S% Z, f- B, ]. k6 X& g
设备费用:! /# `. g2 x2 [/ H+ D+ _9 b
4台 Pentium II CPU /64MB内存, 2GB的硬盘带EIDE CD-ROM 的机器: 24000元; r" f% f4 ~( O' t' v! u {
5块快速以太网卡: 800元
8 T/ N# W; A4 a/ g0 |7 M9 v0 Y1个快速以太网的集线机:2000元
0 w! F, j3 W( X" x' u5根双绞线:50元
! M* ^( c% i, /6 O/ p软件费用:0 N% R6 `. r3 P8 Z# o4 W9 x" l
LINUX安装光盘:50元5 R' w/ |, I% K) |
MPICH:0元2 G, P2 ?% Q# @1 _4 k5 A
合计:26900元。
: H( r/ M# C6 x% K7 r这样一个集群系统可以用于一些大量的科学计算,信息处理,而且其性价比实在是太好了,仅需不到三万元。