, D- @2 t* z6 L- ]' `7 zRawn Shah 作为专家,在 Linux 现有的开放源码和封闭源码集群解决方案方面为您指点迷津。( W: t- k+ P* O6 l4 k/ U$ s
: ] y3 K" U: ^) e ?, l( t
5 o1 d! w9 x+ ]7 w% v
' q2 G! c9 o; m Q. q计算 Linux 中集群项目的数量就象计算硅谷中创业公司的数量一样。不象 Windows NT 已经受其自身的封闭环境阻碍,Linux 有大量的集群系统可供选择,适合于不同的用途和需要。但确定应该使用哪一个集群的工作却没有因此变得简单。- k7 A8 y- `, ? A1 \( M. Z
0 I2 K9 K8 V+ x0 c4 a! e问题的部分原因在于术语集群用于不同场合。IT 经理可能关心如何使服务器运行时间更长,或使应用程序运行得更快,而数学家可能更关心在服务器上进行大规模数值计算。两者都需要群集,但是各自需要不同特性的群集。% n* s- s v- ^' ~1 C1 O
" x$ C) [" p6 a9 W5 p本文调查了不同形式的集群以及许多实现中的一部分,这些实现可以买到,也可以免费软件形式获得。尽管列出的所有解决方案并不都是开放源码,但是大多数软件都遵循分发 Linux 源码的公共惯例,特别是由于那些实现集群的人还常常希望调整系统性能,以满足需要。+ f6 D0 _5 Q+ B- M2 L2 n
4 z* P9 [9 _* y! d! F( X9 w) P( H( v
硬件 , o O2 i+ H5 l0 n集群总是涉及到机器之间的硬件连接。在现今大多数情况下,这只是指“快速以太网”网卡和集线器。但在尖端科学领域中,有许多专为集群设计的网络接口卡。( m y7 n2 _9 M2 y$ Y& R2 A
5 T, H; f- U# [$ j/ Y) [这种方法对于群集大小是非常灵活的,因为可以明确选择节点的数量,甚至是运行应用程序的节点。于是,可以将 64 个节点的群集分成更小的逻辑群集,每个逻辑群集都运行自己的批处理应用程序。而且,如果应用程序或节点失败,它可以在其它服务器上重新安排作业。 % T/ d: z5 E( m5 q9 j2 A* ?( x ; C& ^2 _! \4 ]. ~, X$ y9 }- O8 L3 D+ @Platform 的产品在主要 Unix 系统和 Windows NT 上运行。目前,只有它们的 LSF 批处理产品已经移植到 Linux 上。最终,LSF Suite 组件的其余部分也将紧随其后移植到 Linux 上。% m& u% z) z0 B* b% @/ L
- d0 ]7 d- l( q% @3 kResonate Dispatch 系列9 h+ }& r9 |6 y
Resonate 有一种基于软件的负载均衡方法,类似于 Linux 虚拟服务器。但是,它支持更多特性,以及一些更好的负载均衡算法。例如,使用 Resonate,可以在每个群集节点装入一个代理,以确定该节点当前的系统负载。然后,负载均衡服务器检查每个节点的代理,以确定哪个节点的负载最少,并且将新的流量发送给它。另外,Resonate 还可以使用它的 Global Dispatch 产品更有效地支持地区性分布式服务器。 - X H: x& K" z& z& ~: ~( O' l( Q0 z; W; S
Resonate 已经在 Red Hat Linux 上彻底测试了该软件,相信它也可以在其它发行版上运行。Resonate 的软件还可以在其它各种平台上运行,包括 Solaris、AIX、Windows NT,并且它还可以在混合环境中进行负载均衡。 ) M3 J4 S U; m1 [' } + t/ L5 x+ ^* l! ] kMOSIX% d$ L! Y# j# h& l2 F% a1 W
MOSIX 使用 Linux 内核新版本来实现进程负载均衡集群系统。该群集中,任何服务器或工作站可以按指定加入或离开,即添加到群集的总处理能力,或从中除去。根据其文档,MOSIX 使用自适应进程负载均衡和内存引导算法使整体性能最大化。应用程序进程可以在节点之间抢先迁移,以利用最好的资源,这类似于对称多处理器系统可以在各个处理器之间切换应用程序。% v- B2 ]- ^9 C" o9 L1 t
7 c9 E. Q$ P0 T7 F- ^. PMOSIX 在应用层是完全透明的,并且不需要重新编译或者重新链接到新的库,因为所有一切都发生在内核级上。可以有几种方法将它配置成多用户共享环境群集。所有服务器可以共享一个池,系统可以是群集的一部分,或者群集可以动态地分成几个子群集,每种方法都有不同的用途。Linux 工作站还可以是群集的一部分,可以是固定的,也可以是临时的,或者只是作为批处理作业提交者。作为临时群集节点,工作站可以在其空闲时用于增加群集处理能力。也允许只以批处理方式使用群集,在这种方式中,群集被配置成通过队列接受批处理作业。然后,守护程序取走作业并将它们发送到群集节点进行处理。 . M3 O0 ~/ a, I* O: @% H0 \( @ ]* u( n
MOSIX 的不利之处是它更改 Linux 内核行为的一些核心部分,于是系统级应用程序将不会按期望运行。/ d9 Z' N3 q( x$ F0 ?
- Z+ L" ]- D: z4 q. f
除了高性能科学计算,MOSIX 提供了一个有趣的选项,用于以共同设置创建集群环境。通过使用服务器和工作站上的闲置资源,它可以更快更有效地创建和运行应用程序。由于访问了多台服务器,并且可以动态调整群集大小和更改负载均衡规则,它还可以提供高度的服务器可用性。MOSIX 的不利之处是它更改 Linux 内核行为的一些核心部分,于是系统级应用程序将不会按期望运行。要使用网络应用程序时,而该程序使用基于单个服务器地址的套接字连接,MOSIX 通常也会受到限制。这意味着网络应用程序在一个服务器节点上开始运行时,如果 IP 地址与套接字绑定,那么它必须继续在该节点上运行。显然,MOSIX 还正在开始迁移套接字,因此这很快就变成了争论的焦点。3 h% }. N* J/ ?2 V( E
) h( x, [8 @- W9 d
高可用性群集 5 p1 C& F- X* _. R) S高可用性 (HA) 群集致力于使服务器系统的运行速度和响应速度尽可能快。它们经常使用在多台机器上运行的冗余节点和服务,用来相互跟踪。如果某个节点失败,它的替补将在几秒钟或更短时间内接管它的职责。因此,对于用户而言,群集永远不会停机。3 q$ {% G& m2 c) t7 {" c
* ]' ?! J) }( l& O某些 HA 群集也可以维护节点间冗余应用程序。因此,用户的应用程序将继续运行,即使他或她使用的节点出了故障。正在运行的应用程序会在几秒之内迁移到另一个节点,而所有用户只会察觉到响应稍微慢了一点。但是,这种应用程序级冗余要求将软件设计成具有群集意识的,并且知道节点失败时应该做什么。但对于 Linux,大多数现在还做不到。因为 Linux 系统没有 HA 集群标准,并且也没有公共 API 可供应用程序开发者构建有群集意识的软件。3 A1 y5 \9 m, T( c: U
3 i8 b/ D9 q X- ~/ i$ PHA 群集可以执行负载均衡,但通常主服务器运行作业,而系统使辅助服务器保持闲置。辅助服务器通常是主服务器操作系统设置的镜像,尽管硬件本身稍有不同。辅助节点对主服务器进行活动监控或心跳观察,以查看它是否仍在运行。如果心跳计时器没有接收到主服务器的响应,则辅助节点将接管网络和系统身份(如果是 Linux 系统,则是 IP 主机名和地址)。 + f; a) C: D& F! c' R$ A8 L4 s6 X7 n/ S% Q9 y0 Y; e; S8 X
但是,Linux 在这一领域仍有一点忽略。好消息是有一家著名的供应商正在努力尽快研制高可用性群集,因为它是企业级服务器都必需的功能。 & H7 }* T l, z! ~& J- V$ ? U) L0 y* Z% ?" J h% c& jLinux-HA 项目 ! ?* C. r% J1 E4 j! }高可用性 Linux 项目,根据其目标声明,旨在为 Linux 提供高可用性解决方案,以通过社区开发成果提高可靠性、可用性和服务能力。Linux 达到高可用性集群时,这是一种试图给予 Linux 与先进的 Unix 系统,如 Solaris、AIX 和 HP/UX,一样具有竞争力的特性。因此,项目的目标是在 2001 年之前达到 Unix 集群比较报告 (http://www.sun.com/clusters/dh.brown.pdf) 中分析专家组 D. H. Brown 特定功能性级别。 8 H# Z$ |* o1 I2 E ( f: Y% R/ ?) D" S9 _9 Q+ X项目中有可以维护节点间心跳并接管失败节点的 IP 地址的软件。如果一个节点失败,它使用“伪造冗余 IP”软件包将失败节点的地址添加到工作节点以承担它的职责。于是,可以在几毫秒时间内自动替换失败的节点。实际使用中,心跳通常在几秒范围内,除非在节点之间有专用网络链接。因此,失败系统中的用户应用程序仍需要在新的节点上重新启动。 G, L5 R# q A% J. ^' T$ B
7 c# ]' Q' q+ T无处不在的集群8 `+ A7 Q, ?4 N# r: l; Z0 V
对于 Linux,有许多集群系统可供选用。同时,那些项目中有几个是非商业性的,甚至是实验性质的。虽然对学术界和某些组织这也没有形成问题,但大公司通常首选著名供应商的商业支持平台。供应商,如 IBM、SGI、HP 和 Sun,提供了用于在 Linux 中构建科学群集的产品和服务,因为群集很流行,并且可以销售大量的服务器设备。一旦商业机构认为其它形式的集群是可靠的,那些相同的服务器供应商或许会围绕着开放源码集群解决方案创建自己的产品。 7 ~7 P7 s' Z7 a1 [% @4 x' J \( p7 G. E& T# K" u
Linux 作为服务器平台的重要性依赖于支持大型服务器和服务器群集的能力。这就使它可以与 Sun、HP、IBM 和其它公司的 UNIX 服务器在更高层面上竞争。虽然 Windows NT 和 2000 不支持 Linux 能够支持的集群范围,但是 HA 集群正规方法的可用性以及用于构建有群集意识的 API 也使它能够参与竞争。* Y% \" i: O/ L) c# d
/ N k4 I! p2 L如果正在考虑构建一个群集,那么您应当仔细检查那些可能性,并将它们与您的需求做比较。您也许会发现想要实现的目标还不能成为一个完整的解决方案,或许会发现已经有了现成的解决方案。不管是哪种情况,请相信许多现有公司将他们的应用程序托付给进行深度计算并提供大量网页的 Linux 系统群集。集群是一种企业系统服务,已经在 Linux 下成功测试过。尽管新的集群将出现,但选择的多样性正是 Linux 超过其它系统,如 Windows NT,的优势。) b% a1 g# B* [0 H! [