1目的编辑
1 提高性能
一些计算密集型应用,如:天气预报、核试验模拟等,需要计算机要有很强的运算处理能力,现有的技术,即使普通的大型机其计算也很难胜任。这时,一般都使用
计算机集群技术,集中几十台甚至上百台计算机的运算能力来满足要求。提高处理性能一直是集群技术研究的一个重要目标之一。
2 降低成本
通常一套较好的集群配置,其软硬件开销要超过100000美元。但与价值上百万美元的专用
超级计算机相比已属相当便宜。在达到同样性能的条件下,采用
计算机集群比采用同等运算能力的
大型计算机具有更高的性价比。
3 提高可扩展性
用户若想扩展系统能力,不得不购买更高性能的
服务器,才能获得额外所需的CPU 和
存储器。如果采用集群技术,则只需要将新的
服务器加入集群中即可,对于客户来看,服务无论从连续性还是性能上都几乎没有变化,好像系统在不知不觉中完成了升级。
4 增强可靠性
2分类编辑
1 科学集群
科学集群是
并行计算的基础。通常,科学集群涉及为集群开发的并行
应用程序,以解决复杂的科学问题。科学集群对外就好像一个
超级计算机,这种超级计算机内部由十至上万个独立处理器组成,并且在公共消息传递层上进行通信以运行并行
应用程序。
2 负载均衡集群
负载均衡集群为企业需求提供了更实用的系统。负载均衡集群使负载可以在
计算机集群中尽可能平均地分摊处理。负载通常包括
应用程序处理负载和
网络流量负载。这样的系统非常适合向使用同一组
应用程序的大量用户提供服务。每个
节点都可以承担一定的处理负载,并且可以实现处理负载在节点之间的动态分配,以实现
负载均衡。对于
网络流量负载,当网络服务程序接受了高入网流量,以致无法迅速处理,这时,网络流量就会发送给在其它节点上运行的网络服务程序。同时,还可以根据每个节点上不同的可用资源或网络的特殊环境来进行优化。与科学计算集群一样,
负载均衡集群也在多节点之间分发计算处理负载。它们之间的最大区别在于缺少跨节点运行的单并行程序。大多数情况下,
负载均衡集群中的每个节点都是运行单独
软件的独立系统。
3
高可用性
集群
当集群中的一个系统发生故障时,集群
软件迅速做出反应,将该系统的任务分配到集群中其它正在工作的系统上执行。考虑到计算机硬件和
软件的易错性,高可用性集群的主要目的是为了使集群的整体服务尽可能可用。如果高可用性集群中的主节点发生了
故障,那么这段时间内将由次节点代替它。次节点通常是主节点的
镜像。当它代替主节点时,它可以完全接管其身份,因此使系统环境对于用户是一致的。
高可用性集群使
服务器系统的运行速度和响应速度尽可能快。它们经常利用在多台机器上运行的
冗余节点和服务,用来相互跟踪。如果某个节点失败,它的替补者将在几秒钟或更短时间内接管它的职责。因此,对于用户而言,集群永远不会停机。
在实际的使用中,集群的这三种类型相互交融,如高可用性集群也可以在其节点之间均衡用户负载。同样,也可以从要编写
应用程序的集群中找到一个并行集群,它可以在
节点之间执行
负载均衡。从这个意义上讲,这种集群类别的划分是一个相对的概念,不是绝对的。
3系统结构编辑
根据典型的集群
体系结构,集群中涉及到的关键技术可以归属于四个层次:
(4)
应用层:并行程序开发环境、串行应用、并行应用等。
集群技术是以上四个层次的有机结合,所有的相关技术虽然解决的问题不同,但都有其不可或缺的重要性。
集群系统管理层是集群系统所特有的功能与技术的体现。在未来按需(On Demand)计算的时代,每个集群都应成为业务
网格中的一个节点,所以自治性(自我保护、自我配置、自我优化、自我治疗)也将成为集群的一个重要特征。自治性的实现,各种应用的开发与运行,大部分直接依赖于集群的系统管理层。此外,系统管理层的完善程度,决定着
集群系统的易用性、稳定性、可扩展性等诸多关键参数。正是集群管理系统将多台机器组织起来,使之可以被称为“集群”。
4调度方法编辑
1 进程迁移
进程迁移就是将一个进程从当前位置移动到指定的处理器上。它的基本思想是在进程执行过程中移动它,使得它在另一个计算机上继续存取它的所有资源并继续运行,而且不必知道运行进程或任何与其它相互作用的进程的知识就可以启动进程迁移操作,这意味着迁移是透明的。进程迁移是支持
负载平衡和高
容错性的一种非常有效的手段。对一系列的
负载平衡策略的研究表明:进程迁移是实现负载平衡的基础,进程迁移在很多方面具有适用性。
(1)动态
负载平衡。将进程迁移到负载轻或空闲的节点上,充分利用可用资源,通过减少节点间负载的差异来全面提高性能。
(4)充分利用特殊资源。进程可以通过迁移来利用某节点上独特的硬件或
软件能力。
(5)内存导引机制。当一个
节点耗尽它的主存时,内存导引机制将允许进程迁移到其它拥有空闲内存的节点,而不是让该节点频繁地进行
分页或和外存进行交换。这种方式适合于负载较为均衡,但内存使用存在差异或内存物理配置存在差异的系统。
2 进程迁移的实现角度
(1)用户级迁移:用户级实现较为简单,
软件开发和维护也较为容易,因此,现有的很多系统都是采用用户级实现,如Condor和Utopia。但由于在用户级无法获得Kernel的所有状态,因此,对于某类进程,无法进行迁移。另外,由于Kernel空间和User空间之间存在着壁垒,打破这个边界获得Kernel提供的服务需要巨大的开销。因此,用户级实现的效率远远低于
内核级实现。
(2)应用级迁移:应用级迁移的实现较为简单,可移植性好,但是需要了解
应用程序语义并可能需对应用程序进行修改或重新编译,透明性较差,这方面的系统有Freedman、Skordos等。
(3)
内核级迁移:基于内核的实现可以充分利用OS提供的功能,全面的获取进程和OS状态,因此实现效率较高,能够为用户提供很好的透明性。但是由于需要对OS进行修改,实现较为复杂。这方面的典型系统有
MOSIX和Sprite系统。
进程迁移的主要工作就在于提取进程状态,然后在目的节点根据进程状态再生该进程。在现实中,一个进程拥有很多状态,并且随着
操作系统的演化,进程状态也越来越多样。一般来说,一个进程的状态可以分为以下几类:①进程
执行状态。表示当前运行进程的处理器状态,和机器高度相关。包括内核在
上下文切换时保存和恢复的信息,如通用和
浮点寄存器值、栈指针、条件码等。②进程控制。
操作系统系统用来控制进程的所有信,一般包括
进程优先级、进程标识,
父进程标识等。一旦系统编排了进程控制信息,进程迁移系统必须冻结该进程的运行。③进程Memory状态和进程
地址空间。包括进程的所有
虚存信息,进程数据和进程的
堆栈信息等,是进程状态的最主要的一部分。④进程的消息状态。包括进程缓冲的消息和连接(Link)的控制信息。进程迁移中通讯连接的保持以及迁移后连接的恢复是进程迁移中一项较有挑战意义的问题。⑤文件状态。进程的文件状态包括
文件描述符和文件缓冲符。保持文件的Cache一致性和进程间文件同步访问也是进程迁移机制需要着重考虑的。