集群(cluster)是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的
核心技术。
技术简介
集群技术本身有很多种分类,市场上的产品也很多,都没有很标准的定义。一般可以分为以下几种:
基于冗余的集群
严格来讲,这种
冗余系统并不能叫做真正的
集群,因为它只能够提高系统的可用性,却无法提高系统的整体性能。
有以下几种类型。
A.容错机
特点是在一台机器内部对其所有的硬件部件都进行
冗余(包括硬盘、控制卡、总线、电源等等)。
能够基本做到与软件系统无关,而且可实现无缝切换,但价格极其昂贵。
典型市场产品:Compaq NonStop(Tandem),Micron(NetFrame),Straus
B.基于系统镜像的双机系统
特点是利用双机,将系统的数据和运行状态(包括内存中的数据)进行镜像,从而实现
热备份的目的。
能够做到无缝切换,但因为采用软件控制,占用系统资源较大,而且由于两台机器需要完全一样的配置,所以
性能价格比太低。
典型市场产品:Novell SFT III,Marathon Endurance 4000 for NT
C.基于系统切换的双机系统
特点是利用双机,将系统的数据(仅指
硬盘数据)进行
镜像,在
主机失效的情况下从机将进行系统一级的切换。
性能价格比适中,但无法实现无缝切换。
典型市场产品:Legato(Vinca) StandbyServer for NetWare,Savoir(WesternMicro)SavWareHA(Sentinel),Compaq StandbyServer
基于应用程序切换的集群
特点是当集群中的某个
节点故障时,其它节点可以进行应用程序一级的切换,所以所有节点在正常状态下都可以对外提供自己的服务,也被成为静态的
负载均衡方式。
性能价格比高,但也无法实现无缝切换,而且对单个应用程序本身无法做到负载均衡。
典型市场产品:Legato(Vinca) Co-StandbyServer for NT,Novell HA Server,Microsoft Cluster Server,DEC Cluster for NT,Legato Octopus,Legato FullTime,NeoHigh Rose HA,SUN Clusters,Veritas Cluster Server (FirstWatch),CA SurvivIT,1776
基于并行计算的集群
主要应用于科学计算、大任务量的计算等环境。有并行编译、进程通讯、任务分发等多种实现方法。
典型市场产品:TurboLinux enFuzion,Beowulf,Supercomputer Architectures,Platform
基于动态负载均衡的集群
所有节点对外提供相同的服务,这样可以实现对单个应用程序的负载均衡,而且同时提供了
高可用性。
典型市场产品:TurboCluster Server,Linux Virtual Server,F5 BigIP,Microsoft Windows NT Load Balance Service
产品分类
HA集群
实现高可用性,但对单个应用性能没有提高,市场上大部分产品都是属于这类,技术上也较简单。
IP负载均衡集群
利用IP技术实现对通用IP应用的支持。这种技术并不是很新,最早是在硬件上面采用的,Linux出现后才有了很多纯软件的模式,这也是open source带来的好处吧
并行计算集群
包括了一些象PVM,beowulf这样的信息传递机制和API库,也有任务调度产品,当然技术上最难的是并行编译/并行系统等更智能化的产品
应用负载均衡集群
虽然cluster的最高目的是实现真正的与应用程序无关的动态负载均衡,但由于技术上的限制,现在都只能在特殊的应用中实现,需要修改应用程序,所以并没有通用产品,大多是厂商有自己的并行版本。例如oracle paraller server.
以上基本是按照工程或者说产品的角度划分的,和技术上划分应该有一定区别。
目的
1提高性能
一些计算密集型应用,如:天气预报、核试验模拟等,需要计算机要有很强的运算处理能力,现有的技术,即使普通的大型机器计算也很难胜任。这时,一般都使用
计算机集群技术,集中几十台甚至上百台计算机的运算能力来满足要求。提高处理性能一直是集群技术研究的一个重要目标之一。
2降低成本
通常一套较好的集群配置,其软硬件开销要超过100000美元。但与价值上百万美元的专用超级计算机相比已属相当便宜。在达到同样性能的条件下,采用计算机集群比采用同等运算能力的
大型计算机具有更高的性价比。
3提高可扩展性
用户若想扩展系统能力,不得不购买更高性能的
服务器,才能获得额外所需的
CPU和
存储器。如果采用集群技术,则只需要将新的服务器加入集群中即可,对于客户来看,服务无论从连续性还是性能上都几乎没有变化,好像系统在不知不觉中完成了升级。
4增强可靠性
集群技术使系统在故障发生时仍可以继续工作,将系统停运时间减到最小。集群系统在提高
系统的可靠性的同时,也大大减小了故障损失。
系统结构
根据典型的集群体系结构,集群中涉及到的关键技术可以归属于四个层次:
(1)网络层:
网络互联结构、
通信协议、信号技术等。
(2)节点机及操作系统层高性能客户机、分层或基于
微内核的操作系统等。
(3)集群系统管理层:资源管理、资源调度、
负载平衡、并行IPO、安全等。
(4)
应用层:并行程序开发环境、串行应用、并行应用等。
集群技术是以上四个层次的有机结合,所有的相关技术虽然解决的问题不同,但都有其不可或缺的重要性。
集群系统管理层是集群系统所特有的功能与技术的体现。在未来按需(On Demand)计算的时代,每个集群都应成为业务
网格中的一个节点,所以自治性(自我保护、自我配置、自我优化、自我治疗)也将成为集群的一个重要特征。自治性的实现,各种应用的开发与运行,大部分直接依赖于集群的系统管理层。此外,系统管理层的完善程度,决定着集群系统的易用性、稳定性、可扩展性等诸多关键参数。正是集群管理系统将多台机器组织起来,使之可以被称为“集群”。
调度方法
进程迁移
进程迁移就是将一个进程从当前位置移动到指定的处理器上。它的基本思想是在进程执行过程中移动它,使得它在另一个计算机上继续存取它的所有资源并继续运行,而且不必知道运行进程或任何与其它相互作用的进程的知识就可以启动进程迁移操作,这意味着迁移是透明的。进程迁移是支持
负载平衡和高
容错性的一种非常有效的手段。对一系列的负载平衡策略的研究表明:进程迁移是实现负载平衡的基础,进程迁移在很多方面具有适用性。
(1)动态负载平衡。将进程迁移到负载轻或空闲的节点上,充分利用可用资源,通过减少节点间负载的差异来全面提高性能。
(2)容错性和高可用性。某节点出现故障时,通过将进程迁移到其它节点继续恢复运行,这将极大的提高
系统的可靠性和可用性。在某些关键性应用中,这一点尤为重要。
(3)并行文件IO。将进程迁移到
文件服务器上进行IO,而不是通过传统的从文件服务器通过网络将数据传输给进程。对于那些需向文件服务器请求大量数据的进程,则将有效地减少通讯量,极大地提高效率。
(4)充分利用特殊资源。进程可以通过迁移来利用某节点上独特的硬件或软件能力。
(5)内存导引机制。当一个
节点耗尽它的主存时,内存导引机制将允许进程迁移到其它拥有空闲内存的节点,而不是让该节点频繁地进行
分页或和外存进行交换。这种方式适合于负载较为均衡,但内存使用存在差异或内存物理配置存在差异的系统。
进程迁移的实现角度
进程迁移的实现复杂性及对OS的依赖性阻碍了进程迁移的广泛使用,尤其是对透明的进程迁移的实现。根据应用的级别,进程迁移可以作为OS的一部分、
用户空间、系统环境的一部分或者成为应用程序的一部分。
(1)用户级迁移:用户级实现较为简单,软件开发和维护也较为容易,因此,现有的很多系统都是采用用户级实现,如Condor和Utopia。但由于在用户级无法获得Kernel的所有状态,因此,对于某类进程,无法进行迁移。另外,由于Kernel空间和User空间之间存在着壁垒,打破这个边界获得Kernel提供的服务需要巨大的开销。因此,用户级实现的效率远远低于
内核级实现。
(2)应用级迁移:应用级迁移的实现较为简单,可移植性好,但是需要了解应用程序语义并可能需对应用程序进行修改或重新编译,透明性较差,这方面的系统有Freedman、Skordos等。
(3)内核级迁移:基于内核的实现可以充分利用OS提供的功能,全面的获取进程和OS状态,因此实现效率较高,能够为用户提供很好的透明性。但是由于需要对OS进行修改,实现较为复杂。这方面的典型系统有
MOSIX和Sprite系统。
进程迁移的主要工作就在于提取进程状态,然后在目的节点根据进程状态再生该进程。在现实中,一个进程拥有很多状态,并且随着操作系统的演化,进程状态也越来越多样。
一般来说,一个进程的状态可以分为以下几类:
①进程
执行状态。表示当前运行进程的处理器状态,和机器高度相关。包括内核在
上下文切换时保存和恢复的信息,如通用和
浮点寄存器值、栈指针、条件码等。
②进程控制。操作系统系统用来控制进程的所有信,一般包括
进程优先级、进程标识,
父进程标识等。一旦系统编排了进程控制信息,进程迁移系统必须冻结该进程的运行。
③进程Memory状态和进程
地址空间。包括进程的所有
虚存信息,进程数据和进程的
堆栈信息等,是进程状态的最主要的一部分。
④进程的消息状态。包括进程缓冲的消息和连接(Link)的控制信息。进程迁移中通讯连接的保持以及迁移后连接的恢复是进程迁移中一项较有挑战意义的问题。
⑤文件状态。进程的文件状态包括
文件描述符和文件缓冲符。保持文件的Cache一致性和进程间文件同步访问也是进程迁移机制需要着重考虑的。
区别
模拟集群与数字集群不同的地方,说简单点就是:模拟集群在单信道比
数字对讲机用户容量要小,语音没有数字对讲机清楚,只能实现简单的数据功能。
数字集群分TDMA和FDMA两种,TDMA是提供给专业用户使用的,是时分的制式。FDMA是提供给民用的,是频分的制式。
FDMA和模拟对讲机相比,除了可以把信道间隔做得更窄(模拟的是25KHz,数字的是12.5KHz两时隙或6.25KHz四时隙),单信道用户量更大外,对用户来说并没有太大的更新体验。
TDMA制式的对讲机和模拟对讲机相比,除了单信道用户容量更大外,还可以现实同频中转。模拟系统中,要实现中转,必须要有收、发频率一对。而在
TDMA时分数字系统中,可利用数字技术,通过时隙的转换来实现中转。例如:当中转台收到A时隙的数据时,同时转发出去的数据就是在B时隙上实现的。
现在在中国还没有自己的数字对讲机标准。现在
MOTOROLA的数字对讲机是TDMA制式的,
ICOM和建伍的数字对讲机是FDMA制式的。
市场前景
集群技术已经发展了多年,其中的分支也非常多。目前集群技术正逐渐走向
分层结构,以后也肯定会有专门用户前端、后端的集群产品出现。
随着计算机应用地位的逐渐提升,系统安全和重要性的日益增加,集群技术必将会有着极为广阔的应用前景。