Rawn Shah 作为专家,在 Linux 现有的开放源码和封闭源码集群解决方案方面为您指点迷津。
计算 Linux 中集群项目的数量就象计算硅谷中创业公司的数量一样。不象 Windows NT 已经受其自身的封闭环境阻碍,Linux 有大量的集群系统可供选择,适合于不同的用途和需要。但确定应该使用哪一个集群的工作却没有因此变得简单。
问题的部分原因在于术语集群用于不同场合。IT 经理可能关心如何使服务器运行时间更长,或使应用程序运行得更快,而数学家可能更关心在服务器上进行大规模数值计算。两者都需要群集,但是各自需要不同特性的群集。
本文调查了不同形式的集群以及许多实现中的一部分,这些实现可以买到,也可以免费软件形式获得。尽管列出的所有解决方案并不都是开放源码,但是大多数软件都遵循分发 Linux 源码的公共惯例,特别是由于那些实现集群的人还常常希望调整系统性能,以满足需要。
硬件
集群总是涉及到机器之间的硬件连接。在现今大多数情况下,这只是指“快速以太网”网卡和集线器。但在尖端科学领域中,有许多专为集群设计的网络接口卡。
它们包括 Myricom 的 Myrinet、Giganet 的 cLAN 和 IEEE 1596 标准可伸缩一致接口 (SCI)。那些卡的功能不但在群集的节点之间提供高带宽,而且还减少延迟(发送消息所用的时间)。对于在节点间交换状态信息以使其操作保持同步情况,那些延迟是至关重要的。
Myricom
Myricom 提供网卡和交换机,其单向互连速度最高可达到 1.28 Gbps。网卡有两种形式,铜线型和光纤型。铜线型 LAN 可以在 10 英尺距离内以全速进行通信,而在长达 60 英尺距离内以半速进行操作。光纤型 Myrinet 可以在 6.25 英里长的单模光纤或者 340 英尺长的多模光纤上全速运行。Myrinet 只提供直接点到点、基于集线器或基于交换机的网络配置,但在可以连接到一起的交换光纤数量方面没有限制。添加交换光纤只会增加节点间的延迟。两个直接连接的节点之间的平均延迟是 5 到 18 微秒,比以太网快得多。
集群类型
最常见的三种群集类型包括高性能科学群集、负载均衡群集和高可用性群集。
科学群集
通常,第一种涉及为群集开发并行编程应用程序,以解决复杂的科学问题。这是并行计算的基础,尽管它不使用专门的并行超级计算机,这种超级计算机内部由十至上万个独立处理器组成。但它却使用商业系统,如通过高速连接来链接的一组单处理器或双处理器 PC,并且在公共消息传递层上进行通信以运行并行应用程序。因此,您会常常听说又有一种便宜的 Linux 超级计算机问世了。但它实际是一个计算机群集,其处理能力与真的超级计算机相等,通常一套象样的群集配置开销要超过 $100,000。这对一般人来说似乎是太贵了,但与价值上百万美元的专用超级计算机相比还算是便宜的。
负载均衡群集
负载均衡群集为企业需求提供了更实用的系统。如名称所暗示的,该系统使负载可以在计算机群集中尽可能平均地分摊处理。该负载可能是需要均衡的应用程序处理负载或网络流量负载。这样的系统非常适合于运行同一组应用程序的大量用户。每个节点都可以处理一部分负载,并且可以在节点之间动态分配负载,以实现平衡。对于网络流量也是如此。通常,网络服务器应用程序接受了太多入网流量,以致无法迅速处理,这就需要将流量发送给在其它节点上运行的网络服务器应用。还可以根据每个节点上不同的可用资源或网络的特殊环境来进行优化。
高可用性群集
高可用性群集的出现是为了使群集的整体服务尽可能可用,以便考虑计算硬件和软件的易错性。如果高可用性群集中的主节点发生了故障,那么这段时间内将由次节点代替它。次节点通常是主节点的镜像,所以当它代替主节点时,它可以完全接管其身份,并且因此使系统环境对于用户是一致的。
在群集的这三种基本类型之间,经常会发生混合与交杂。于是,可以发现高可用性群集也可以在其节点之间均衡用户负载,同时仍试图维持高可用性程度。同样,可以从要编入应用程序的群集中找到一个并行群集,它可以在节点之间执行负载均衡。尽管集群系统本身独立于它在使用的软件或硬件,但要有效运行系统时,硬件连接将起关键作用。
Giganet
Giganet 是用于 Linux 平台的虚拟接口 (VI) 体系结构卡的第一家供应商,提供 cLAN 卡和交换机。VI 体系结构是独立于平台的软件和硬件系统,它由 Intel 开发,用于创建群集。它使用自己的网络通信协议在服务器之间直接交换数据,而不是使用 IP,并且它并不打算成为 WAN 可路由的系统。现在,VI 的未来取决于正在进行的“系统 I/O 组”的工作,这个小组本是 Intel 领导的“下一代 I/O”小组与 IBM 和 Compaq 领导的“未来 I/O 小组”的合并。Giganet 产品当前可以在节点之间提供 1 Gbps 单向通信,最小延迟为 7 微秒。
IEEE SCI
IEEE 标准 SCI 的延迟更少(低于 2.5 微秒),并且其单向速度可达到 400 MB/秒 (3.2 Gbps)。SCI 是基于环拓扑的网络系统,不像以太网是星形拓扑。这将使在较大规模的节点之间通信速度更快。更有用的是环面拓扑网络,它在节点之间有许多环形结构。两维环面可以用 n 乘 m 的网格表示,其中在每一行和每一列都有一个环形网络。三维环面也类似,可以用三维立体节点网格表示,每一层上有一个环形网络。密集超级计算并行系统使用环面拓扑网络,为成百上千个节点之间的通信提供相对最快的路径。
大多数操作系统的限制因素不是操作系统或网络接口,而是服务器的内部 PCI 总线系统。几乎所有台式 PC 通常有基本 32-位,33-MHz PCI,并且大多数低端服务器只提供 133 MB/秒 (1 Gbps),这限制了那些网卡的能力。一些昂贵的高端服务器,如 Compaq Proliant 6500 和 IBM Netfinity 7000 系列,都有 64-位, 66-MHz 网卡,它们能够以四倍速度运行。不幸地是,矛盾是更多公司使用低端的系统,因此大多数供应商最终生产和销售更多低端 PCI 网卡。也有专门的 64-位,66-MHz PCI 网卡,但价格要贵许多。例如,Intel 提供了这种类型的“快速以太网”网卡,价格约 $400 到 $500,几乎是普通 PCI 版本价格的 5 倍。
科学群集
某些并行群集系统可以达到如此高的带宽和低延迟,其原因是它们通常绕过使用网络协议,如 TCP/IP。虽然网际协议对于广域网很重要,但它包含了太多的开销,而这些开销在节点相互已知的封闭网络群集中是不必要的。其实,那些系统中有一部分可以在节点之间使用直接内存访问 (DMA),它类似于图形卡和其它外围设备在一台机器中的工作方式。因此横跨群集,可以通过任何节点上的任何处理器直接访问一种形式的分布式共享内存。它们也可以使用低开销的消息传递系统,在节点之间进行通信。
消息传递接口 (MPI) 是并行群集系统间消息传递层的最常见实现。MPI 存在几种衍生版本,但在所有情况下,它为开发者访问并行应用程序提供了一个公共 API,这样开发者就不必手工解决如何在群集的节点之间分发代码段。其中一个,Beowulf 系统首先将 MPI 用作公共编程接口。
很难决定使用哪种高性能集群包。许多都提供类似服务,但计算的具体要求才是决定性因素。很多情况下,在那些系统中的研究工作只是解决需求的一半,而且使用那些软件需要集群包开发者的特殊帮助和合作。
Beowulf
当谈到 Linux 集群时,许多人的第一反映是 Beowulf。那是最著名的 Linux 科学软件集群系统。没有一个包叫做 Beowulf。实际上,它是一个术语,适用于在 Linux 内核上运行的一组公共软件工具。其中包括流行的软件消息传递 API,如“消息传送接口”(MPI) 或“并行虚拟机”(PVM),对 Linux 内核的修改,以允许结合几个以太网接口、高性能网络驱动器,对虚拟内存管理器的更改,以及分布式进程间通信 (DIPC) 服务。公共全局进程标识空间允许使用 DIPC 机制从任何节点访问任何进程。Beowulf 还在节点间支持一系列硬件连通性选件。
Beowulf 可能是考虑 Linux 时注意到的第一个高性能集群系统,这只是因为它的广泛使用和支持。关于这个主题,有许多文档和书籍。Beowulf 与以下一些科学集群系统之间的差异可以是实际的,或者只是在产品名称中有差异。例如,尽管名称不同,Alta Technologies 的 AltaCluster 就是一个 Beowulf 系统。某些供应商,如 ParTec AG,一家德国公司,提供了 Beowulf 模型的衍生版本,以包括其它管理接口和通信协议。
Giganet cLAN
Giganet 提供了一种定制的基于硬件的解决方案,它使用非 IP 协议在一个科学群集的节点间进行通信。如前所述,“虚拟接口”协议通过除去不少协议的开销,如 IP,以支持服务器间更快的通信。另外,硬件系统可按千兆比特速度运行,并且延迟很短,使它非常适合构建最多达 256 个节点的科学群集。该供应商支持 MPI,这样许多并行应用程序就可以在类似的系统(如 Beowulf)上运行。
它也有 Beowulf 的缺点,即不能用作网络负载共享系统,除非想要编写应用程序来监控和分发在服务器间传送的网络包。
Legion
Legion 试图构建一个真正的多计算机系统。这是一个群集,其中每个节点都是一个独立系统,但在用户看来,整个系统只是一台计算机。Legion 设计成支持一台世界范围的计算机,由上百万个主机以及数以万亿计的软件对象组成。在 Legion 中,用户可以创立他们自己的合作小组。
Legion 提供了高性能并行、负载均衡、分布式数据管理和容错性。
Legion 提供了高性能并行、负载均衡、分布式数据管理和容错性。它通过其容错管理和成员节点间的动态重新配置来支持高可用性。它还有一个可扩充核心,该核心可以在出现新的改进和进展时动态替换或升级。系