认识集群

发表于:2008-02-03来源:作者:点击数: 标签:集群
何谓“集群”? 近几年,人们越来越多的听到集群(Cluster)这个概念,并且有越来越多的集群在实际生活中得到应用。 通俗地讲,集群是指一组计算机以某种方式联结起来并协同完成特定任务的系统。在这个系统中,计算机可以是同构的(如目前最常使用的基于x86构架
何谓“集群”?

  近几年,人们越来越多的听到集群(Cluster)这个概念,并且有越来越多的集群在实际生活中得到应用。

  通俗地讲,集群是指一组计算机以某种方式联结起来并协同完成特定任务的系统。在这个系统中,计算机可以是同构的(如目前最常使用的基于x86构架的PC服务器),也可以是不同构的(如混合采用PC服务器及RISC服务器);而系统内各计算机之间可采用以太网或专用网络连接。一组计算机要成为集群的一个必要条件是它们要协同工作完成特定任务。

  从用户的角度,集群就像是一台具有强大处理能力的服务器。在集群内部,各服务器可能承担不同的任务,但我们可以把它们统称为节点机。

  为什么使用集群

  随着计算机的广泛应用,需要处理的信息量越来越大,人们对于计算机的要求也越来越高,各种性能更高的计算机不断的被研制及应用,如SMP(对称多处理器)计算机、MPP(大规模并行处理)计算机等。这些计算机有很高的配置(如大内存、海量存储、可多达上千个的处理器等),具有很高的处理能力。但与这些计算机的高性能相对应的是它们高昂的价格。

  当一台服务器在使用过程中已不能通过增加处理器、扩充内存等方法满足用户的需求时,传统的方法是使用一台新的服务器来替换原服务器,新服务器比原服务器有更好的处理能力。然而这种升级方式存在着多方面的缺点。   当服务器不能满足服务的要求时,就需要系统升级,使用性能更强大的服务器。服务的效能最终取决于这台服务器的性能。在升级过程中,服务可能不得不中断。

  升级后,服务完全由新服务器承担,原服务器不会再参与服务,这就造成了资源浪费。当然也可以用旧服务器承担其它服务。

  对服务器的可靠性有很高要求。由于服务是由一台服务器提供,所以当这台服务器发生故障时,对外服务就会中断,即存在着单点失效问题。

  使用更多的处理器可以提高计算机的性能,但随着处理器数目的增加,计算机的复杂程度急剧增加,计算机的价格也会迅速提高。高端服务器的价格是多数用户难以承受的。   随网络技术的进步以及处理器性能的提高,越来越多的人开始用相对廉价的以太网等通用网络系统,把相对便宜的服务器/工作站连接起来组成集群使用,从而以较少的代价获得较高的性能。

  集群的分类

  根据所要完成任务的不同,通常把集群分为三种基本类型,包括高可用(High-Availability)集群、负载均衡(Load balance)集群及高性能(High Performance)集群。

  高可用集群

  有许多应用程序都必须是一天24小时不停地运转,如各大网站的Web服务器、数据中心、远程通讯转接器、医学与军事监测仪以及股票处理机等,对这些应用程序而言,暂时的停机都会导致数据的丢失和灾难性的后果。高可用集群正适用于这种情况:它利用两台(或更多)有相同服务的服务器,实现集群服务的高冗余度,对外提供不间断的服务。

  集群系统的每个服务都有主服务器与(一台或多台)备用服务器,服务由主服务器处理,而备用服务器处于等待状态;集群内各服务器都运行heartbeat程序,使用以太网、串口、共享存储等方式相互发送信息,以检测其它服务器的运行状况;当备用服务器发现主服务器不能正常工作时,它会自动接管主服务器的服务继续对外服务;当主服务器恢复正常时,备用服务器又可把服务自动交还主服务器处理;集群的服务仅会在服务器切换过程中可能有短暂中断。

  任一时刻,高可用集群的任一服务只能由一台服务器提供,但可以有多个备用服务器,更多的备用服务器意味着更高的冗余度。高可用集群的不同服务器可以是不同服务的主服务器,并同时也可以是其它多个服务器的备用服务器。集群对某一服务的处理能力相当于单台服务器的处理能力。

  负载均衡集群

  负载均衡集群可使负载在集群中尽可能平均地分摊处理,充分利用集群内各节点机的处理能力,提高对任务的处理效率。这种集群非常适合于需要运行同一组应用程序的大量用户,每个节点都可以处理一部分负载,并且可以在节点之间动态分配负载以实现平衡。

  在这种集群中,同一任务或服务由多个节点共同承担,集群的处理能力是这些节点机处理能力之和。由于集群内有多个节点可完成同一任务,当某一节点发生故障时,其它节点仍可继续工作,从而保证了服务的连续性,所以这种集群也有一定的高可用性。

  根据所承担任务的不同,负载均衡集群又可进一步分为面向作业处理的批处理型负载均衡集群及面向网络服务的网络流量型负载均衡集群。

  批处理负载均衡集群一般利用批处理作业管理系统,如LSF、PBS等。它们不断监测集群内各节点机的负载情况,把作业分配到负载较轻的结点进行处理,加快处理速度,提高集群的使用效率。

  网络流量负载均衡集群主要面向网络服务,如Web、Mail等。集群中的服务器分为两类Director(网络流量负载均衡服务器)与Realserver(实际服务器)。Director是集群的核心,它接收来自用户的网络请求,根据集群内各服务器的负载情况把这些请求转发给适当的服务器处理。Realserver是集群内负责提供真实服务的服务器,完成实际的处理工作。通过把网络流量在集群内较均衡的分配,加快了对用户请求的响应速度。

  高性能集群主要用于处理复杂的计算问题,应用在需要大规模科学计算的环境中,如天气预报、石油勘探与油藏模拟、分子模拟、基因测序等。高性能集群上运行的应用程序一般使用并行算法,把一个大的普通问题根据一定的规则分为许多小的子问题,在集群内的不同节点上进行计算,而这些小问题的处理结果,经过处理可合并为原问题的最终结果。由于这些小问题的计算一般是可以并行完成的,从而可以缩短问题的处理时间。

  高性能集群在计算过程中,各节点是协同工作的,它们分别处理大问题的一部分,并在处理中根据需要进行数据交换,各节点的处理结果都是最终结果的一部分。高性能集群的处理能力与集群的规模成正比,是集群内各节点处理能力之和,但这种集群一般没有高可用性。

  “集群”的由来

  集群的出现已有一段历史,早在二十世纪七八十年代,美国DEC公司和Tandem计算机公司就开始了集群的研究工作,开发了基于VMS操作系统的VMScluster集群系统,但它仅限于在DEC的VAX系列与Alpha系列服务器上使用。随着互联网络技术的发展与应用,各种不同构架的集群相继出现,并得到了广泛的应用。截止到2003年6月24日,最新发布的世界最快的(Linpack值)前500名计算机排名(TOP500)中,有很多集群系统(129台,占总数的大约30%),如排名第二的是HP公司基于Alpha系统的集群,第三名是Linux NetworX的基于Intel Xeon的Linux 集群。

  集群的七大优势

  集群系统提出之后发展得十分迅猛,已成为目前研究的热点。集群受到广泛关注的原因是多方面的。其中之一就是它可以用商品处理器和商品网络方便地构造。另外,它还有许多过去的并行系统不可比拟的优势。


  图 集群的结构

  一、投资风险小。传统的大规模并行处理机比较昂贵,如果性能不好就等于浪费了大量资金。而集群即使作为并行系统效果不好,它的每个结点仍可以作为高性能微机使用,不会浪费资金。

  二、性能价格比高。传统的并行机由于生产批量小往往价格昂贵。而集群基本上使用市售的商品化部件,价格较低。集群整体的性能可达GFlops量级,已经接近一些MPP的水平。

  三、系统的开发周期短,集群的硬件都是商用的,开发的重点在通信机制和并行编程环境上。

  四、编程方便,软件继承性好。在集群系统中用户无需学习新的并行程序设计语言。只需在常规的C、C++、Fortran串行程序中插入少量通信原语,即可使其在集群上运行。

  五、系统结构灵活。不同结构、不同性能、不同操作系统的工作站都可以连接起来构成集群系统。这样用户就可以充分利用现有设备以及闲散的计算机,用少量投资获得较大的计算能力。

  六、通过把个人工作站(或微机)连接成集群,可在个人工作站空闲时给其分配任务,当工作站被使用时再回收任务和结果,可以充分利用分散的计算资源。

  七、可扩展性好。只需要很少的配置工作就可以方便地向集群加入或减少节点,随时根据服务要求改变系统的处理能力,并且在这个改变过程中,系统不必停机,服务不会中断。

  集群的结构

  集群是一种分布存储的并行系统,属于NORMA结构,各结点通信主要使用消息传递方式。集群与MPP的主要区别有:集群的每个结点都是一个完整的计算机系统,包括CPU、内存、硬盘,但可能没有显示器、键盘、鼠标等外围设备,这样的结点称为“无头工作站”;MPP的每个结点内不一定有硬盘。集群的结点间通常使用低成本的商品化网络相连,如以太网、ATM、Myrinet等,而MPP使用专门定制的网络,这个特征被认为是集群与MPP最主要的区别。集群结点与系统级网络的网络接口是连接到结点内的I/O总线上的,属于松耦合;而MPP的网络接口是连到结点内的存储总线上的,属于紧耦合。集群的每个结点上驻留有完整的操作系统;而MPP的结点内通常只有操作系统的微核。

  集群系统目前主要有两类:第一类是以IBM SP为代表的SMP集群,吸收集群的技术和思想,节点采用高性能服务器,软件针对硬件作了大量优化,系统性能较高,可扩展性好。2002年11月TOP500前10名中,这类系统占了7台。另一类是用PC服务器为节点,多采用自由软件,强调软硬件的集成,系统的性能价格比较高。目前已有多套该类系统峰值浮点运算速度超过每秒万亿次。如Linux NetworX用2048个主频2.4GHz的P4构成的MCR Linux Cluster峰值性能是11TFlops。2002年11月TOP500前10名中,这类系统有2台。

  多种关键技术

  高速宽频带互联网络和高速通信机制:要实现一个高性能的并行系统,不仅需要高性能的计算结点,同时还需要一个高带宽、低延迟网络系统的支持,以减小通信处理开销。   容错计算技术:并行系统随着规模的不断扩大,其在计算过程中发生故障的几率会指数增长。系统在发生各种故障时会导致本次并行计算的彻底失败,故障前的大量计算不再可用。因此,为了提高系统的可用性和容错性能,必须考虑并行程序运行回卷恢复和进程迁移系统。

  交互式并行编译:计算机发展到今天,已积累了大量的应用软件,要把这些软件人工改写成功能等价的并行软件是一件工作量极其庞大、也很繁锁的工作。用户都迫切要求对现有的应用软件不作任何改动,就能在并行系统上有效地运行,设计和实现一个并行化编译系统来达到上述目的。但全自动并行化系统生成的并行程序的加速比仍然不能令人满意。其原因在于相关性分析算法、数据划分算法和通信生成算法还不能有效地处理这些应用程序的复杂性。   并行调试工具:并行程序的调试远比串行程序复杂得多,利用串行程序的调试技术,不能完全解决并行程序调试中所出现的运行行为的不确定性、全局状态的控制、死锁的检测等问题。为此,设计和实现一个并行调试工具是十分重要的。

  并行程序设计开发环境:并行处理技术得发展很快,各种类型的并行机纷纷上市。但影响并行机推广使用的一个最重要障碍,是在并行机上编写、编译链接和调试程序比较困难,而并行计算机缺乏图形化的集成环境。设计和实现一个界面更加友好、功能更加丰富的并行程序集成开发环境, 将是集群计算机系统能否推广实用的关键之一。目前集群系统上广泛使用的并行程序设计环境有PVM、MPI、Express、P4等。它们都是基于消息传递方式。

  智能资源管理与分配:在并行处理系统中,要想充分利用高度并行的系统资源,提高整个系统的吞吐率,缩短单个任务的响应时间,需要智能化资源管理与调度技术的支持。设计和实现一种对用户透明的动态负载平衡系统,以增强并行程序设计环境的功能对集群计算机系统极其重要。负载平衡系统将自动实现应用程序在并行系统上平衡地运行,从而使并行系统的资源利用率和吞吐率得到明显提高,而不影响系统的可扩展性能。

  并行文件系统:在高性能并行计算系统中,文件系统的I/O处理能力对整个系统的性能有着重要的影响,尤其对于一些大规模的I/O密集型应用,文件系统更是决定性的因素。为了提高整体系统的吞吐率和缩短文件读写的响应时间,必须有一个透明的、可扩展的、高可用的、高性能并行文件系统。

  可视化技术:对并行计算过程的可视化监测是分析、改进其效率的有效手段。大规模、多维数据的处理和分析是近年来可视化技术的一个重要研究方向。建立一个并行计算过程可视化系统, 对节点负载平衡、任务调度和通讯同步等复杂信息进行描述、显示和分析,提供良好的图形交互界面,直观显示、比较各类系统信息;对系统资源的消耗很小,不致影响所监测的并行计算过程。

  单一系统映像系统:目的是将整个机群系统虚拟为一个统一的系统,使用户感觉不到各工作站的存在,而好像就在使用一台普通的计算机。单一系统映像系统包括多方面的内容,例如单一入口点、单一文件层次结构、单一I/O空间、单一网络、单一作业管理系统、单一存储空间和单一进程空间等。

原文转自:http://www.ltesting.net