5 O# S1 s. \& T! m$ F$ I负载均衡群集8 x+ f, I% N. t# w, i$ J9 V5 N
负载均衡群集在多节点之间分发网络或计算处理负载。在这种情况下,区别在于缺少跨节点运行的单并行程序。大多数情况下,那种群集中的每个节点都是运行单独软件的独立系统。但是,不管是在节点之间进行直接通信,还是通过中央负载均衡服务器来控制每个节点的负载,在节点之间都有一种公共关系。通常,使用特定的算法来分发该负载。6 |: m' z" y5 g7 T( W, \
8 n' r* a- n& a5 T网络流量负载均衡是一个过程,它检查到某个群集的入网流量,然后将流量分发到各个节点以进行适当处理。它最适合大型网络应用程序,如 Web 或 FTP 服务器。负载均衡网络应用服务要求群集软件检查每个节点的当前负载,并确定哪些节点可以接受新的作业。这最适合运行如数据分析等串行和批处理作业。那些系统还可以配置成关注某特定节点的硬件或操作系统功能:这样,群集中的节点就没有必要是一致的。+ r% Z4 J1 h. q. J
. Z4 e" U) p* R) y+ |7 @- c
Linux 虚拟服务器6 t, R6 v+ b R. C
“Linux 虚拟服务器”项目已经实现了许多内核补丁,它们为入网 TCP/IP 流量创建了负载均衡系统。LVS 软件检查入网流量,然后根据负载均衡算法,将流量重定向到一组充当群集的服务器。这允许网络应用程序,如 Web 服务器,在节点群集上运行以支持大量用户。& k" j# A. ?0 ]2 _0 l
3 H0 l1 i' m, g3 z0 E8 X }1 b: hLVS 支持作为负载均衡服务器直接连接到同一个 LAN 的群集节点,但它还能够以通道传送 IP 包的方式连接到远程服务器。后一种方法包括压缩 IP 包中的均衡请求,这些 IP 信息包从负载均衡服务器直接发送到远程群集节点。尽管 LVS 可以远程支持网站的负载均衡,但它使用的负载均衡算法现在对于虚拟群集中的广域 Web 服务器仍无效。因此,如果 Web 服务器都在同一个 LAN 中,LVS 最好当作负载均衡服务器使用。 ; e# o/ A4 {2 @, u% g+ Q1 r 6 p6 c) U2 O& {' R, r7 G1 a负载均衡系统的几种硬件实现比在通用操作系统,如 Linux,上运行得更快。它们包括来自 Alteon 和 Foundry 的硬件,其硬件逻辑和最少操作系统可以在硬件中执行流量管理,并且速度比纯软件快。它们的价格也很高,通常都在 $10,000 以上。如果需要简单和便宜的解决方案,一个有很多内存 (256 MB) 的中等 Linux 系统将会是一个好的负载均衡系统。 4 R- I3 n0 O/ e+ ?" N+ Z7 t" Q: ?& {0 X3 @4 q, }5 D0 e
TurboLinux TurboCluster 和 enFuzion ' O3 B) m! X3 ~- @2 g* n1 rTurboLinux 有一个产品叫 TurboCluster,它最初以“Linux 虚拟服务器”项目开发的内核补丁为基础。因此,它可以得到大部分优点,但它的缺点也与原来的项目一样。TurboLinux 为此还开发了一些工具,用于监控增加产品实用性的群集行为。一家主要供应商的商业支持也使它对于大型网站更具吸引力。 ) [ g5 c p! ^; r" N) e9 f$ U6 B3 N& c( w
EnFuzion 支持在节点之间实现自动负载均衡和资源共享,而且可以自动重新安排失败的作业。/ T' }! o5 e) }- `7 x. m
5 W. k( r- x3 _& w( u
EnFuzion 是 TurboLinux 即将推出的科学群集产品,它并不基于 Beowulf。但是,它可以支持上百个节点以及许多不同的非 Linux 平台,包括 Solaris、Windows NT、HP-UX、IBM AIX、SGI Irix 和 Tru64。EnFuzion 非常有趣,因为它运行所有现有软件,并且不需要为环境编写定制的并行应用程序。它支持在节点间实现自动负载均衡和资源共享,而且可以自动重新安排失败的作业。 4 w& @& x& E) }5 c$ {) d5 b , k: E, M: M/ T; s7 vPlatform Computing 的 LSF 批处理 W5 R0 S$ l) j* `
Platform Computing 是群集计算领域的老手,现在提供了 Linux 平台上的“负载均衡设施 (LSF) 批处理”软件。LSF 批处理允许中央控制器安排作业在群集中任意数量的节点上运行。在概念上,它类似于 TurboLinux enFuzion 软件,并且支持在节点上运行任何类型的应用程序。 ; x$ s J. C& ?+ x2 a# k4 S* j $ A {, G1 I2 M这种方法对于群集大小是非常灵活的,因为可以明确选择节点的数量,甚至是运行应用程序的节点。于是,可以将 64 个节点的群集分成更小的逻辑群集,每个逻辑群集都运行自己的批处理应用程序。而且,如果应用程序或节点失败,它可以在其它服务器上重新安排作业。 - z, M) @ i5 j/ z* U; |$ F; j; j2 E! {3 K, o6 A# k1 u) ^( R
Platform 的产品在主要 Unix 系统和 Windows NT 上运行。目前,只有它们的 LSF 批处理产品已经移植到 Linux 上。最终,LSF Suite 组件的其余部分也将紧随其后移植到 Linux 上。0 R$ P( B# S: V. M
& @; r% v) t' ^ s3 QResonate Dispatch 系列 f& K1 Q6 z, Q i" J8 g. V
Resonate 有一种基于软件的负载均衡方法,类似于 Linux 虚拟服务器。但是,它支持更多特性,以及一些更好的负载均衡算法。例如,使用 Resonate,可以在每个群集节点装入一个代理,以确定该节点当前的系统负载。然后,负载均衡服务器检查每个节点的代理,以确定哪个节点的负载最少,并且将新的流量发送给它。另外,Resonate 还可以使用它的 Global Dispatch 产品更有效地支持地区性分布式服务器。 & M5 \% h9 @1 m- Y) @ ; t; {$ e4 R7 b& q) ~. |3 jResonate 已经在 Red Hat Linux 上彻底测试了该软件,相信它也可以在其它发行版上运行。Resonate 的软件还可以在其它各种平台上运行,包括 Solaris、AIX、Windows NT,并且它还可以在混合环境中进行负载均衡。' d# l! F: c, b0 L s
, ?/ n- ]5 D. @: \8 f% e
MOSIX* R* M: P% j9 Q+ \ x+ t% _
MOSIX 使用 Linux 内核新版本来实现进程负载均衡集群系统。该群集中,任何服务器或工作站可以按指定加入或离开,即添加到群集的总处理能力,或从中除去。根据其文档,MOSIX 使用自适应进程负载均衡和内存引导算法使整体性能最大化。应用程序进程可以在节点之间抢先迁移,以利用最好的资源,这类似于对称多处理器系统可以在各个处理器之间切换应用程序。 : e% K2 h$ \3 h Q% `3 B* p6 j 6 a! {2 Z8 f2 E, X% i& mMOSIX 在应用层是完全透明的,并且不需要重新编译或者重新链接到新的库,因为所有一切都发生在内核级上。可以有几种方法将它配置成多用户共享环境群集。所有服务器可以共享一个池,系统可以是群集的一部分,或者群集可以动态地分成几个子群集,每种方法都有不同的用途。Linux 工作站还可以是群集的一部分,可以是固定的,也可以是临时的,或者只是作为批处理作业提交者。作为临时群集节点,工作站可以在其空闲时用于增加群集处理能力。也允许只以批处理方式使用群集,在这种方式中,群集被配置成通过队列接受批处理作业。然后,守护程序取走作业并将它们发送到群集节点进行处理。 1 o7 Y* K4 e% C' { E % I' a1 O% P5 Y+ V" [- lMOSIX 的不利之处是它更改 Linux 内核行为的一些核心部分,于是系统级应用程序将不会按期望运行。) f8 F0 H$ ?9 G3 M; X) Q2 r9 L
! Z1 @6 X2 X# [: ~ j5 }1 Z9 S4 f8 I0 k
除了高性能科学计算,MOSIX 提供了一个有趣的选项,用于以共同设置创建集群环境。通过使用服务器和工作站上的闲置资源,它可以更快更有效地创建和运行应用程序。由于访问了多台服务器,并且可以动态调整群集大小和更改负载均衡规则,它还可以提供高度的服务器可用性。MOSIX 的不利之处是它更改 Linux 内核行为的一些核心部分,于是系统级应用程序将不会按期望运行。要使用网络应用程序时,而该程序使用基于单个服务器地址的套接字连接,MOSIX 通常也会受到限制。这意味着网络应用程序在一个服务器节点上开始运行时,如果 IP 地址与套接字绑定,那么它必须继续在该节点上运行。显然,MOSIX 还正在开始迁移套接字,因此这很快就变成了争论的焦点。4 R! A* J7 ~: D2 D3 S' k9 @