0 v8 J+ ` b. O) ?7 F1 q/ G1 t' kMOSIX 的不利之处是它更改 Linux 内核行为的一些核心部分,于是系统级应用程序将不会按期望运行。+ |3 S' E7 i0 B: W$ j
- g, n9 I! r! G. d/ `$ F除了高性能科学计算,MOSIX 提供了一个有趣的选项,用于以共同设置创建集群环境。通过使用服务器和工作站上的闲置资源,它可以更快更有效地创建和运行应用程序。由于访问了多台服务器,并且可以动态调整群集大小和更改负载均衡规则,它还可以提供高度的服务器可用性。MOSIX 的不利之处是它更改 Linux 内核行为的一些核心部分,于是系统级应用程序将不会按期望运行。要使用网络应用程序时,而该程序使用基于单个服务器地址的套接字连接,MOSIX 通常也会受到限制。这意味着网络应用程序在一个服务器节点上开始运行时,如果 IP 地址与套接字绑定,那么它必须继续在该节点上运行。显然,MOSIX 还正在开始迁移套接字,因此这很快就变成了争论的焦点。 5 A) r. s* j' f% R. A, y $ a: k$ A- m4 M" \0 a+ K; P高可用性群集( v7 h, c# g- ~: J* L. m
高可用性 (HA) 群集致力于使服务器系统的运行速度和响应速度尽可能快。它们经常使用在多台机器上运行的冗余节点和服务,用来相互跟踪。如果某个节点失败,它的替补将在几秒钟或更短时间内接管它的职责。因此,对于用户而言,群集永远不会停机。! E. i) t5 c4 P) ?
, v7 u$ M+ G2 r# w T
某些 HA 群集也可以维护节点间冗余应用程序。因此,用户的应用程序将继续运行,即使他或她使用的节点出了故障。正在运行的应用程序会在几秒之内迁移到另一个节点,而所有用户只会察觉到响应稍微慢了一点。但是,这种应用程序级冗余要求将软件设计成具有群集意识的,并且知道节点失败时应该做什么。但对于 Linux,大多数现在还做不到。因为 Linux 系统没有 HA 集群标准,并且也没有公共 API 可供应用程序开发者构建有群集意识的软件。1 o# }7 Q) F, ?8 [
9 `( Y4 r! y n5 O3 }$ \HA 群集可以执行负载均衡,但通常主服务器运行作业,而系统使辅助服务器保持闲置。辅助服务器通常是主服务器操作系统设置的镜像,尽管硬件本身稍有不同。辅助节点对主服务器进行活动监控或心跳观察,以查看它是否仍在运行。如果心跳计时器没有接收到主服务器的响应,则辅助节点将接管网络和系统身份(如果是 Linux 系统,则是 IP 主机名和地址)。 " Z) t6 r0 |$ M& X# n! w+ p9 g) m$ q) z
但是,Linux 在这一领域仍有一点忽略。好消息是有一家著名的供应商正在努力尽快研制高可用性群集,因为它是企业级服务器都必需的功能。 / M; y$ t( ^* n8 e* R% g! v 0 E- l3 I( ]+ Y v: q" KLinux-HA 项目 & o2 g" H% u2 g+ M+ {+ C6 e高可用性 Linux 项目,根据其目标声明,旨在为 Linux 提供高可用性解决方案,以通过社区开发成果提高可靠性、可用性和服务能力。Linux 达到高可用性集群时,这是一种试图给予 Linux 与先进的 Unix 系统,如 Solaris、AIX 和 HP/UX,一样具有竞争力的特性。因此,项目的目标是在 2001 年之前达到 Unix 集群比较报告 (http://www.sun.com/clusters/dh.brown.pdf) 中分析专家组 D. H. Brown 特定功能性级别。 3 U: z$ w. r8 n* W 4 n) ]' h4 m, A2 @项目中有可以维护节点间心跳并接管失败节点的 IP 地址的软件。如果一个节点失败,它使用“伪造冗余 IP”软件包将失败节点的地址添加到工作节点以承担它的职责。于是,可以在几毫秒时间内自动替换失败的节点。实际使用中,心跳通常在几秒范围内,除非在节点之间有专用网络链接。因此,失败系统中的用户应用程序仍需要在新的节点上重新启动。 / X/ e3 t# O' n1 R8 L 5 {: d X# l) |8 j3 ]无处不在的集群" j: u0 [+ I/ d. |4 J9 c
对于 Linux,有许多集群系统可供选用。同时,那些项目中有几个是非商业性的,甚至是实验性质的。虽然对学术界和某些组织这也没有形成问题,但大公司通常首选著名供应商的商业支持平台。供应商,如 IBM、SGI、HP 和 Sun,提供了用于在 Linux 中构建科学群集的产品和服务,因为群集很流行,并且可以销售大量的服务器设备。一旦商业机构认为其它形式的集群是可靠的,那些相同的服务器供应商或许会围绕着开放源码集群解决方案创建自己的产品。 9 U. M. `" ?3 G, [# I2 K3 S4 g' u7 q0 R
Linux 作为服务器平台的重要性依赖于支持大型服务器和服务器群集的能力。这就使它可以与 Sun、HP、IBM 和其它公司的 UNIX 服务器在更高层面上竞争。虽然 Windows NT 和 2000 不支持 Linux 能够支持的集群范围,但是 HA 集群正规方法的可用性以及用于构建有群集意识的 API 也使它能够参与竞争。 $ m4 v- f, a; E5 o* k# D 7 f% N9 J: q- o+ H/ ^如果正在考虑构建一个群集,那么您应当仔细检查那些可能性,并将它们与您的需求做比较。您也许会发现想要实现的目标还不能成为一个完整的解决方案,或许会发现已经有了现成的解决方案。不管是哪种情况,请相信许多现有公司将他们的应用程序托付给进行深度计算并提供大量网页的 Linux 系统群集。集群是一种企业系统服务,已经在 Linux 下成功测试过。尽管新的集群将出现,但选择的多样性正是 Linux 超过其它系统,如 Windows NT,的优势。 % a' a3 o6 r1 d/ g9 v4 z. y/ E' f6 u# E& p- {1 d% l! U
关于作者 4 b# `( d8 @( ~ G& @. zRawn Shah 是居住在亚利桑那州图森市的一位独立顾问。他多年来与多平台问题打交道并撰写相关文章,但常常令他不解的是很少有人知道有用的系统工具。