第一台计算机问世已经半个世纪了,在这期间计算机技术经历了五次更新换代。更新换代的标志主要有两个:一个是计算机的器件,另一个是系统体系结构。从第一代到第五代计算机,器件发生了根本的变化:从电子管、晶体管发展到集成电路,而集成电路又经小规模、中规模、大规模、非常大规模等阶段发展到超大规模阶段。系统体系结构的不断改进,许多重要的概念的不断提出并且得到实现,推动计算机技术向更高的层次发展。从早期的变址寄存器、通用寄存器、程序中断和I/O通道等概念,到 虚拟存储 器、Cache存储器、微程序设计、系列机、基于总线的多CPU系统、向量处理机等概念,发展到64位RISC处理器、基于MPP、NUMA、集群等体系结构的可伸缩并行处理系统,计算机系统技术也取得了突飞猛进的发展.
随着计算机系统技术的突飞猛进, 高性能计算所采用的硬件设备也越来越先进, 经历了从向量计算机到并行计算机再到集群系统的过度, 当前, 集群系统在高性能计算领域越来越得到广泛的应用.
对集群的研究起源于集群系统的良好的性能可扩展性(scalability)。提高CPU主频和总线带宽是最初提供计算机性能的主要手段。但是这一手段对系统性能的提供是有限的。接着人们通过增加CPU个数和内存容量来提高性能,于是出现了向量机,对称多处理机(SMP)等。但是当CPU的个数超过某一阈值,象SMP这些多处理机系统的可扩展性就变的极差。主要瓶颈在于CPU访问内存的带宽并不能随着CPU个数的增加而有效增长。与SMP相反,集群系统的性能随着CPU个数的增加几乎是线性变化的。
集群集群技术可如下定义:一组相互独立的服务器在网络 中表现为单一的系统,并以单一系统的模式加以管理。 此单一系统为客户工作站提供高可靠性的服务。大多数模式下,集群中所有的计算机拥有一个共同的名称,集群内任一系统上运行的服务可被所有的网络客户所使用。集群必须可以协调管理各分离的组件的错误和失败,并可透明地向集群中加入组件。一个集群包含多台( 至少二台) 拥有共享数据存储 空间的服务器。任何一台服务器运行一个应用时,应用数据被存储在共享的数据空间内。 每台服务器的操作系统和应用程序文件存储在其各自的本地储存空间上。集群内各节点服务器通过一内部局域网相互通讯。当一台节点服务器发生故障时,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管。当一个应用服务发生故障时,应用服务将被重新启动或被另一台服务器接管。 当以上任一故障发生时,客户将能很快连接到新的应用服务上
简单的说,集群就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(node)。一个理想的集群是,用户从来不会意识到集群系统底层的节点,在他/她们看来,集群是一个系统,而非多个计算机系统。并且集群系统的管理员可以随意增加和删改集群系统的节点。
集群可以划分为三方面:High-Availability(HA)(高可用性集群)、Load Balance(负载 均衡 集群)、Height Performance Computation(HPC)(高性能计算集群),严格来说,这些分类存在着一些交叉, 有一些文章将负载均衡集群划分到高可用性集群内,本文将集群划分为高性能计算集群和高可用性集群。
简单的说,高性能计算(High-Performance Computing)是计算机科学的一个分支,它致力于开发超级计算机,研究并行算法和开发相关软件。 高性能计算主要研究如下两类问题:
1. 大规模科学问题,象天气预报、地形分析和生物制药等;
2. 存储 和处理海量数据,象数据挖掘、图象处理和基因测序;
高性能计算集群主要为高性能计算的需求而设计, 从并行任务间的关系角度来看可以分成以下几类
1.高吞吐计算(High-throughput Computing)
这类高性能计算,可以把它分成若干可以并行的子任务,而且各个子任务彼此间没有什么关联。象在家搜寻外星人(SETI@HOME -- Search for Extraterrestrial Intelligence at Home)就是这一类型应用。这一项目是利用Internet上的闲置的计算资源来搜寻外星人。SETI项目的服务器将一组数据和数据模式发给Internet上参加SETI的计算节点,计算节点在给定的数据上用给定的模式进行搜索,然后将搜索的结果发给服务器。服务器负责将从各个计算节点返回的数据汇集成完整的数据。因为这种类型应用的一个共同特征是在海量数据上搜索某些模式,所以把这类计算称为高吞吐计算。所谓的Internet计算都属于这一类。按照Flynn的分类,高吞吐计算属于SIMD(Single Instruction/Multiple Data)的范畴。
2.分布计算(Distributed Computing)
另一类计算刚好和高吞吐计算相反,它们虽然可以给分成若干并行的子任务,但是子任务间联系很紧密,需要大量的数据交换 。按照Flynn的分类,分布式的高性能计算属于MIMD(Multiple Instruction/Multiple Data)的范畴。
3. 高性能计算集群.
高性能集群通过将多台机器连接起来同时处理复杂的计算问题。模拟星球附近的磁场、预测龙卷风的出现、定位石油资源的储藏地等情况都需要对大量的数据进行处理。传统的处理方法是使用超级计算机来完成计算工作,但是超级计算机的价格比较昂贵,而且可用性和可扩展性不够强,因此集群成为了高性能计算 领域瞩目的焦点。
高性能计算 集群 ,英文原文为High Performance Computing Cluster,简称HPC Cluster,是指以提高科学计算能力为目的计算机集群技术。HPC Cluster是一种并行计算集群的实现方法。并行计算是指将一个应用程序分割成多块可以并行执行的部分并指定到多个处理器上执行的方法。目前的很多计算机系统可以支持SMP(对称多处理器)架构并通过进程调度机制进行并行处理,但是SMP技术的可扩展性是十分有限的,比如在目前的Intel架构上最多只可以扩展到8颗CPU。为了满足哪些"计算能力饥渴"的科学计算任务,并行计算集群的方法被引入到计算机界。著名的"深蓝"计算机就是并行计算集群的一种实现。
由于在某些廉价而通用的计算平台(如Intel+Linux)上运行并行计算集群可以提供极佳的性能价格比,所以近年来这种解决方案 越来越受到用户的青睐。 比如壳牌石油(Shell )所使用的由IBM xSeries 服务器 组成的1024 节点的Linux HPC Cluster 是目前世界上计算能力最强的计算机之一。
高性能计算 集群 向用户提供一个单一计算机的界面。前置计算机负责与用户交互,并在接受用户提交的计算任务后通过调度器程序将任务分配给各个计算节点执行;运行结束后通过前置计算机将结果返回给用户。程序运行过程中的进程间通信(IPC )通过专用网络 进行。
高性能计算 集群 中使用的服务器通常可以分为用户节点、管理 节点、存贮节点和计算节点四种。它们的角色分别是:
用户节点:
提供用户界面的计算机。它从用户那里接受任务,运行调度器(在本地或独立的"控制节点"上)将任务分派到其它计算机,并将运算结果返回给用户。
管理节点:
提供管理功能的计算机。它应该能够使管理员从这一计算机对集群中的任意一台计算机进行监视和操作,并处理集群中所有计算机的日志和报警信息。
存贮节点:
提供存贮共享的计算机。为了使任务可以并行执行,每台执行任务的计算机必须能够访问同样的数据。存贮节点通过网络共享(NFS)或其它方式来确保数据访问的同步。
计算节点:
真正执行计算任务的计算机。集群中的大部分计算机都是这种类型。一个HPC Cluster中通常同时使用三个网络,它们分别是IPC网络,管理网络和存贮访问网络。根据具体的使用需求和选择的节点特性,这些网络可以使用多种介质和协议。
IPC网络:
用于并行任务执行时的进程间通信的专用网络,通常要求延迟小,带宽大。
管理网络:
用来收集集群信息、监视集群计算机和执行维护任务的网络。
存贮访问网络:
用来访问公用存贮的专用网络。
下面主要介绍当前应用较多的Linux集群系统
1.Beowulf集群历史
在1994年夏季,Thomas Sterling和Don Becker在CESDIS(The Center of Excellence in Space Data and Information Sciences)用16个节点和以太网 组成了一个计算机集群系统,并将这个系统命名为Beowulf。Beowulf集群。Beowulf集群提供了一种使用COTS(Commodity off the shelf)硬件构造集群系统以满足特殊的计算需求的方法。这里的COTS是指象PC和以太网这种广为应用的标准设备,它们通常可以由多家厂商提供,所以通常有很高的性价比。Beowulf集群这种方法很快从NASA传遍了整个科研机构和社团。实际上,Beowulf集群现在已被人们看作高性能计算 中的一个分支或流派。
因为几乎每个Beowulf集群的设计者都有自己的Beowulf集群的定义,恐怕很难给Beowulf集群下一个确切的定义。一些人认为只有那些采用和原始的Beowulf集群系统一样方法构建的系统才叫Beowulf集群。而另一些人则认为凡是能够在多个工作站上运行并行代码的系统都称为Beowulf集群。这里我们只是列举多数Beowulf集群具有的特征作为Beowulf集群的定义:
Beowulf是一种系统结构,它使得多个计算机组成的系统能够用于并行计算。Beowulf系统通常有一个管理 节点和多个计算节点构成。它们通过以太网(或其他网络)连接。管理节点监控计算节点,通常也是计算节点的网关和控制终端。当然它通常也是集群系统文件服务器。在大型的集群系统中,由于特殊的需求,这些管理节点的功能也可能由多个节点分摊。
Beowulf系统通常由最常见的硬件设备组成,例如,PC、以太网卡和以太网交换 机。Beowulf系统很少包含用户定制的特殊设备。
Beowulf系统通常采用那些廉价且广为传播的软件,例如,Linux 操作系统、并行虚拟机(PVM)和消息传递接口(MPI)。
2 .Beowulf集群的分类
由于一些特殊的目的如系统性能,有些Beowulf集群系统也采用一些用户定制的设备(它们通常由一家厂商提供)。为了区分这些特殊的系统,通常把Beowulf分为两大类:
l 第一类Beowulf集群(CLASS I Beowulf)
这一类Beowulf集群全部由COTS设备组成。第一类Beowulf系统的优点是:硬件设备由多个来源,通常具有廉价和易管理维护的特点。不依赖于单个硬件供应商,所有设备驱动都由Linux开发社团提供,通常都是标准设备,例如,SCSI、以太网等等
当然第一类Beowulf集群的缺点也是非常显然的。由于所采用的硬件都没有经过性能优化,所以其很难达到很好的性能。比如,由于以太网的高延迟和低带宽使得集群系统中消息传递很难达到MIMD应用的需求,从而使整个集群系统的计算能力大打折扣。
l 第二类Beowulf集群(CLASS II Beowulf)
第二类Beowulf集群是指那些采用了用户定制设备的Beowulf集群。这类集群系统最大优点是具有很好的性能。例如,采用Myrinet作为集群系统的IPC网络可以极大地提供进程间消息传递延迟和速度。它的缺点就是依赖于单个硬件提供商而且价格高昂。
3.Beowulf 集群硬件和网络
Beowulf 集群硬件和网络层次需要解决的问题是如何组织硬件使其达到最高的性价比。为了达到很好的性价比,Beowulf通常采用廉价的COTS硬件。当然有时为了提供某些关键的性能,也会使用一些特殊的设备。
从硬件组织的角度说,Beowulf集群中的节点都是非共享内存的计算机,它们通过消息传递进行通信。实际上,我们还有其他组织硬件完成并行计算的方式。
简单地说,有两种组织硬件完成并行计算的方法:
(1)通过消息传递通信的本地内存(非共享内存)计算机系统 (Beowulf集群)
(2)通过内存访问通信的共享内存计算机系统 (SMP计算机)
当然也存在将多个本地或共享内存计算机相连并创造一个混和的共享内存计算机系统的可能。但在最终用户看来,这种计算机系统就好像一个大型的共享内存计算机。这种技术被我们叫做非一致内存访问NUMA(Non Uniform. Memory Access)。但是从底层说,一个NUMA计算机系统必须在节点间传递消息。
当然也可以将共享内存计算机作为一个本地内存的计算机连入一个Beowulf集群系统。由于Linux系统 支持SMP计算机,所以Linux系统本身能够在SMP中的多个CPU上调度作业。所以Beowulf集群本身就没有必要识别集群的节点是不是共享内存计算机了。
因为Beowulf集群采用消息传递完成并行程序间通信,所以网络传输成了系统的瓶颈。在实际的系统中,通常采用有两套彼此的独立的网络设备 。一套是普通的以太网,用于象系统管理和文件服务等普通的网络通信。另一套网络是用于进程间通信的高速网,象Myrinet和Giganet。和100M以太网相比,这类网络具有低延迟和高带宽的特性。
还有三类设备虽然不是必须,但是对于集群管理却是非常重要的:
KVM Swither:KVM是指Keyboard、Video和Mouse。这个设备可以让系统管理员 用一套KVM管理系统中的所有节点。
远程电源管理设备(如ASM):这类设备使得管理员可以在管理节点Power on/off其他节点。
Terminal Server:这种设备通过串口将节点连接起来。通过这个设备,管理员可以在管理节点上虚拟出其他节点上的控制终端。和KVM相比,这种方法不需要硬件的切换。
Beowulf集群在软件层次面临的问题是如何在硬件层次上获得最大的性能。通常,Beowulf集群采用Linux+MPI的方式支持并行计算。MPI是采用消息传递的方式实现并行程序间通信。虽然也可以采用其他的通信方法,但是消息传递模式是最适合于集群系统的。简单地说,有两种在并行程序间传递并发的方法:
使用处理器间的消息传递(MPI)
使用操作系统的线程(Thread)
其他的方法也存在,但是这两种方法应用得最广泛。 虽然存在效率和移植的问题,这两种方法都可以在SMP,NUMA 和Cluster 上实现。
由platform公司开发的lsf 多集群系统使多个异构的计算机能够通过局域网或广域网共享计算资源,并能够为用户提供对资源的透明访问。Lsf现在主要支持以下三种大规模资源共享:
Lsf将多个集群连接在一起,一个集群往往是企业中的一个部门,每个集群中有一个主控机,此主控机负责收集该集群系统中的各台主机的负载 信息,并且根据各主机的负载信息情况对作业进行调度。各个集群系统之间根据一定的策略进行资源共享。在每个主控机上定义了该集群能共享哪些集群系统中的资源。当用户发送了一个任务请求时,lsf系统能将此任务发送到对应的资源所在地,并根据调度策略选择负载较轻的机器对此任务进行处理。当多个用户请求同一个资源时,根据用户的请求优先级来确保优先级高的用户的紧急任务能首先得到满足。Lsf还具有以下特点:
lsf系统支持多种操作系统平台。
如主要的UNIX平台:Sun Solaris、 HP-UX、 IBM AIX、 Digital UNIX/Compaq Tru64 UNIX、SGI IRIX以及 Red hat Linux、 Windows NT、Windows 2000等。
TurboCluster是一个企业级的集群方案 ,它允许在多个计算机上构建高可用的、可扩展的网络。它支持Intel和Alpha芯片,支持Linux 、Windows NT 和Solaris操作系统平台。使用TurboCluster系统可以显著地提高基于TCP/IP协议的多种网络服务的服务质量,这些服务包括Web、Mail、News和Ftp等。TurboCluster具有良好的可用性、可扩展性和可管理性,集群内部的实际服务器 的数量可以扩充到无限台。TurboCluster是一种基于软件的集群系统解决方案 ,它还能够支持异构的网络环境。
当客户向集群系统发送一个请求时,该请求首先到达高级流量管理 器,高级流量管理器通过一定的调度策略将此请求转发到集群中的某一台实际服务器上对此请求进行处理,最终的回应请求将直接发送给客户。由于最终的回应请求没有通过高级浏览管理器而是直接发送给客户,这样大大减轻了高级浏览管理器上的负载,从而降低了瓶颈产生的可能。TurboCluster中采用的调度策略有:轮回(Round Robin)、加权轮回(Weighted Round Robin)、最少连接(Least Connection)。为了减少高级流量管理器产生失效的可能,TurboCluster为高级流量管理器准备了一个备份机。该备份机不断询问管理器来确认它正在正常工作,一旦发现主管理器已经失效,备份机将接替它继续工作。
TurboCluster具有如下一些增强的性能。
Mosix集群
实际上把Mosix集群放在高性能集群这一节是相当牵强的,但是和Beowulf等其他集群相比,Mosix集群确实是种非常特别的集群,它致力于在Linux系统上实现集群系统的单一系统映象SSI(Single System Image)。Mosix集群将网络上运行Linux的计算机连接成一个集群系统。系统自动均衡节点间的负载。因为Mosix是在Linux系统内核中实现的集群,所以用户态的应用程序不需要任何修改就可以在Mosix集群上运行。通常用户很少会注意到Linux和Mosix的差别。对于他来说,Mosix集群就是运行Linux的一台PC。尽管现在存在着不少的问题,Mosix始终是引人注目的集群系统。
MOSIX为Linux核心增添了集群计算的功能。它支持的操作系统平台有BSD/OS 和Linux,它允许任意多个基于X86/Pentium的服务器和工作站协同工作。在MOSIX集群环境中,用户无需对应用程序进行修改,或将应用程序与库连接起来,或将应用程序分配到不同的节点上运行。MOSIX会自动将这些工作透明地交给别的节点来执行。
MOSIX的核心是适应性的资源管理 算法,它对各节点的负载进行监测并做出相应的回应,从而提高所有进程的整体性能。它使用抢先的进程迁移方法来在各节点中分配和再分配进程,从而充分利用所有的资源。适应性的资源管理算法具体上又包括适应性的负载平衡算法、内存引导算法和文件I/O的优化算法。这些算法都对集群中的资源使用情况的变化做出响应。如:节点上的不平衡的负载分布或由于内存不足而导致的过多的磁盘换入换出。在这种情况下,MOSIX将进程从一个节点迁移到另外一个节点上,从而来均衡 负载或将进程迁移到有足够的内存空间的节点上。
由于MOSIX是在Linux的核心中实现的,因此它的操作对应用程序而言是完全透明的。可以用它来定义不同的集群类型,这些集群中的机器可以相同也可以不同。
与Turbocluster、Lsf等集群系统不同的是,MOSIX集群中的每个节点既是主节点又是服务节点,不存在主控节点。对于那些在本地节点创建的进程而言,该节点就是一个主节点;对于那些从远方节点迁移过来的进程而言,该节点就是服务节点。这意味着可以在任意时刻向集群中增加节点或从集群中删除节点,而不会对正在运行的进程产生不良的影响。MOSIX的另外一个特性就是它的监测算法能够监测每个节点的速度、负载、可用内存、IPC 以及I/O rate 。系统使用这些信息来决定将进程发送到哪个具体的节点上。当在某个节点上创建了一个进程以后,该进程就在这个节点上执行。当该节点的负载超过了一定的阀值以后,就将该进程透明地迁移到别的节点上继续执行。
MOSIX文件系统采用直接文件系统访问的方法,它可以允许迁移到别的节点的进程在本地进行I/O操作。这样就减少了需要进行I/O操作的进程与创建该进程的节点之间的通讯,从而允许这些进程更加自由地在集群中的节点中进行迁移。MOSIX文件系统使所有节点都可以像访问本地文件系统一样透明地访问其它节点上的所有目录和文件。
一个低端的MOSIX配置可以包含通过以太网连接起来的多台PC机。一个较大的配置可以包含通过快速以太网连接起来的多台工作站和服务器。高端的MOSIX配置可以包含通过Gigabit-Ethernet连接起来的多台SMP 或非SMP工作站和服务器。
除了高性能科学计算,MOSIX提供了一个有趣的选项,用于以共同设置创建集群环境。通过使用服务器和工作站上的闲置资源,它可以更快更有效地创建和运行应用程序。由于访问了多台服务器,并且可以动态调整群集大小和更改负载均衡规则,它还可以提供高度的服务器可用性。MOSIX的不利之处是它更改Linux内核行为的一些核心部分,于是系统级应用程序将不会按期望运行。要使用网络应用程序时,而该程序使用基于单个服务器地址的套接字连接,MOSIX通常也会受到限制。这意味着网络应用程序在一个服务器节点上开始运行时,如果IP地址与套接字绑定,那么它必须继续在该节点上运行。显然,MOSIX还正在开始迁移套接字,因此这很快就变成了争论的焦点。
Eddie的主要目的是提供一些供那些进行重要任务处理的网站使用的工具,从而使这些网站能够提供持续的高级服务。Eddie创建了一个真正的分布式web服务器结构,它支持分布于不同的物理地点的web服务器。它的结构如图所示。
下图所示的分布式服务器包含两个集群,它们分别是site 1 和site 2。每个集群都包含着一台域名服务器和若干台运行web服务器软件的实际的服务器。当用户敲入一个域名时,首先在Local DNS上对这个域名进行解析,找出与其对应的IP地址。如果Local DNS无法对这个域名进行解析,就将此域名发送到Authoritative DNS上,Authoritative DNS返回应该访问的服务器的IP地址,然后用户就可以访问指定的服务器上的内容了。
Eddie 集群结构图
Eddie主要包含两个软件包:HTTP网关和增强的DNS服务器。如图5-2所示,在每个站点上增加一个新的服务器(即前端机),在其上运行HTTP网关来接受外界发来的请求并且将请求调度到合适的后端机上执行,DNS服务器上运行增强的DNS服务器软件,通过该软件可以在多个地理上分散的网址上均衡负载。
Eddie主要有以下与众不同的特点:
Windows Compute Cluster Server™由两部分组成。第一部分是Windows Server 2003 Compute Cluster Edition(CCE),它是一种源自Windows Server 2003(标准x64版本)的64位操作系统。第二部分是Microsoft Compute Cluster Pack(CCP),它可以提供集群部署和管理工具,包括:作业调度工具、MPI以及用来管理集群节点和任务的控制台与界面。这些工具可与当前的Windows基础设施相集成,例如,可使用活动目录(Active Directory)管理用户和安全 性,集群管理控制台可利用微软管理控制台(Microsoft Management Console)等。Cluster Pack还能够与支持MPI、并行调试以及OpenMP的Visual Studio 2005协同工作。 作为HP统一集群产品组合一部分的Windows Compute Cluster Server 2003可用于HP集群平台3000和4000系统,以及集群平台4000刀片服务器系统。 HP消息传送接口(HP-MPI)是领先的MPI标准实施,对于创建和移植并行应用至关重要,而且已被计划移植到Windows产品中。另外,惠普和微软还将与软件提供商紧密合作,共同实现64位应用到Windows Computer Cluster Server 2003的移植和优化。
Windows HPC Server 2008将是现有Windows Computer Cluster Server 2003的继任者,基于Windows Server 2008 64-bit系统核心,因此不支持32位和IA64架构硬件。无疑,新的命名方式意味着微软已经做好了准备,有信心迎接最艰苦的HPC工作量考验。
Windows HPC Server 2008将提供新的高速网络、高效灵活的集群管理工具、面向服务的体系结构(SOA)工程进度安排、支持合作伙伴的集群文件系统,可用于计算流体力学、水利枢纽模拟等大规模并行项目,或者BLAST、蒙特卡罗模拟等复杂的并行项目。
Altair Engineering Inc.、Cluster Resources Inc.、Platform Computing等多家相关行业企业都已宣布支持Windows HPC Server 2008,而Panasas、Quantum Corp StorNext、HP PolyServe、Sanbolic的集群文件系统均得到该系统的支持,IBM的IBM GPFS也将在不久后加入这一行列。
在美国内布拉斯加大学PKI研究院的计算中心内,Windows HPC Server 2008已经被部署在一套拥有1151个节点的大型集群上,为政府、科研和工业用户提供服务。爱荷华大学、剑桥大学、3M、Baker Hughes Inc.(石油服务公司)也都已经着手部署这套系统。
Legion 试图构建一个真正的多计算机系统。这是一个群集,其中每个节点都是一个独立系统,但在用户看来,整个系统只是一台计算机。Legion 设计成支持一台世界范围的计算机,由上百万个主机以及数以万亿计的软件对象组成。在Legion 中,用户可以创立他们自己的合作小组。
Legion提供了高性能并行、负载均衡、分布式数据管理和容错性。它通过其容错管理和成员节点间的动态重新配置来支持高可用性。它还有一个可扩充核心,该核心可以在出现新的改进和进展时动态替换或升级。系统并不是只接受单一控制,而是可以由任意数量的组织管理,而每个组织都支持整体的自治部分。Legion API通过其内置的并行性提供了高性能计算 。
Legion需要使用特别编写的软件,以使它可以使用其API库。它位于用户计算机操作系统之上,协调本地资源和分布式资源。它自动处理资源调度和安全 性,还管理上下文空间以描述和访问整个系统中上亿种可能之外的对象。然而,在每个节点上运行时,不需要使用系统管理员特权,并且可以使用无特权的用户帐号进行工作。 这将增加加入Legion 的节点和用户的灵活性。
Sandia National Lab中的Computational Plant是一个大规模整体并行群集,用于实现TeraFLOP(万亿次浮点运算)计算并构建在商业组件上。整个系统由“可伸缩单元”组成,这些“可伸缩单元”可以划分成适合不同目的(计算、磁盘I/O、网络I/O、服务管理)。群集中的每个节点都是一个Linux系统,带有专门开发的、提供分区服务的内核级模块。每个分区的功能可以通过装入和卸载内核级模块来修改。
项目分三个阶段完成,开始阶段是原型,有128个基于433-MHz DEC Alpha 21164的系统,其中每个都有192 MB RAM和2 GB驱动器,相互之间用Myrinet网卡和8-端口的SAN交换机连接。第1阶段将它扩充为400个基于21164的工作站,这些工作站的运行速度为500 MHz,有192 MB RAM,没有存储 器,用16-端口的SAN交换机以超立方体结构连接起来,并且运行Red Hat 5.1。当前的第2阶段有592台基于DEC 21264的机器,它们的运行速度为500 MHz,有256 MB RAM,没有驱动器。每个节点都使用64-位,33-MHz PCI Myrinet网卡,并且仍使用16-端口交换机以超立方体结构连接。
在Cplant上运行的应用程序包括解决稀疏线性系统、流体力学和结构力学中计算系统的优化、分子力学的模拟、线性结构力学的有限元分析,以及并行应用程序的动态负载均衡库。
香港大学的系统研究小组有一个基于Java的群集,叫做支持Java的单系统映像计算体系结构(JESSICA),它作为一个中间件层以完成单系统映像的幻想。该层是每个使用分布式共享内存(DSM)系统进行通信的节点上运行的所有线程的一个全局线程空间。该项目使用ThreadMark DSM,但最终将用他们自己创建的JiaJia Using Migrating-home Protocol (JUMP)。他们使用定制的基于Java的ClusterProbe软件来管理群集的50个节点。
法国的IRISA研究所的“大规模数字模拟应用程序的编程并行和分布式系统”(PARIS)项目提供了几种用于创建Linux服务器群集的工具。该项目由三部分组成:群集的资源管理软件、并行编程语言的运行时环境,以及分布式数字模拟的软件工具。
资源管理软件包括用于共享内存、磁盘和处理器资源的Globelins分布式系统,及其Dupleix和Mome分布式共享内存系统。
资源管理软件包括用于共享内存、磁盘和处理器资源的 Globelins 分布式系统,及其 Dupleix 和 Mome 分布式共享内存系统。
负载均衡群集负载均衡群集在多节点之间分发网络或计算处理负载。在这种情况下,区别在于缺少跨节点运行的单并行程序。大多数情况下,那种群集中的每个节点都是运行单独软件的独立系统。但是,不管是在节点之间进行直接通信,还是通过中央负载均衡服务器来控制每个节点的负载,在节点之间都有一种公共关系。通常,使用特定的算法来分发该负载。
网络流量负载均衡是一个过程,它检查到某个群集的入网流量,然后将流量分发到各个节点以进行适当处理。它最适合大型网络应用程序,如 Web 或 FTP 服务器。负载均衡网络应用服务要求群集软件检查每个节点的当前负载,并确定哪些节点可以接受新的作业。这最适合运行如数据分析等串行和批处理作业。 那些系统还可以配置成关注某特定节点的硬件或操作系统功能:这样,群集中的节点就没有必要是一致的。
EnFuzion 是 TurboLinux 推出的科学群集产品,它并不基于 Beowulf。但是,它可以支持上百个节点以及许多不同的非 Linux 平台,包括 Solaris、Windows NT、HP-UX、IBM AIX、SGI Irix 和 Tru64。EnFuzion支持在节点之间实现自动负载均衡和资源共享,而且可以自动重新安排失败的作业。EnFuzion 非常有趣,因为它运行所有现有软件,并且不需要为环境编写定制的并行应用程序。它支持在节点间实现自动负载均衡和资源共享,而且可以自动重新安排失败的作业。
高可用性(HA)群集致力于使服务器系统的运行速度和响应速度尽可能快。它们经常使用在多台机器上运行的冗余节点和服务,用来相互跟踪。有许多应用程序都必须一天二十四小时地不停运转,如所有的web服务器、工业控制器、ATM、远程通讯转接器、医学与军事监测仪以及股票处理机等。对这些应用程序而言,暂时的停机都会导致数据的丢失和灾难性的后果。如果某个节点失败,它的替补将在几秒钟或更短时间内接管它的职责。因此,对于用户而言,群集永远不会停机。
某些HA群集也可以维护节点间冗余应用程序。因此,用户的应用程序将继续运行,即使他或她使用的节点出了故障。正在运行的应用程序会在几秒之内迁移到另一个节点,而所有用户只会察觉到响应稍微慢了一点。但是,这种应用程序级冗余要求将软件设计成具有群集意识的,并且知道节点失败时应该做什么。但对于Linux,大多数现在还做不到。因为Linux系统没有HA集群标准,并且也没有公共API可供应用程序开发者构建有群集意识的软件。
HA群集可以执行负载均衡,但通常主服务器运行作业,而系统使辅助服务器保持闲置。辅助服务器通常是主服务器操作系统设置的镜像,尽管硬件本身稍有不同。辅助节点对主服务器进行活动监控或心跳观察,以查看它是否仍在运行。如果心跳计时器没有接收到主服务器的响应,则辅助节点将接管网络和系统身份(如果是Linux系统,则是IP主机名和地址)。但是,Linux在这一领域仍有一点忽略。
高可用集群通常有两种工作方式:
容错系统:通常是主从服务器 方式。从服务器检测主服务器的状态,当主服务工作正常时,从服务器并不提供服务。但是一旦主服务器失效,从服务器就开始代替主服务器向客户提供服务。
负载均衡 系统:集群中所有的节点都处于活动状态,它们分摊系统的工作负载。一般Web服务器集群、数据库集群和应用服务器集群都属于这种类型
下面列举出市场上主要的HA集群.
Wizard公司建立于1992年,2000年改名为Apptime。Watch-dog3.0是该公司出品的高可用及负载平衡集群产品。Watch-dog在1999年移植到linux平台上。Watch-dog Light是Watch-dog的简化版,只能支持两个节点和一个应用服务。 在Watch-dog 3.0 中数据是不能够并发访问的,每个需要数据访问的应用服务只能单独访问数据,数据在被访问期间锁定,这就避免了并发访问可能造成的冲突。
当一个提供服务的节点需要更新时,系统管理员可以手动的在该节点上执行failover,Watch-dog 3.0 linux版本不需要改动内核,该产品适用于Red Hat, SuSE, Debian, FreeBSD,Windows NT/2000, Solaris, HP-UX, IRIX, AIX以及Tru64 UNIX.,起价为每节点1000美元,Watch-dog Light起价为每节点250美元,其用户范围包括ISP,ASP,电信运营商,电子商务等。
下面列出了Watch-dog 3.0最重要的特点:
1. 最多可支持32,000 个节点
2. 一个SNMP 网关
3 . 支持多种应用服务,包括MySQL, Oracle, Sybase, Informix, SQL Server,Samba, sendmail等
4 . 简单的管理工具
5 . 支持多种平台的真实服务器,包括Windows NT/2000 以及 Solaris
Apptime的集群管理软件包含了基于X500或LDAP的分布式集群管理以及基于HTTP/XML的远程检测和管理。
Hewlett-Packard带来的产品是MC/ServiceGuard,它原是基于HP-UX的高可用集群产品,移植到linux平台后仍然保持了其优良的功能。MC/ServiceGuard的高可用性已经得到了验证,在UNIX环境下已经售出了超过45000份许可证。MC/ServiceGuard构成了其他HP的高可用性解决方案的基础。包括了多种容错方案(Campus Cluster, MetroCluster Continental-Clusters)
MC/ServiceGuard和linux内核有着紧密的联系。HP的即将开放源码的Watchdog记时驱动器已经和linux内核紧密结合在了一起。MC/ServiceGuard的初期版本最多支持4个节点,预计在后续版本中会增加到16个。MC/ServiceGuard在开始阶段会安装在HP的基于intel芯片的网络服务器中,之后也会运行在基于RISC处理器的服务器上。集群中的每个节点都是对等的,每个节点提供一个或多个应用,当一个节点失效时,该节点上的应用自动转移到集群中的其他节点上去。该应用所对应的ip地址也被移动到相同的节点上去,所以客户可以使用同样的机器名或ip地址进行连接。
HP的目标是那些需要在数据库以及应用层保护其关键任务的企业应用。 HP同时与SAP及其他公司合作以提供ERP领域中的机群解决方案。MC/ServiceGuard的价格还没有最后制订,在HP-UX平台下的MC/ServiceGuard有三个定价方法,基于每节点的;基于功能的和基于每处理器的。
MC/ServiceGuard的重要特点有:
1. 对于错误的快速监测和快速恢复。
2. 在系统软硬件维护期间仍然保持应用的有效性。
3. 在线重配置
4. 可伸缩的负载平衡机制
5. 应用程序不需为支持高可用性而做任何修改
6 . 数据保护
MC/ServiceGuard 管理及监控软件、硬件以及网络的故障,故障的检测和恢复过程是完全自动的,不需要管理员的介入。应用包可以通过几个简单的命令从一个节点移动到另一个节点。允许集群中一个节点的定期维护,同时其他节点继续工作。当该节点的维护完成后再重新加入集群。同样也允许改变节点的操作系统。
MC/ServiceGuard拥有新的在线重配置功能,可以在系统运行时改变集群的配置。 该功能允许用户增减应用包,修改应用的属性,修改整个包,与此同时集群和其他的应用仍在运行。也允许用户在线增减节点。节点失效后,在该节点上的不同应用可以被转移到不同的新节点上去。工作量也被分配到其他的节点上。分配工作量使失效对集群的影响减少到最小。
Legato是一家在企业级存储管理软件方面处于领先地位的公司。该公司使用集群技术以提高数据和应用的可用性。Legato Cluster是该公司一系列产品的名字,该系列产品的主要组成部分是Legato Cluste Enterprise,它包含了基本的集群技术,而解决方案包则是在Legato Cluste Enterprise的基础上加上几个附加的模块,Legato eCluster是一个解决方案包,它包含了Cluster Enterprise的几个征对Apache、Netscape以及HTTP 性能检测而添加的附加模块。Legato eCluster必须有web服务器的支持。
Legato的集群产品不公开源码,但他们提供了一个完整的perl开发环境以支持开放源码研究。Legato 的集群产品于2000年4月移植到linux平台上。Legato Cluster Enterprise不需要改变linux内核,而且没有服务器数量的限制,这意味着用户可以根据应用环境的需要部署尽可能多的服务器。
Legato Cluster产品(Legato Cluster Enterprise和Legato eCluster)的主要特性有:
1. 单一的配置界面,使管理和重配置大型的集群变得更容易。
2. 没有服务器数量的限制,这对于有数百个web 服务器的商业环境来说非常重要。
3 . 支持多种平台,包括Linux ,Unix 和Windows NT/2000
4 . 提供一个perl开发环境,允许在Legato Cluster架构上开发开放源码的集群解决方案。以及根据特定的应用定制解决方案。
5 . Legato Cluster提供对Apache的支持模块。
6 . 支持TCP/IP,允许通过LAN或WAN连接。
Legato eCluster的目标是使用ip层负载平衡解决方案的用户。ip层负载平衡通过一个director将对指定ip地址的访问请求分配到所有运行Legato eCluster软件的web服务器上。 如果服务失效,Legato eCluster 重启该服务或将机器标识,ip 地址,web 服务都转移到另一台备用机器上,然后将服务与内容连接起来。内容可以存放在SAN, NAS, NFS或本地硬盘上。如果内容的一个拷贝失效,则通过网络将服务与内容的第二份拷贝连接起来。
Legato Cluster通过对服务器的隔离检测提供数据完整性,隔离检测提供一种机制以使Legato Cluster的节点可以检测自己是否与集群中的其他节点隔离。其主要的目的是防止两个节点都认为对方已失效,而同时向同一块磁盘空间中写入数据。
Legato Cluster防止对数据的并发访问,任何一个时刻只有一个服务器能够对一个特定的磁盘区域进行写操作。Legato Cluster没有提供复制数据的功能,该功能需由第三方提供.
Legato Cluster提供一个单一的配置界面,管理员可以对整个集群进行配置而不用对每个节点逐一进行配置。
Mission Critical Linux公司提供专业的linux应用服务以及咨询服务。Mission Critical Linux提供的服务包括预配置的集群解决方案;安全服务技术(SST)提供对系统的安全的远程管理,检测,更新;Crash Analysis套件提供系统core dump的能力。Convolo是Mission Critical Linux公司提供的两个节点的linux集群产品。该产品基于Mission Critical Linux公司的开放源代码的Kimberlite技术,遵循GPL。Convolo满足了商业用户对于高可用性以及数据完整性的要求。Convolo在2000年7月开始发售,售价为每节点995美元。
Convolo 由一个有多年企业集群开发经验的开发小组做基于linux 的开发,其他大多数的高可用产品都是从unix 平台移植而来的。Convolo适用于所有主要的linux发行版本以及IA-32 及IA-64结构。
Convolo的目标是那些需要高可用性的数据库以及提供动态内容的基础的internet服务提供商;需要高可用性的文件服务器、邮件服务器、数据库的企业用户以及定制服务的用户。
下面是Convolo的主要特征:
1. 开放源码
2. 共享的存储结构,支持SCSI和Fibre Channel,任何节点都能直接访问
所有的共享磁盘。
3. 与linux 的版本及硬件平台无关
4. 支持多种应用,包括Oracle, Sendmail,MySQL, NFS等
Convolo 被设计为在大范围的系统失效后仍然能够保持数据的完整性。在Convolo的设计中包含了对通过SCSI 或Fibre Channel总线互连的磁盘共享的支持。多个节点可以同时访问存储在共享磁盘分区上的文件以得到集群的配置和状态信息,同时过程锁定机制使在一个时间内只有一个节点能修改这些信息。Convolo没有使用DLM来控制对数据的访问,所以在一个时间内只有一个节点能运行一个指定的服务及访问该服务的数据,如果该节点失效,服务及对服务数据的访问移动到另一个节点上
为了保证数据的完整性,在Convolo 1.2中提供了整个NFS的failover功能,包括了NFS锁定协议以及一系列的鉴定机制。
Convolo包括了一个基于web的GUI管理工具和一个命令行管理工具,简单的安装/配置脚本,以及完整的文档。
PolyServe公司提供了两个系列的linux集群产品。第一个系统现在已经发售,它包含了failover以及应用恢复特性,其目标是中小型的互连网应用,例如web服务器、防火墙、VPN、代理服务器、FTP服务器等。第二个系列现在还在开发中。 它提供了一系列完整的工具以支持大型的互联网应用。
第一个系列的产品包括Understudy 和LocalCluster Understudy是一个两节点的高可用性及负载均衡的集群产品,从1999年11月开始发售,
Understudy是一个低价的纯软件解决方案。Understudy要求集群中节点的数据各自独立,节点要部署在同一个子网中。Understudy不提供数据复制的功能,所以节点的数据需要手工更新。
LocalCluster是一个支持多节点的产品,于2000年9月开始发售。LocalCluster是一个真正的分布式解决方案,所有节点都是平等的。LocalCluster能够在节点之间复制web数据。因为数据复制到集群中所有节点上,所以当一个失效的节点恢复后,其数据会自动的更新。现在LocalCluster还不能复制数据库或动态的web内容 PolyServe的所有产品都使用了组通信技术。该技术提供了一个可复制的、可为整个集群进行配置的数据库。允许管理员管理整个集群而不是为每个节点修改配置。
Understudy 以及其他PolyServe的集群产品可以运行Linux,FreeBSD/BSD, Windows NT/2000, 和Solaris上。PolyServe使其产品尽可能不受linux内核改变的影响,PolyServe支持多种linux发行版本,包括Red Hat, SuSE, Debian, Slackware等。
下面介绍PolyServe系列集群产品的主要特点:
1. 扩展能力:一个集群可以扩展到128 个节点,还可以由多个子集群构成一
个可以容纳数千个节点的集群。
2. 集群文件系统:由物理上的共享存储器所构成的可并发访问的文件系统。
3. 对整个集群的配置工具
4. 可以指定节点在failover 时的优先级,一个节点上不同的服务可以被转
移到不同的备份节点上。
5. 多系统的管理能力,可管理用户,打印机,安全,应用等,可在一个控制
台下管理单一系统,子集群或整个集群。
PolyServe 未来的集群产品将是一个共享的SSI 集群,其目标是互联网数据中心、ASP 、ISP 电子商务站点、以及内容提供商。产品的名称和细节将在2001年公布。
Red Hat是在世界范围内领先的linux发行商,占据50%以上的市场份额。Red Hat High出品的High Availability Server是一项开放源码的集群技术,提供动态负载平衡以及TCP/IP,UDP服务的failover支持。High Availability Server在2000年6月开始出售,两节点的负载平衡集群售价为1995美元。这个价格包含了技术支持,包括一年内的通过电话或web进行的安装和配置的支持,之后可以以每节点995美元的价格添加节点。
High Availability Server基于Red Hat linux 6.2,它支持与其他的linux版本,Solaris, 及Windows NT/2000组成一个异构的网络环境。
High Availability Server的目标是web服务器、FTP服务器、邮件网关、防火墙等需要负载平衡和高可用性的基于ip的应用。
High Availability Server最主要的特点有
1. 开放源码的发行版
2. 简单的安装
3. 高性能以及高伸缩性
4. 高适应性
5. 增强的安全性
6 . 易管理性
High Availability Server需要对linux内核做一些修改,所有的改变都是开放源码的。
一个专门的安装程序负责安装集群所需要的软件包,节点的数量只取决于用户的硬件和网络环境。High Availability Server为web服务器提供了增强的安全性,为那些在开放的网络环境下工作的web服务器提供了增强的安全配置。
High Availability Server可以被配置为FOS和LVS两种工作模式,在FOS模式下,系统被配置为两个节点的热备份集群,为应用提供冗余。在LVS模式下,系统被配置为一个多节点的集群,其中包含两个负责负载平衡的服务器,它们负责将用户的请求定向到一个或多个基于ip的服务上,负载平衡的算法有轮转调度,加权轮转调度,最小连接调度和加权最小连接调度四种,负载均衡技术有网络地址转换,Ip隧道和直接路由三种。
SGI 有两个集群产品,ACE和FailSafe。 ACE 是研发性质的技术,而FailSafe 是已经推向市场的集群技术。在本文中只介绍FailSafe技术。FailSafe于1995年发布,运行在SGI的IRIX Unix操作系统上。SGI和SuSE将其移植到了linux上,SGI在2000年8月将FailSafe的源码开放。(http://oss.sgi.com/projects/failsafe/)
Linux FailSafe是一个高可用的集群产品,每个集群支持最多8个节点。 各节点可以访问共享的RAID 或镜象磁盘。
Linux FailSafe 为用户提供了一组系统恢复的工具,并允许用户为特定的应用编写自己的恢复工具。Linux FailSafe为多个重要的应用提供了高可用性的支持。包括NFS, Samba, Apache, 和Oracle。Linux FailSafe不需要应用做任何修改。
虽然Linux FailSafe具有商业集群产品的所有特征,其主要面对的还是那些有创造性
的专业用户。 一些应用(例如建模)使用大量的数据,所有的运算耗时数小时甚至数天,所以它们更需要高可用性的支持。虽然Linux FailSafe适用于商业应用,
SGI 的主要目标是诸如CAD/CAM 、化学及生物学、数据管理、工程分析、科学计算等用户
下面列出了Linux FailSafe集群技术的主要特点:
1. 高可用性服务
2. 动态集群配置:一个节点可以动态的加入集群或从集群中删除而不会导致
应用的中断。
3. 基于java 的集群管理
4. 在服务不间断的情况下对节点进行维护:用户可以将节点从集群中删除,
对其进行升级,然后再将其重新加入到集群中,而集群的服务不会受到任
何影响。
5. 对数据完整性的保护
Linux FailSafe 不需要对linux 内核的修改,Linux FailSafe 通过确保一个失效的节点不会再对一个文件系统或数据库进行写操作来提供对数据完整性的保护。当一个节点被发现失效后,集群中的其他节点将其从集群中删除。
Linux FailSafe有基于java的GUI。 基于java 的GUI 包括用来配置集群的FailSafe 管理器以及用来以动态图形的方式显示集群状态的FailSafe 集群观测器。
SteelEye Technology公司在1999年12月从NCR收购了Life-Keeper 技术,从而也拥有了使用该技术的一系列集群产品。在此之前NCR已经在数千台服务器上部署了Life-Keeper,它们运行在Solaris, Windows NT, 和MP-RAS环境下,SteelEye对其做了一些修进,例如对java GUI的修改,但在本质上它还是那项受到好评的NCR公司的集群技术。
LifeKeeper从2000年6月开始发售,起价为每节点1500美元,SteelEye可以提供节点的配置和全天的支持服务,但要另外收费。LifeKeeper 3.01现在支持Red Hat Linux 和 Caldera OpenLinux,在将来会支持SuSE以及其他的linux发行版本。LifeKeeper还支持Windows NT, Solaris, 和MP-RAS,对Windows 2000的支持会在2001年内实现。
LifeKeeper的目标是ISP、ASP以及那些在intel平台上部属电子商务应用和数据库的客户。
下面列出了LifeKeeper最主要的特点:
1. 对关键资源的良好保护,为关键的商务应用提供最长的运行时间。
2. 可伸缩的配置选项。
3 . 基于java的GUI,提供良好的易用性和易配置性。
4. 已在数千台服务器上得到了证实
5 . 支持多种平台,包括Linux, Unix, 以及 Windows NT/2000
LifeKeeper的linux版使用linux的API,不用对内核做任何改变。应用也同样不需改变。SteelEye提供的应用恢复工具可以在应用失效时自动切换,目前支持的应用有Oracle、 Apache、 Sendmail、 Samba、Lotus Domino和Informix。如果支付一些费用的话,你也可以得到根据需要定制的应用恢复工具。 为了确保客户能够对应用和数据进行连续的访问,LifeKeeper 在节点失效时自动将应用转移到另一个节点并保护数据。
LifeKeepe 的体系结构没有限制节点数的上限,但是由于现今基于linux 的存储解决方案的限制,在每根SCSI总线上只能连接两个服务器,这就限制了在共享SCSI 硬盘的解决方案中,
在一个共享的SCSI硬盘上只能连接两个节点。
LifeKeeper 提供了对Apache 服务器的静态数据复制功能,通用的数据复制功能将在今年提供。
为了实现数据完整性,LifeKeeper 使用SCSI 预定来保护通过共享的SCSI 总线被其他节点访问的数据。 当安装LifeKeeper,一个SCSI预定的补丁也同时被安装。这个补丁现在已经被包含在Red Hat Linux 6.2 中,而且Caldera等其他linux发行商也正在将其包含到自己的发行版中。
LifeKeeper可以从网络上的任何地方通过一个基于java的集中的GUI来进行管理。 这个GUI 允许管理员管理所有基于linux 的应用、数据库、服务器。SteelEye 现在正与Caldera 、Compaq 、Dell 、 IBM 、 Intel, Red Hat以及其他的集群技术提供商合作。希望提供一个综合了网络和系统配置的易于配置的环境,类似于Hewlett-Packard 的OpenView 、 IBM 的NetView 和Tivoli 、 以及 Computer Associates 的Unicenter/TNG 。
Cluster Server 6 是TurboLinux公司的第三代集群技术,它是从TurboCluster 4.0改进而来。Cluster Server 6主要是一个负载平衡及可伸缩的解决方案,TurboLinux同时也宣称其是一个高可用性的集群方案。 这意味着同一个应用及配置在所有的节点上均可用。一旦一个节点上的服务失效,它可以在另一个节点上重新启动,不会造成服务的中断。
TurboLinux本身是遵循GPL的,但是在它之上的Cluster Server 6则不是遵循GPL的。集群中的节点可以运行TurboLinux、 Red Hat Linux、 Solaris或Windows NT/2000操作系统。TurboLinux宣称Cluster Server 6可以使网络应用的无故障运行时间达到99.995%。Cluster Server 6不需要特定的硬件,也不需要对应用的修改。
Cluster Server 6的目标是小到中型的需要高可用的web服务及内联网服务的商务应
用,电子商务站点,需要廉价的负载平衡软件解决方案的顾客。
Cluster Server 6的主要特点有:
1. 负载平衡解决方案
2. 对节点的数目几乎没有限制
3. 易用的集群管理接口
4. 节点间的安全连接
5 . 节点可运行在TurboLinux, Red Hat Linux, Solaris或Windows NT/2000操作系统之上。
Cluster Server 6对linux内核进行了一些修改,所有对内核的改动都是开放源码的,可以下载,Cluster Server 6中没有包含对内核的补丁,因为这些修改已经加入了TurboLinux发行版本中。
Cluster Server 6的加速连接特性改善了包路由以及传输管理的性能,添加了三种负载均衡技术:网络地址转换、ip隧道和直接路由。 一个新的集群管理控制台(CMC )使管理员可以实时观测到集群的状态,负载和性能。CMC使管理员能够管理集群的设置,维护。 管理员只需要几下鼠标的点击就可以使一个节点从集群中脱离出来以对其进行维护,同时不会对集群的性能造成影响。
Veritas软件公司的主要产品有 Veritas Cluster Server和 Veritas Global Cluster Manager,主要运行在Windows NT/2000、HP-UX 和Solaris上。
Cluster Server for Linux侧重于对服务的管理而不是对节点的管理。一个应用由多个资源组成,一些是基于硬件的,另一些是基于软件的。 例如,一个数据库服务包括一个或多个逻辑上的网络标识,象ip 地址;一个关系数据库管理系统(RDBMS );一个文件系统;一个逻辑磁盘管理器;多个物理磁盘。当节点失效时,所有的资源需要转移到另一个节点上以重建该服务。
在底层,Cluster Server for Linux监测一个服务所用到的资源。 当发现服务失效时,会自动重启服务,包括本地重启或移动到另一个节点后重启,取决于失效的类型,如果一个服务的一个独立的资源失效,则不需要重启整个服务而只需要重启失效的那个部分。
Cluster Server for Linux的目标是互联网、电信及金融方面的应用。
Cluster Server for Linux的主要特点有
1 . 可伸缩,2~32个节点
2 . 可运行在HP-UX, Solaris, 和 Windows NT/2000上。
3 . 巩固的系统管理。
Cluster Server for Linux是一个与体系结构无关的集群技术。
Linux虚拟服务器 (Linux Virtual Server, LVS)建筑 于实际的服务器集群之上,用户看不到提供服务的多台实际服务器,而只能看见一台作为负载 平衡器的服务器。实际的服务器通过高速局域网或地理上分散的广域网连接。实际服务器的前端是一台负载平衡器,他将用户的请求调度到实际服务器上完成,这样看起来好像所有服务都是通过虚拟服务器来完成的。Linux虚拟服务器能够提供良好的可升级性、可靠性和可用性。用户可以透明地增加或减少一个节点,可以对实际服务器进行监测,如果发现有节点失败就重新配置系统。
Linux Virtual Server的结构如图所示。
Linux 虚拟服务器结构图
3.1 调度算法
LVS 提供了四种调度算法:轮转调度,加权轮转调度,最少连接调度,加权最少连接调度。
Resonate有一种基于软件的负载均衡方法,类似于Linux虚拟服务器。但是,它支持更多特性,以及一些更好的负载均衡算法。例如,使用Resonate,可以在每个群集节点装入一个代理,以确定该节点当前的系统负载。然后,负载均衡服务器检查每个节点的代理,以确定哪个节点的负载最少,并且将新的流量发送给它。另外,Resonate还可以使用它的Global Dispatch产品更有效地支持地区性分布式服务器。
Resonate已经在Red Hat Linux上彻底测试了该软件,相信它也可以在其它发行版上运行。Resonate的软件还可以在其它各种平台上运行,包括Solaris、AIX、Windows NT,并且它还可以在混合环境中进行负载均衡。
Novell HA 是Novell 公司的开放源代码高可用集 , Novell 公司并购了欧洲 Linux 第一大厂 SuSE 之后,成为全球能够抗衡 RedHat 的主要力量 . SuSE 企业版 Linux 带有一套开放源代码的 HA 集群软件,包括 HA project 的heartbeat, heartbeat-ldirectord, heartbeat-pils, heartbeat-stonith, 集群关联的存储软件 drbd, 虚拟 IP 的src_vipa 软件 . 和 RHCS 不同的是, SuSE/Novell 企业版 Linux 自带的 HA 集群软件并非一个独立的软件,如上介绍,而是由不同的开放源代码项目提供的不同部分的程序。
集群软件的获得 :
本集群软件组件已经附带在 SuSE Linux Enterprise Server 光盘中 (SLES9, SLES10), SuSE Linux Enterprise Server(SLES9, SLES10) 的光盘,可以免费从 download.novell.com 获得,并提供 2 个月的在线网络更新服务 .用户只需要在 novell 站点上免费注册一个 novell 站点账号,就可以下载 SLES9, SLES10 的所有光盘 ISO 。
Novell 在败落前,曾经是一家非常伟大的公司,有着非常雄厚的技术力量。 早在 10 多年前, Novell 公司就在集群领域独树一帜,是当时唯一能够在 PC 服务器上构建出 32 节点集群的厂商 .
Novell 收购 SuSE 公司之后,将原来在 Novell netware 操作系统上的大量企业级应用移植和整合到了 SuSE Linux Enterprise Linux 平台 , Novell 当时名震集群领域的 Novell Cluster Service 也被整合移植到了 Linux 平台,Novell Cluster Service 是一个商业系统,并非开放源代码产品 。
linux-HA 是开放源代码的 HA 项目,linux-HA 项目历史悠久, 很多linux 发行附带的HA 集群都是采用了linux-HA的heartbeat 系统和相关的组件. 需要构建完全的开源,自由而且免费的高可用集群的用户可以选择.
对于 Linux ,有许多集群系统可供选用。同时,那些项目中有几个是非商业性的,甚至是实验性质的。虽然对学术界和某些组织这也没有形成问题,但大公司通常首选著名供应商的商业支持平台。供应商,如 IBM 、 SGI、 HP 和 Sun ,提供了用于在 Linux 中构建科学群集的产品和服务,因为群集很流行,并且可以销售大量的服务器设备。一旦商业机构认为其它形式的集群是可靠的,那些相同的服务器供应商或许会围绕着开放源码集群解决方案创建自己的产品。
Linux 作为服务器平台的重要性依赖于支持大型服务器和服务器群集的能力。这就使它可以与 Sun 、 HP 、IBM 和其它公司的 UNIX 服务器在更高层面上竞争。虽然 Windows NT 和 2000 不支持 Linux 能够支持的集群范围,但是 HA 集群正规方法的可用性以及用于构建有群集意识的 API 也使它能够参与竞争。
如果正在考虑构建一个群集,那么您应当仔细检查那些可能性,并将它们与您的需求做比较。您也许会发现想要实现的目标还不能成为一个完整的解决方案,或许会发现已经有了现成的解决方案。
集群系统文件系统,主要包括Coda,Global,xFS,MOSIX,OCFS,Lustre等。
集群计算的发展需要发展并升级文件系统,此文件系统不仅能够对多个文件提供并行的访问,而且能在对同一文件进行访问的进程间提供cache一致性。大多数传统的网络 文件系统如NFS、AFS、Coda对于并行处理而言是远远不够的,因为它们都依赖中心文件服务器 。但是,随着越来越多的客户的加入,服务器的cpu很快就成为了性能的瓶颈。为了解决这个问题,处理能力更强的服务器已经被制造了出来,而且文件系统的设计者们也试图将更多的工作交给客户来完成,但是即使是这样,服务器的速度仍然是文件系统可升级性的瓶颈。新一代的文件系统如Global File System(GFS) 、XFS和 Frangipani 比较适合于集群系统。因为这些系统都在集群系统中的机器上分配存储 器、cache 和控制权,并且提供了并行文件访问和cache一致性的解决方法。
Coda文件系统(Coda File System)适用于分布式网络环境。它是在1987年在卡耐基梅隆大学以AFS2为原型开发出来的。 Linux Virtual Server 就采用了Coda 文件系统。Coda 提供了以下适用于网络文件系统的特性。
1. 为移动的客户提供了断开操作。
2. 它是一种自由软件。
3. 通过客户访问的持续缓存提供了高可用性。
4. 服务器复制功能。
5. 提供了认证的安全模型、加密和访问控制。
6. 部分网络失效后能够继续工作。
7. 具有网络带宽适应性。
8. 较好的可扩展性。
9. 即使在网络失效时也为共享定义了良好的语法。
AFS和Coda文件系统都将所有的文件放于同一个目录下,如AFS 是/afs,Coda是 /coda,这意味着所有的客户都可以使用相同的配置,所有的用户看到的是相同的文件树。对于大的安装而言这是非常重要的。对于NFS文件系统而言,客户需要服务器的最新列表而在Coda中只需要找到根目录/coda。
当在客户端敲入"cat /coda/tmp/foo"这样的请求时,cat将调用系统调用向核心请求服务,核心首先找到对应的文件索引节点并返回与该文件相关的文件句柄。索引节点包含文件的一些相关信息,文件句柄用于打开文件。系统调用首先进入核心的虚拟文件系统(VFS),然后它将请求传送给核心中的Coda文件系统模块进行处理。Coda文件系统模块包含着从VFS来的最近的一些请求,然后它将此请求交给Coda缓冲管理器venus进行处理。Venus通过察看硬盘缓冲区、向服务器发请求等方式来定位文件的所在地。如果在硬盘缓冲区中没有找到匹配的文件,则通过远程系统调用向服务器发请求,并且将取到的文件放在cache中,这时,这个文件就是一个普通的文件了,因此可以通过本地文件系统对该文件进行读写的操作。如果在硬盘缓冲区找到了此文件,则可以直接使用这个文件。当对此文件进行了一定的修改并且关闭了以后,venus将把新文件传送给服务器从而来更新服务器上的文件。其它的操作如修改文件系统,创建新目录,删除文件,去除符号链接等都可以传送给服务器。
但是由于网络有时会出现问题,因此如何保证文件的连续性是一个非常重要的问题。当venus意识到服务器不可用时,它就将客户端对文件的更新存储在修改日志中,当服务器重新可用时,便根据修改日志对服务器上的相应的文件进行更新。
GFS(Global File System)是Minnesota大学开发的基于SAN的共享存储的机群文件系统,后来Sistina公司将GFS产品化。GFS在很长一段时间都是以源代码 开放软件 的形式出现的,后来由于Sistina希望通过向用户提供支持和服务的计划未能取得成功,为了要促进自己的财务收入,Sistina在2001年将GFS变成了一种“专有软件”。Red Hat公司收购Sistina之后,在遵循GPL协议(General Public License)的条件下履行诺言公开了GFS的源代码。现在,GFS的全名被称为“红帽全球文件系统”(Red Hat Global File System,GFS)的软件,每台服务器每年收取2200美元的费用。
GFS 最初是在IRIX 上开发的,后来移植到LINUX 上,并开放源码 。
通过使用GFS,多台服务器可以共用一个文件系统来存储文件。信息既可以存储在服务器上,也可以存储在一个存储局域网络上。
GFS与GPFS结构相似,但它是全对称的机群文件系统,没有服务器,因而没有性能瓶颈和单一故障点。GFS将文件数据缓存于节点的存储设备中,而不是缓存在节点的内存中。并通过设备锁来同步不同节点对文件的访问,保持UNIX文件共享语义。GFS实现了日志,节点失效可以快速恢复。GFS使用SCSI设备锁来进行同步,目前很少设备实现这种设备锁。在没有设备锁的情况下,GFS也是通过唯一的锁服务器来进行同步,因此,锁服务器是其性能的瓶颈。
用户通过GFS可以加快数据访问速度,并进行信息复制。一旦一台服务器出现问题,用户仍可以通过网络内其他的计算机访问有关的数据。GFS对于以以下两种方式连接而成的计算机集群尤其有用:1、计算机集群中任何一台机器都可以在另一台机器发生故障时接管这台计算机的工作,2、计算机集群中的所有机器联合起来组成一台超级计算机。
GFS允许多个Linux机器通过网络共享存储设备。每一台机器都可以将网络共享磁盘看作是本地磁盘,而且GFS自己也以本地文件系统的形式出现。如果某台机器对某个文件执行了些操作,则后来访问此文件的机器就会读到写以后的结果。
GFS设计 时就考虑到了可以通过NFS或者HTTP协议进行扩展。但是数据控制和数据传输的开销显然要小于NFS。
控制路径从用户应用通过VFS传递到NFS客户端。NFS通过TCP/IP协议执行远程调用。NFS服务器端响应调用请求,通过VFS访问本地文件系统,然后由本地文件系统来访问本地的存储设备。数据传输路径包括:用户内存和NFS客户端缓存之间的内存拷贝,NFS客户端与网络缓存之间的拷贝,缓存网络缓存和NFS服务器端缓存之间的拷贝。这些拷贝通过系统总线和网络连接进行。
控制路径从用户应用通过VFS到达GFS。GFS向网络存储池(network storage pool,NSP)中的存储设备发出请求。块对齐数据(Block aligned data )在用户内存和存储设备间传输,非对齐数据则临时的通过系统内存传递。
GFS中有一个很重要的概念,叫网络存储池(The network storage pool,NSP)。NSP为每台机器提供了一个统一的存储地址空间。GFS通过NSP实现了存储设备的网络共享。这些存储设备可以是共享SCSI(Shared SCSI)和共享通道(Fibre Channel - FC)。NSP包装这些存储设备使得它们好像节点本地的文件系统。
NSP还可以根据存储设备的类型分为多个子存储池(subpools)。NSP同时也对锁进行管理 。GFS发送“锁”和“解锁”命令给NSP,NSP收到后把逻辑锁号转成对应的物理设备的锁号进行锁定。
GFS把文件系统组织成数个资源组(resource groups,RG)。通过RG,GFS把文件系统的资源分布在整个NSP上。一个存储设备上可以存在多个RG。RG实际上是各微型的文件系统(minifile system)。从文件到RG,以及从RG到NSP子池的映射。文件可能被存放在数个RG和多重存储池中。
优点:
GFS 的主要优点在于:
高可用性:如果一个GFS 客户失效,数据还可以通过其他GFS 客户访问;
扩展性:因为不需要中心服务器,所有很容易扩展存储容量和访问带宽;
缺点:
和现在流行的SAN 型文件系统相比,设计思想似乎有点落后了;
费用较高;
xFS 试图通过将服务器的功能如保持cache 的一致性、定位数据和处理磁盘请求分布在各个客户上来提供对文件系统数据的低延迟、高带宽的访问。
为了保持cache一致性,xFS采用了如下的方法。它将客户方的所有的内存空间看为一个大的cache,这样就减少了客户方的数据缓存,利用了闲置机器的内存,这种合作型的缓存可以通过减少到达磁盘的请求量来降低读延迟。
为了将定位数据的功能分布到每个客户端,xFS让每个客户都必须对文件的一个子集对应的请求进行处理。文件数据在多个客户端加以分类从而提供更高的带宽,这些分类数据包括一些奇偶信息,通过这些信息可以在机器失效时恢复分类的数据报。 这种方法可以保证没有任何节点会产生单点失效的情况。
xFS 主要特性包括以下几点:
1. 数据完全性
采用XFS文件系统,当意想不到的宕机发生后,首先,由于文件系统开启了日志功能,所以你磁盘上的文件不再会意外宕机而遭到破坏了。不论目前文件系统上存储的文件与数据有多少,文件系统都可以根据所记录的日志在很短的时间内迅速恢复磁盘文件内容。
2. 传输特性
XFS文件系统采用优化算法,日志记录对整体文件操作影响非常小。XFS查询与分配存储空间非常快。xfs文件系统能连续提供快速的反应时间。笔者曾经对XFS、JFS、Ext3、ReiserFS文件系统进行过测试,XFS文件文件系统的性能表现相当出众。
3. 可扩展性
XFS 是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间。对特大文件及小尺寸文件的支持都表现出众,支持特大数量的目录。最大可支持的文件大小为263 = 9 x 1018 = 9 exabytes,最大文件系统尺寸为18 exabytes。
XFS使用高的表结构(B+树),保证了文件系统可以快速搜索与快速空间分配。XFS能够持续提供高速操作,文件系统的性能不受目录中目录及文件数量的限制。
4. 传输带宽
XFS 能以接近裸设备I/O的性能存储数据。在单个文件系统的测试中,其吞吐量最高可达7GB每秒,对单个文件的读写操作,其吞吐量可达4GB每秒
MOSIX 集群使用了自己的文件系统MFS 文件系统。MFS将集群中的所有文件系统和目录都看作是一个文件系统,而且它提供了对所有节点上的所有文件系统的统一访问,它还通过只提供一个cache保证了cache的一致性。
MFS包含了许多位于不同节点上的文件子树,因此它就允许对多个文件进行并行操作和cache一致性。
在MOSIX集群中进行进程迁移时,如果此进程主要占用的是CPU资源,则迁移此进程对于提供系统性能是非常有效的,但是如果此进程需要进行大量的I/O操作,则迁移进程非常不利。这是因为每个I/O操作都需要与该进程原来所处的节点进行通讯。
因此MFS增加了对DFSA(Direct File System Acess)的支持。DFSA的目的就是让那些需要进行大量I/O操作的进程迁移到远端节点上,该远端节点拥有大多数I/O操作将会涉及到的文件,因此大多数的I/O操作都能在远端节点上完成,而且在远端节点上可以通过本地访问来访问数据。如果一个系统调用是节点无关的,此系统调用就会在远端节点上执行,否则就在本地执行。 MFS 比其它网络文件系统优越的地方就是它允许使用本地文件系统,这样就减少了进程和文件服务器之间的通讯开销。
OCFS 专门为支持 Oracle RAC 应用程序的数据和磁盘共享而设计。它在 RAC 集群的服务器节点间提供一致的文件系统映像,充当原始设备的替身。 除了简化集群数据库管理外,它还在保持原始设备性能优势的同时克服了原始设备的局限性。
OCFS 第 1 版支持 Oracle 数据文件、spfile、控制文件、仲裁磁盘文件、归档日志、配置文件以及 Oracle 集群注册表 (OCR) 文件(Oracle 数据库 10g 中的新文件)。设计它不是为了使用其他文件系统的文件,甚至不是为了使用那些必须在集群每个节点上安装的 Oracle 软件 — 除非您使用第三方解决方案。此外,OCFS 不提供诸如 I/O 分配(分割)等 LVM 功能,也不提供冗余功能。
Oracle 支持用于 32 位和 64 位发行版本的 Red Hat Advanced Server 2.1 、Red Hat Enterprise Linux 3 和Novell SUSE (United Linux) 上的 OCFS 第 1 版中的 Oracle 数据库,该数据库需要从可下载的二进制文件进行安装。如果您自己对其进行重新编译,则 Oracle 不提供支持。
Lustre 对象存储文件系统就是由客户端(client )、存储服务器(OST ,Object Storage Target )和元数据服务器(MDS )三个主要部分组成。Lustre 的客户端运行Lustre 文件系统,它和OST 进行文件数据I/O 的交互,和MDS 进行命名空间操作的交互。为了提高Lustre 文件系统的性能,通常Client 、OST 和MDS 是分离,当然这些子系统也可以运行在同一个系统中。其三个主要部分如图所示.
Lustre 文件系统的组成
Lustre是一个透明的全局文件系统,客户端可以透明地访问集群文件系统中的数据,而无需知道这些数据的实际存储位置。客户端通过网络读取服务器上的数据,存储服务器负责实际文件系统的读写操作以及存储设备的连接,元数据服务器负责文件系统目录结构、文件权限和文件的扩展属性以及维护整个文件系统的数据一致性和响应客户端的请求。 Lustre把文件当作由元数据服务器定位的对象,元数据服务器指导实际的文件I/O请求到存储服务器,存储服务器管理在基于对象的磁盘组上的物理存储。由于采用元数据和存储数据相分离的技术,可以充分分离计算和存储资源,使得客户端计算机可以专注于用户和应用程序的请求;存储服务器和元数据服务器专注于读、传输和写数据。存储服务器端的数据备份和存储配置以及存储服务器扩充等操作不会影响到客户端,存储服务器和元数据服务器均不会成为性能瓶颈。
Lustre 的全局命名空间为文件系统的所有客户端提供了一个有效的全局唯一的目录树,并将数据条块化,再把数据分配到各个存储服务器上,提供了比传统SAN 的" 块共享" 更为灵活的共享访问方式。全局目录树消除了在客户端的配置信息,并且在配置信息更新时仍然保持有效。
更多资料请参考 :
Beowulf Introduction and Overview
Platform-lsf
TurboCluster Server
The Mosix Howto,
Eddie ,
Windows hpc
Legion,
Cplant ,
JESSICA2,
Linux HPC Cluster Installation, IBM Redbooks,http://www.redbooks.ibm.com/
HP_UCP ,
EnFuzion,
Resonate,
Apptime .Watchdog ,
Legato ,http://www.legato.com/
High Availability Server ,
Linux FailSafe ,
Lifekeeper ,
TurboLinux Cluster Server,
Cluster Server,
Linux Virtual Server,
Novell Cluster Service,
OSCAR: A packaged Cluster software stack for High Performance Computing, http://www.openclutergroup.org/
Linux-HA Heartbeat System Design, http://www.linux-ha.org
xCAT HOW-TO, http://www.x-CAT.org
MPICH, http://www.mcs.anl.gov/mpi/mpich.
PVM, http://www.epm.ornl.gov/pvm/pvm_home.html
OpenPBS,http://www.openpbs.org/
Maui, http://www.supercluster.org/
Intermezzo,
Coda, http://www.coda.cs.cmu.edu/
GFS,
Lustre,