1、集群的可扩展性及其分布式体系结构集群的可扩展性及其分布式体系结构(1) 介绍这是一个新的关于集群技术的专栏。作者将侧重就集群的可扩展性及体系结构分析、原理论、集群的考量、具体的分析案例(LVS、 beowulf、MOSIX)、集群高可用技术、分布式文件系统等等各个方面为您更加深入的介绍集群系统。本文是第一篇。主要阐述集群起源的概念,分布式系统的定义和目标体现。作者通过一个故事讲述了考虑集群解决方案时需要注意的是:如何正确看待集群,应该从什么角度来考察一个集群系统。解决了集群的这一根本性立场和观点角度,才能利用集群的技术解决现实问题。前言话说天下大势,分久必合,合久必分高端计算的体系结构发展正是
2、遵循着这样一个规律。从金融、电信等大行业的数据集中处理到分布计算处理,再到二次集中和海量计算,趋势和应用显然是在变化,作为技术本身,分区和群集技术正是为适应不断变化的需要而产生的。分而治之分区技术初始于大型主机时代。企业级用户在购买大机后,许多应用都只使用大机的一小部分资源。这时,如果一个企业的生产部门只需要使用这台机器的10%的资源,而且需要比较好的安全性,那么分区技术就能够满足它的要求,将主机的部分处理器和系统资源隔离出来,只利用这些资源组织计算系统,供生产部门使用,其他的计算资源不受任何影响。这是早期的物理分区的概念。分区技术发展到今天,并不只为大型主机服务,因为分布式计算的应用在不断地
3、扩展,在许多方面,高性能的UNIX服务器和IA架构服务器已经在慢慢地取代大机的位置,分区这项技术在这些领域中也有着重要的作用。分区带给人们的是更高的投资回报率和使用率,更加灵活的应用水平,以及动态地使用和分配资源。这些特点通过不同的分区种类来实现,目前分区的种类越来越多,而且越来越细致,更倾向于客户的应用。最典型的分区技术就数我们在PC上使用的多操作系统了,这属于本地物理分区的范畴。而在多机环境中,通过分区可以将不同种群的计算机分割开来(即使几台计算机位于同一个物理位置也可能服务于不同的种群),被分区的计算机还可以在不同的层面上复用,以提高计算机系统的利用率。最常见的情况莫如VPN了,借助安全
4、协议,VPN可以把分散的远程的计算机系统集合成一个逻辑上的局域网,协同完成复杂任务并保证远程通信的安全;而这些计算机可能同那些物理上相近的计算机(比如同一个办公室)再次合并为一个机群,利用空闲时间完成另外一些实时性不高的计算任务。现在来讲讲合集群技术是一种计算机系统之间连接的方式,运用它可以将分散的计算系统连接起来完成原来单独节点的计算系统无法完成的任务,最早的集群系统就是出于这样的并行处理的目的出现的。但是随着计算机性能的发展和网络不安全因素的出现,系统的稳定性和可靠性是人们主要面临解决的问题。人们开始使用集群方式将两台以上的设备连接起来,当整个集群系统中发生单点或者局部多点故障时,集群中其
5、他的计算机将自动来接替出故障设备。最典型的例子就是实现双机热备份。两台一样的计算机系统,使用集群软件连接起来,其中一台作为另一台的备份,当主机系统崩溃时,另一台来接替它的任务。除此以外,利用集群系统的高并行性能进行复杂的科学、工程计算,也是非常有经济价值的做法。对于集群系统来说,计算机的架构是一个非常重要的问题。同种架构的计算机之间,可以比较容易实现集群连接,一般来讲都是由厂商提供的集群软件。对于异构的计算机系统,一般没有特别多的选择,目前类似JAVA的中间件技术可以解决部分跨平台的问题。集群技术可以有效地解决开放系统的稳定、抗压和负载平衡问题。为什么需要集群以往,企业用户在构建信息应用系统时
6、只能在两种计算体系中进行选择,一是基于主机的计算体系,大体上采用的就是我们上面描述的分区方式;另一就是基于客户机/服务器的群集型计算体系。基于主机的计算体系具有良好的系统可伸缩性、可靠性和高性能,但它昂贵的价格迫使用户在系统建设之初就在硬件系统上投入巨大资源,而用户花费巨额资金购买的主机系统也许包含了不少并不需要的功能,造成资源浪费。基于客户机/服务器的群集型计算体系允许用户根据实际需要逐步增加硬件系统,但这种体系的系统毕竟不是真正意义上的集群,缺乏必要的可用性和可管理性,在应用升级和管理方面都需要用户付出巨大的代价,每增加一个服务器/ 客户端的连接就要同时增加两端的管理负担。因此,未来对计算
7、速度、系统可靠性和成本实效性的要求必将促使发展另外的计算机模型来替代上述的计算模型。随着计算机网络的出现,一个新的具有更高性能/ 价格比的体系逐渐成为应用主流-分布式集群计算体系。当用户需要完成任何任务时,分布式集群计算提供了尽可能多的计算机处理能力和数据的透明访问能力,同时实现高性能与高可靠性的目标。集群计算模式是最经济的计算模式。集群系统允许用户把普通商用硬件系统组成机群,并根据需要随时在机群中增加新的硬件,提高系统的伸缩性和可用性,从而能够在价格相对低廉的中低端平台上享用过去只有高端系统才具备的高可伸缩性和高可用性,既提高了系统的性能,同时也降低了成本,实现了更多的计算机=更快速度的目标
8、。人们对集群计算的兴趣日益增加。集群计算的主题是多种多样的,许多研究人员正在研究有关分布式硬件体系结构和分布式系统软件设计的各方面问题以开发利用潜在的集群并行性和集群可用性。集群计算系统(或叫做分布式系统)多种多样并涉及不同的系统体系结构。对一些用户来说,一个集群系统是为解决单个问题而紧密结合在一起工作的多处理机的集合。对另一些用户来说,一个集群系统可能意味着一个由地理上分散的各自独立的处理机组成的计算机网络,这些处理机连接在一起以实现对不同资源的共享。然而,集群这个词在计算机系统中被如此广泛应用以至于它的使用变得有点贬值。许多这方面的混乱来源于缺乏对物理的分布和逻辑的分布的区分。通过区分这两
9、个概念,就可以更准确地描述一个分布式系统的属性。对于分布式集群系统,我们使用以下 定义:在用户看来,一个集群系统是一个单一的普通系统,然而运行在一系列自治处理单元(PE也叫节点)上的系统,每个处理单元(结点)有各自的物理内存空间并且并且通过高速链路或者标准商品化网络连接。结点间通过紧密的合作实现对同一任务的协同计算。系统必须支持任意数量的进程和结点的动态扩展。建立一个集群系统的主要目的在于: * 固有的应用得以保障。集群系统以一种很自然的方式开始存在,例如,在我们的社会中,人们常常以群体的形式出现并彼此共享信息,公司、社团、班级等等都是这样的概念。在从个人计算向集群分布式计算迁移的时候,往往可
10、以保留原有在个人计算系统上的应用,直接将原有的应用重新在新的集群系统中运行,并获得性能的提升。这也是集群出现的一大原因。 * 性能/成本。集群系统的并行性降低了处理的瓶颈,提供了全面改进的性能,也就是说,集群系统提供了更好的性能价格比。 * 资源共享。集群系统能有效地支持不同位置的用户对信息和资源(硬件和软件)的共享。 * 灵活性和可扩展性。集群系统可以增量扩展,并能方便地修改或扩展系统以适应变化的环境而无需中断其运行。 * 实用性和容错性。依靠存储单元和处理单元的多重性,集群系统具有在系统出现故障的情况下继续运行的潜力。 * 可伸缩性。集群系统能容易地扩大以包括更多的资源(硬件和软件)。最近
11、,我们注意到,除了原有的以生产商用专有集群系统为主的厂商仍在发展自己的专有平台集群系统外,几个主要的硬件厂商都在研制并有计划推出基于 Linux的开放源码的集群产品,比如IBM、HP、SGI等等。开放源码界的迅猛发展为集群的出现提供良好的技术舞台,而向TurboLinux、 VALinux等老牌的Linux厂商更是把Linux集群这一高端应用领域作为自己的战略发展方向,不遗余力的加入激烈的市场产品竞争中。涌现在我们面前的则是多种多样的可供选择的集群解决方案,有硬件的也有软件的。那么,如何借助开放源码届丰富的技术资源,实现一个优秀的集群系统呢?首先可以肯定的是:一个优秀的集群系统不可能是一蹴而就
12、的,需要仔细考虑用户的应用环境、业务需求、所能投入的成本还有技术的后继支援。下面,我们从集群技术方面一些比较重要的功能来探讨一个优秀集群系统所应该具备的一些根本性的因素。而在此之前,我们先来看一个可能是最常见的小故事。管理员的故事对于用户来说,怎样看待计算机系统和计算资源是因人而异的。特别是在群集应用环境中,不同的用户需求对资源的要求和侧重点也有所不同。这里有一个故事,发生在一个被频繁访问的小门户站点。网站刚开始运行了一段时间后,情况良好,但是不久后管理员发现用户抱怨响应速度很低。于是,他升级了服务器的CPU和磁盘系统,又加了512M的内存。心想,这会总不会有人再说什么了吧。可是,过了没多久,
13、(当然,我们的这位站点很幸运的又吸引了大量的用户,现在用户数量变成了原来的5倍),情况更糟糕了,在高峰期间有的访问甚至被站点拒绝。这是怎么回事呢?再升级吧,可硬件的升级似乎走到了尽头,我们的管理员再次陷入困境。这里,不幸的管理员遇到了系统瓶颈问题。通过查看日志,我们发现服务器CPU的负荷基本保持在10左右(占用率),但是却有很多请求等待处理。是CPU 不够快吗,显然不是;是磁盘太慢吗,已经用了最快的RAID阵列,平均寻道时间到达5ms,不能再快了;内存不够大吗,主板所能支持的只有4G,已经到了上限。所有的一切已经是极限,再升级下去只好更换到大型机了(那又会是一个无休止的投入)。站点每天仍要接受
14、上百万次甚至上千万次的页面访问,怎么样才能既控制服务器硬件成本又能大幅度提高性能呢?固然,添加高速磁盘阵列可以减少寻道时间,提高响应的速度,或者,使用Cache技术能够加快页面访问效率。但是,一味地依靠扩展单一系统的硬件终究会有上限,磁盘、内存、网络代宽的发展速度远远低于CPU的摩尔定律速度,造成彼此性能的互相牵制。而且,在单机系统种,越到高端的硬件,成本与性能比越是成指数下降(见下图)。解决这样的问题,就有必要从体系结构入手,而不是简单的升级机器。单机系统性能/价格曲线下载 (2.07 KB)2008-10-24 10:31在上面的故事里。对于用户而言(指的是系统管理员和网站用户),服务器是
15、提供web服务的资源,是若干计算、存储、数据的资源集合(查找数据、提供空间)。用户关心的是你的站点的响应速度而非你用了多快的CPU多大的内存。因此,我们从用户的角度出发,不难发现,如何看待你的计算资源,是紧紧和使用者的需求联系在一起的。那么,解决问题的关键就不是一些简单的数字层面上的思考了。沿着用户的需求-提高站点的响应速度,更确切的说缩短web站点响应每个HTTP请求的时间集群的可扩展性及其分布式体系结构(2) 体系结构比较与可扩展性研究(上)这篇文章是集群的可扩展性及其分布式体系结构的第二篇,主要介绍集群计算中可扩展性的主要意义。本文描述了集群常见的几类体系结构和考量集群时的出发点。通过图
16、表的形式,讨论集群系统中几大重要因素之间的相互关系。同时,作为对比,列出一些和集群在体系结构上具有可比性的一些系统如Mpp,SMP等,通过比较,使读者能够掌握集群在体系结构发展中的地位和意义。体系结构的发展过去的几十年里,计算机的发展经历了几代变更。从第一代的真空电子管和继电器存储器计算机到近年以ULSI(超大规模集成电路)为代表的第五代计算机。计算机系统的速度在不断提高,造价和体积却不断减小。系统软件的发展虽然没有硬件系统那么令人瞩目,却也从汇编、机器语言的荒莽时代逐渐步入以跨平台、可扩展、适合分布式计算的第五代编程语言体系。其最主要的代表就是Java,而最有前景的操作系统就是Linux和开
17、放源码运动。今后的计算机系统将是具有更强的能力,更友好的操作界面并借助互联网的分布式超级计算平台。过去,人们普遍认为计算机性能的提高主要是因为生产出了更快更有效的处理器。这种观念受到了并行处理概念的挑战。分而治之的方法使得聚集(Cluster 的由来)的计算系统能够实现令人咂舌的计算能力。近年来昂贵而特制的并行超级计算机向集群的转换趋势越来越强,而高性能工作站标准化组件和网络部件的快速发展成为促成这种转换的驱动因素。并行与可扩展现代计算机的一个公共特点是并行性。不论是计算机的体系结构还是微处理器的发展方向来看,并行性逐渐体现在每一个可能见到的每一个角落。x86体系微处理器的发展就是并行技术发展
18、的一个很好的体现:多流水线、超标量设计都是提高CPU的并行能力的关键。而在集群的体系结构中,更是充分利用了并行性这一特点。我们创建和使用并行计算机主要是为了解决单处理器的速度瓶颈,利用并行技术来提高应用性能(通过优化串行程序)。另一个角度来看,因为并行技术的发展,也大大促进了计算机系统的可扩展性,同时在单位成本控制上也有了可喜的进步,使得基于集群的并行计算系统的性能价格比明显优于独立的计算机系统,比如小型机、和一般的大型主机何谓可扩展性如果能够通过增加资源以满足不断增长的对性能和功能的要求,或者是通过缩减资源,以降低成本,从涵盖硬件和软件的角度上讲,我们可以把符合这种特性的计算机系统称作是可扩
19、展的。可扩展并不是仅仅意味着体积的扩大、数量的增加,它也涵盖了缩减能力。目前日益多见的嵌入式系统就是很好的一个例子,它既是硬件体积、计算能力的缩减,又是软件的缩减(许多嵌入式操作系统往往通过剪裁而来)。因此,看待扩展问题需要从下面的几个观点入手: * 功能性和性能:一个可扩展的系统应该能够提供更好的性能、更多的功能。系统的总体计算能力应该随着资源的增加而按照比例增展。理想的情况是,增长的速度是线性的。 * 成本伸缩:另一方面讲,系统扩展的代价必须是合理的。粗略的标准是,成本的增加应该小于n或者nlogn的一个线性系数。但是结果往往不尽人意。因为在扩展计算系统的时候,不仅仅要做性能的考虑,而且还
20、要考虑系统的可用性、稳定性等等,这些因素都会导致系统的总成本上升。 * 可兼容性:包括硬件、系统软件和应用软件在内的组成部分。我们希望用户原有的程序在不作变动或只作少量的变动后仍可以使用,要求用户购买一套全新的操作系统和重新开发他们的应用代码是不合适的。从部件上看,伸缩通常只涉及到系统的一部分,如果添加更多的处理器或者是将现有的处理器升级到新的一代。新增加的部分应能够与系统的其余部分相兼容。这就是说,原有的存储器、磁盘、互联设备以及外设仍然可以使用。可扩展系统的意义研究可扩展的系统,其主要动机在于寻求一个灵活的、成本可伸缩的计算系统架构方案。如这里的图所展示的,计算机种类在由销售量及性能和成本
21、组成的坐标系统中,形成一座金字塔。金字塔的顶部是那些能够提供万亿次以上性能的超级系统,他们把许多资源集成在一个看上去单一的系统中,采用顶尖的技术构造并行系统,具有最高的性能。计算机分类金字塔下载 (3.18 KB)2008-10-24 10:34可扩展性通过它所提倡的公共的开放系统结构,包括了所有的计算机类。研究集群的可扩展体系结构,目的就是寻求一种可扩展的框架技术,使得上图中大型系统的高端技术能够不断应用于中低端的产品中,从而不断提高计算机的性能价格比水平。像早期的Cray巨型机,当时在超级计算领域具有无可匹敌的地位,但是随着可扩展并行技术和商品化组件的发展,当年巨型机的地位逐渐被并行计算集
22、群代替。由于大部分集群都采用了标准化的商品组件,一方面可以充分享受部件性能的增长(CPU、网络、磁盘容量等都以近似摩尔定律的速度增长);另一方面,在构架上也具有很强的灵活性。比起专有的并行平台,以下的好处就显而易见了: * 因为单个工作站越来越强大,集群节点的计算能力也日益增强。而个人用户对于工作站的使用率往往很低,这样就有大量的闲置计算资源可以利用。 * 能够满足对不同性能和成本的要求。比如,用户可以在起初购买一个低端系统。当他对性能地要求增加时,他可以扩展此系统,而原有的软件和硬件部分仍然可以使用,充分保护了他原有的投资。 * 高端机可以使用低端机的部件以降低成本。例如,由于批量大、PC机
23、使用的是低价的、市场销售的标准件。因为采用的是可扩展系统结构,故超级计算机也能使用这些部件,从而可以降低系统成本。事实上,使用商品化部件:处理器、存储芯片、磁盘、I/O控制器等,已经成为高性能系统开发的趋势。 * 如果成本有效性能够随着生产技术的改进而增加的话,则为高端系统而开发的顶尖技术可能最终向金字塔下方移动,从而改进低端系统的性能。可扩展性的三个考量可扩展性其本身是一个多方面的概念集合。包括了对计算资源可扩展的考量、对应用规模可扩展的考虑以及对技术换代可扩展三个方面的考虑。一、资源的可扩展性考虑资源可扩展性之前,首先要确定资源的真实含义是什么。我们一般的都会把计算机硬件设备当作资源,比如
24、CPU的数量、存储设备、IO设备等等。但从广义的角度理解,资源还应该包括软件,比如操作系统、应用软件等等。甚至,在日益复杂的互联网应用时代,资源的概念延伸到了用户需求的层次上。因此对于提供服务的计算机系统来说,其支持为用户提供服务的一切软、硬件和其他配套的结构,都可以看作资源。因此如果我们从资源角度来考量可扩展性,就可以把目标定义为:通过增加机器规模(既处理器数量)、投入更多的存储部件、升级软件甚至是改变系统的体系结构,从而使系统具有更好的性能或者功能。扩展很容易让人联想到加强硬件设备,其中最明显的方法就是增加机器的处理器的数量。但是不是所有的机器都具备相同的可扩展能力。一个x86的SMP系统
25、最多就只能扩展到64个CPU,;而一台IBM的SP2却可以扩展到最多512个CPU。因此,扩大规模并不是简单的增加部件的数量就能解决问题的。通常,随着CPU数量的增加,包括RAM、总线带宽、网络等子系统也需要随之增加。所以,我们常常看到,由于资源扩展所带来的技术上的障碍,仅仅是增加几个CPU或者其他部件,所花费的代价却远远高于增加的那些CPU本身的价值。那么,谨慎考虑扩展规模所带来的性能价格比的增加,如何有效的利用更大并行性就是非常必要的了。这时,通过RAM的数量,扩展I/O速度,升级网络速度或者改造网络拓扑结构反而能带来意想不到的效果。另一方面,把软件也看作系统资源的话,就要涵盖很广的范围:
26、可以升级新版本的操作系统,使他具有更多功能,支持更多线程、更大的地址空间,有更高效的内核,能够识别更多的新硬件;也可以安装功能强大的中间件以扩展系统的特殊能力;还可以利用运行库来支持诸如消息传递、分布式事务处理等特性。扩展的方法不一而足,也是在研究集群技术时主要考虑的问题。二、应用的可扩展性要充分扩展集群计算系统的能力,不仅资源是要可扩展的,应用程序也必须是可扩展的。这就是说,相同程序在一个可扩展系统上运行时,其性能随规模的扩大成正比例的改进。两个重要的考量是机器规模的可扩展性和问题规模的可扩展性。首先从硬件的角度来考虑机器规模可扩展性这个问题。如果增加处理机的数量,我们系统的性能也会随之成比
27、例地提高吗?假设有一个数据库服务器,处理银行每天几十万的交易和1000万个用户的存款数据库,这样的情况下每秒钟该系统能够处理1000个在线事务。如果系统的处理器增加为原来的两倍,其他前提条件不变,它能够提升到每秒2000个在线事务的处理速度吗?如果可以或者是接近的话,我们应当庆幸,该系统具有良好的可扩展性。当然,除了增加处理器的数量,还可以是存储器或者I/O设备等等。而考虑问题规模可扩展性这个角度则是以硬件环境的相对不变为基础的。如果仅仅是改变应用环境的工作负载,求解更大问题时,系统的性能表现又会如何。仍然以上述的情况为例,如果数据库里的储户数据达到1亿个,每日处理的交易再上升一个数量级,那系
28、统还能够保持每秒1000TPS的性能吗?在研究应用可扩展问题的时候,我们将会发现:应用的限制最终无法通过简单的增加机器资源的方法加以突破。只有对应用程序本身和系统体系结构进行重大修改后,才能使用更多处理器和处理更多的问题。我们应该将在一台特定机器上求解一个问题作为组合来加以考虑。有时将这种应用 / 机器对视为一个系统。如果更换应用或者更换软、硬件系统的体系结构,考虑可扩展的标准和角度就有很大的不同。应用可扩展性不只依赖于处理器规模和问题规模。它也依赖于机器的存储器容量、I/O能力、以及通信能力。所有这些因素一起影响着可扩展性。我们将在今后的篇章讨论这些问题。总的来说,考虑应用可扩展问题,需要从
29、更加广义的角度上看,而不仅仅是上述的两个方面。那么我们就来看一下可扩展的另一个重要的方面-技术换代的可扩展性。三、技术换代的可扩展性技术换代可扩展性是局部概念而非全局概念。这里主要是指计算机系统能够随着技术的变更、换代,在保持原有的可用性基础上,通过升级部件的手段提高系统的性能或者功能。这里的升级可能是我们常见的更换更高主频的CPU,也可能是增加系统的内存数量,还可能是升级操作系统到更新的版本。其实这种事我们在WinTel时代常干,时不时换一下CPU或者内存什么的,但是不影响原来的系统应用,而且往往性能有很大的提升。总的看来,计算机系统中CPU的发展速度最快,而内存的速度和单位容量的提升就慢一
30、些,硬盘就会更慢(受到机械的限制),而最慢的就数程序设计语言了,到现在为止,我们都还在用类C编写关键的大型系统特别是集群系统应用。并行系统的空间也是在扩展集群系统时的一个重要考量因素。新的设备是否能够容入原有的机箱内,扩展的需求是否能通过现有的互联技术得到满足,跨地域分布式技术的发展是否能给我们带来更大更强的系统,这些问题都缠绕在技术换代的思考过程中。并行技术发展初期,系统大都是同构的,像具有完全一致内核的MPP系统,而集群也都是先在同构的框架下实现。而为了更好利用给各类的异构计算资源,势必需要充分支持异构的并行集群。那么,异构可扩展性这一性质就反映了一个系统通过集成由不同设计者和厂商所提供的
31、硬件和软件部分而进行扩展的能力。异构扩展提倡使用具有标准、开放系统结构和接口的部件。在软件领域,我们也将它称为可移植性。追求异构可扩展性的代价是巨大的。除了借助标准协议和通讯平台消除不同硬件系统之间的巨大差异,还要花费更多的资源处理现有应用的平滑移植。早期的COBOL应用在进行移植的时候就遇到很多问题,以至于现有的系统中还存留大量的这种老式语言,也许Java集群出现会是解决这一问题的一个契机。集群的可扩展性及其分布式体系结构(2) 体系结构比较与可扩展性研究(下)这篇文章是集群的可扩展性及其分布式体系结构第二篇的下半部分,将继续介绍常见的几类并行计算体系结构、可扩展与单一系统映象、集群的重要指标等内容。可扩展的并行计算体系结构首先,我们先来看一下计算机系统体系结构发展的几个主要类型。每种体系结构的差别并不大,关键在于互联技术、结点的复杂度和耦合程度的不同。在集群计算和分布式系统中,以下这三种体系结构是比较具有代表性的。 * 无共享体系结构下载 (2.41 KB)2008-10-24 10:39 无共享体系结构 (目前大多数集群采用的方式。每个节点都是独立的PC或者工作站) 我们研究的集群系统大多数属于这一类的体系结构。集群的每一个结点都是完整独立的操作系统和硬件设备集合。结点之间通过局域网或者开关阵列以松耦合的方式连接起来,彼此分享结点的部
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1