计算机群集技术概述(二)转载


  二、并行应用程序技术


应用程序决定了计算过程中的指令流和数据流,所以应用程序能否并行化是能否利用并行计算机的硬件架构的关键所在。以下是一些对并行应用程序常用技术的简单介绍。


■ 数据和功能并行化:

这时将计算任务分配到多个处理器上执行的最基本方法。数据并行化是指将需要处理的数据划分到不同的处理器上,然后所有处理器执行相同的指令流来处理各自 的数据。设想一下一个求1000个数的正弦函数的程序,如果您有1000个处理器,您可以为每个处理器分配一个计算正弦函数的任务,然后让1000个处理 器同时开始执行。这是一种SIMD的实现技术。功能并行化是指将应用程序中的不同功能分配到不同的处理器/内存上去完成,是一种MIMD的实现方法。

■ 循环级并行化:

对于大多数科学计算任务而言,大部分的时间花费在循环计算之中。在共享内存架构的系统中,"并行编译器"可以检测到循环中互无关联的计算步骤并将它们分配给不同的处理器去执行。


■ 数组语句(Array Syntax):

SIMD的另一种实现方法。在程序设计语言中包含对数组成员进行一次性赋值和计算的语句。在并行系统上,并行编译器会自动对这些赋值和计算进行并行化处理。


■ 信息传递(Message passing):

在分布式内存架构上,每个处理器只能访问自己的内存。当处理器之间需要进行数据交换时,信息传递是目前最为广泛使用的技术。从程序员的角度来看,这种技 术就是一系列发送与接收调用的组合。当应用程序变得比较庞大而复杂时,这种技术的使用会变得非常复杂和容易出错,比如一个处理器等待的消息永远无法收到等 等。但是一旦程序设计成功,这种技术在分布式内存系统和共享内存系统上都能够获得很好的性能。


三、常用的并行计算工具软件


并行计算工具软件是指那些帮助程序设计人员更好或更简单地利用并行架构的工具。下面我们介绍最常用的几种。


■ 编译器(Compiler):

编译器在并行计算中的作用分为两个层面,一是像在串行系统上一样生成优化的代码序列,二是将可以并行执行的部分进行并行化处理。尽管编写出能够把传统 的、串行结构的应用程序编译为完美的并行代码的编译器是几乎不可能的任务,但计算机科学家们的不懈努力正在使编写并行程序越来越容易。目前很多的编译器可 以借助程序员写在程序中的简单编译指导生成高质量的并行代码,如数组语句的处理等。在目前的多数共享内存架构的系统上,编译器已经可以进行循环级的并行 化。


■ 调试器(Debugger):

调试器可以说是程序设计的必备工具。在并行计算系统中,特别是分 布式内存架构的系统中,一个调试器通常面临以下的挑战:必须能够反映出信息传递的过程和状态;在查看变量时,必须能够查看每个处理器上的同名变量的状态; 由于在科学计算中大数组的广泛应用,必须能够以直观的方式表示出数组成员的值,等等等等。

■ 性能监测/分析工具:

由于并行计算所带来的程序并行执行的复杂性和不可预见性,您会需要一个功能强大的性能监测/分析工具来帮助您完成分析并行化程度、信息传递特性以及判定系统瓶颈等工作,以便使并行系统投入产能应用时能够有最好的性能状态。


■ 并行化工具/API:

并行化工具是指将串行源代码转化为并行源代码的工具,通常只需要程序员在程序中插入简单的宏,就可以完成向并行源代码的转化。并行API主要是指实现了完整信息传递功能的软件包,使得程序员指需要进行简单的调用就可以实现信息传递,而无须自己实现其中的每一个细节。


综上所述,一个成功的并行计算系统的核心是硬件架构、应用程序和辅助软件。目前广为应用的硬件架构是共享内存和分布式内存,前者可以简化程序设计但成本 高,可扩展性差;后者成本低,扩展性好但会导致程序设计复杂化。应用程序在设计上会因为硬件架构的不同而有所不同,其中信息传递技术虽然设计复杂但在两种 硬件架构上都能够获得高性能。恰当的辅助工具不仅使程序设计更为简单,而且实际上,在大规模的应用系统中,没有这些工具几乎不可能实现稳定的、高性能的并 行计算。

Linux HPC Cluster


HPC(高性能计算)虽然已经有很多年的历史了,但是其普及程度一直不是很高。主要原因不外乎以下几点:


价格昂贵。相对较小的生产规模使得相关的部件成本极高,价格常常使用户望而却步。


不容易扩展。由于没有使用市面上通用的模块,HPC系统的扩展要么不容易在技术上实现,要么成本难以令用户接受。


对使用环境要求苛刻。过去,一套大的HPC系统可能需要像篮球场那么大的机房去安装,可以想见配套的建筑、电源、布线和散热措施的准备会有多么复杂和昂贵。

近年来,随着计算机技术的进步,一种新的HPC系统正迅速崛起,这就是使用运行Linux操作系统的Intel平台的计算机来构建HPC Cluster。这是一种分布式内存的HPC架构,针对上面提出的三个问题,它能够提供如下的好处:


由于使用Linux操作系统和通用的Intel平台,集群中的各个节点(计算机)的价格将会相对低廉;


由于使用通用的硬件平台和标准的网络组件,集群的扩展容易实现而且价格低廉;

不难看出,Linux HPC最大的优点是廉价!这一特点使得更多的"计算饥渴"的用户可以选择使用HPC系统。作为HPC技术最先进的公司,几年前IBM就已经帮助包括壳牌石 油在内的许多客户建立了1000节点以上的Linux HPC系统,这些系统至今仍然在全世界最快速的计算机系统中占据着一席之地。


一个好的Linux HPC系统完全不会在任何方面逊色于其它的分布式内存HPC系统,但问题是想要构建一个好的Linux HPC系统事实上是很难的。请考虑以下这些问题:


您想要一个廉价的Linux HPC系统。您应该购买什么样的计算机来构成这个系统才能避免在实施和使用中的问题?


您有64台Intel平台的计算机来运行Linux系统。为了把它们组建成为一个HPC系统,您还需要购买哪些硬件设备?


为了放置这些硬件设备,您需要多少个标准机架和什么样的机房来安装?


为了将新的HPC系统整合到您的网络环境中,您需要多少个额外的IP地址?您应该怎样分配它们?


为了将新的HPC系统整合到您的网络环境中,您需要多少根网线?如果数目很多的话,您如何保证在安装的时候不会弄错?


您打算怎么为这些计算机安装系统?如果系统崩溃了,您又如何保证在最短的时间里让它们恢复运作?


您的应用程序打算使用什么并行API开发?


您打算使用什么样的程序调度机制和哪一个调度器?


您如何做到像管理一台计算机一样管理这个HPC Cluster?
负载平衡技术

LoadBalance(负载均衡)群集


负载均衡群集系统使应用程序处理负载或网 络流量负载可以在计算机群集中尽可能平均地分摊处理。这样的系统非常适合于运行同一组应用程序的大量用户。每个节点都可以处理一部分负载,并且可以在节点 之间动态分配负载,以实现平衡。对于网络流量也如此。通常,网络服务器应用程序接受了太多的入网流量,以致无法迅速处理,这就需要将流量发送给在其它节点 上运行的网络服务器应用。还可以根据每个节点上不同的可用资源或网络的特殊环境来进行优化。在网站,电子邮件提供商,VOD(Video On Demand)方面有广泛的应用。


以下将介绍负载均衡群集。


什么是负载均衡群集?-- 解释(定义,一般的框架结构,策略,哪些产品,技术区别,发展)


负载均衡群集就是带均衡策略(算法)的服务器群集。负载均衡群集在多节点之间按照一定的策略(算法)分发网络或计算处理负载。负载均衡建立在现有网络结构之上,它提供了一种廉价有效的方法来扩展服务器带宽,增加吞吐量,提高数据处理能力,同时又可以避免单点故障。


一般的框架结构如下图(以Web访问为例,其它应用类似)。后台的多个Web服务器上面有相同的Web内容,Internet客户端的访问请求首先进入 一台服务器,由它根据负载均衡策略(算法)合理地分配给某个Web服务器。每个Web服务器有相同的内容做起来不难,所以选择负载均衡策略(算法)是个关 键问题。下面会专门介绍均衡算法。



负载均衡的作用就像轮流值日制度,把任务分给大家来完成,以免让一个人过度劳累。但是与轮流值日制度不同的是,负载均衡是一种动态均衡,它通过一些工具 实时地分析数据包,掌握网络中的数据流量状况,把任务理分配出去。对于不同的应用环境(如电子商务网站,它的计 算负荷大;再如网络数据库应用,读写频繁,服务器的存储子系统系统面临很大压力;再如视频服务应用,数据传输量大,网络接口负担重压。),使用的均衡策略 (算法)是不同的。 所以均衡策略(算法)也就有了多种多样的形式,广义上的负载均衡既可以设置专门的网关、负载均衡器,也可以通过一些专用软件与协议来实现。在OSI七层协 议模型中的第二(数据链路层)、第三(网络层)、第四(传输层)、第七层(应用层)都有相应的负载均衡策略(算法),在数据链路层上实现负载均衡的原理是 根据数据包的目的MAC地址选择不同的路径;在网络层上可利用基于IP地址的分配方式将数据流疏通到多个节点;而传输层和应用层的交换(Switch), 本身便是一种基于访问流量的控制方式,能够实现负载均衡。

到目前为止,针对网络负载均衡的产品主要有两大类:一是硬件;二是软 件。硬件产品比软件产品运行得快但是价格较高。著名的产品有:3Com的智能网卡和DynamicAccess技术结合起来,不用在交换机上做任何设置, 就可以完成分担任务;Cisco路由器通过对动态环路、旁路技术等功能的提供实践着负载均衡;Win2000中,专门集成了针对服务器群集的负载均衡软 件;IBM的Web专用服务器和Network Dispatcher软件;Lotus的ICM;还有许多厂商都支持的链路聚集、高层交换......实现方法还在不断地花样翻新,充实着"负载均衡"的 内容。

负载均衡系统的几种负载均衡算法(负载均衡策)

目前,基于均衡算法主要有三种:轮循(Round- Robin)、最小连接数(Least Connections First),和快速响应优先(Faster Response Precedence)。轮循算法,就是将来自网络的请求依次分配给集群中的服务器进行处理。最小连接数算法,就是为集群中的每台服务器设置一个记数器, 记录每个服务器当前的连接数,负载均衡系统总是选择当前连接数最少的服务器分配任务。 这要比"轮循算法"好很多,因为在有些场合中,简单的轮循不能判断哪个服务器的负载更低,也许新的工作又被分配给了一个已经很忙的服务器了。快速响应优先 算法,是根据群集中的服务器状态(CPU、内存等主要处理部分)来分配任务。 这一点很难做到,事实上到目前为止,采用这个算法的负载均衡系统还很少。尤其对于硬件负载均衡设备来说,只能在TCP/IP协议方面做工作,几乎不可能深 入到服务器的处理系统中进行监测。但是它是未来发展的方向。

综上所述,负载均衡群集的使用是非常广泛的,它的核心内容是运用越来越科学的负载分配算法开发出软件或硬件,来实现负载的更加合理地分配。

怎么用?——举例说明,幷包含需求分析

采用负载均衡群集的场合很多,本文将以Web/Ftp服务器群集这个典型的应用为例进行介绍。 互联网的出现使信息访问产生了质的飞跃,但随之而来的是Web流量的激增(高并发访问),由于涉及的信息量十分庞大,用户访问的频率也高,许多基于Web 的大型公共信息系统(如电子图书馆、BBS、搜索引擎和远程教育等)需要在实时性和吞吐量方面都具有较高性能的Web服务器支持。一些热门的Web站点由 于负荷过重而变得反应迟缓。如何提高Web服务器的性能和效率成为一个亟待解决的问题。

实际上,服务器的处理能力和I/O已经成为提 供Web服务的瓶颈。如果客户的增多导致通信量超出了服务器能承受的范围,那么其结果必然是宕机。显然,单台服务器有限的性能不可能解决这个问题,一台普 通服务器的处理能力只能达到每秒几万个到几十万个请求,无法在一秒钟内处理上百万个甚至更多的请求。显然,采用高性能的主机系统(小型机乃至大型计算机) 是可行的。但是,除了其价格价格昂贵外,这种高速、高性能的主机系统,很多情况下也不能解决同时处理几万个并发。因为,高速主机系统只是对于复杂单一任务 和有限的并发处理显得 高性能,而Internet中的Web服务器绝大多数处理是"简单任务"、高强度并发处理,因此,即便有大资金投入采用高性能、高价格的主机系统 ,也不能满足Web应用的需要。这就是利用Web服务器群集实现负载均衡的最初基本设计思想。

早期的服务器群集通常以主从方式 (Active-Passive)备份。令服务运营商头疼的问题是:关键性服务器一般档次较高,花了两台服务器的钱却只能得到一台服务器的性能。随着 LSANT(Load Sharing Network Address Transfer)技术的推出,这个问题得到了解决。多台服务器的IP地址被翻译成一个虚拟IP地址(VIP:Virtual IP),使得每台服务器均时时处于工作状态。若能将10台这样的服务器组成一个系统,并通过软件技术将所有请求平均分配给所有服务器,那么这个系统就完全 拥有每秒钟处理几百万个甚至更多请求的能力。这样原来需要用小型机来完成的工作现由多台PC服务器就可以完成,这种弹性解决方案对投资保护的作用是相当明 显的——既避免了小型机刚性升级所带来的巨大设备投资,又避免了人员培训的重复投资。同时,服务运营商可以依据业务的需要随时调整服务器的数量。至此形成 了Web服务器群集的理论。

Web服务器群集的概念最早由伊利诺斯州大学(UIUC:University of Illinois at Urbana-Champaign)的超级计算应用中心(NCSA:National Center of Supercomputing Applications)提出并实现了一个原型系统"NCSA Scalable Web Server Cluster", 它通过连接一组计算机对客户同时提供服务,实现分布负载,降低对用户请求的响应时间,并扩展Web服务器的应用。后来Berkeley的NOW小组、 NSC和科罗拉多大学的Harvest小组、Cisco及IBM公司等也加入此行列,很快推出相应产品。如NCSA使用几台工作站构成可扩展并行Web服 务器群,提供使用其浏览器软件Mosaic、服务器软件httpd的用户查询帮助信息和下载软件的服务器系统,采用轮循算法选择群集中某台计算机为当前访 问请求服务;加州大学SWEB系统采用DNS转发技术实现服务器IP地址重定向(Yahoo 采用的就是这种方法);Inktomi公司利用NOW构造并行的HotBot检索引擎,因而系统具有成本低和扩展能力强的特点;此外,IBM公司也提出类 似的可扩展并行Web服务器群集系统的设计方案。这些系统的成功表明Web 服务器群集是改善Web服务的一种有效解决方案,并且正在成为主流技术。

在Web负载均衡群集的设计中,网络拓扑被设计为对称结构。在对称结构中每台服务器都具备等价的地位,都可以单独对外提供服务。通过负载算法,分配设备 将外部发送来的请求均匀分配到对称结构中的每台服务器上,接收到连接请求的服务器都独立回应客户的请求。 如下图所示。



Web服务器群集有如下特点:

高性能 :一个Web服务器群集系统由多台Web服务器组成,对外部而言,整个群集就如同一台高性能Web服务器,系统只有一个对外的网络地址(主机名或IP地 址),所有的HTTP请求都发到这个地址上。系统中有专门的机制能够将这些请求按照一定原则分发到群集中的各台服务器上,让它们各自分担一部分工作。

可扩展性 它是采用同样的方法或技术高效率地支持较大规模系统的能力。Web服务器群集系统的组成结构和工作原理决定了它能够比较容易地达到较好的可扩展性,因为扩大系统规模非常容易,只要在网络中增加新的Web服务器计算机即可。

高可用性 Web服务器群集系统将会在各种商业应用领域中占有举足轻重的地位。商用系统最重视系统的可靠性和容错性,二者合在一起称为系统的可用性。常用的系统可用 性指标有系统平均无故障时间、期望不间断工作时间及年平均故障率等。由于Web服务器群集系统中各台Web服务器之间相对独立,采用一些不太复杂的技术就 能使Web服务器群集系统达到很高的可用性。一些商用产品中已经部分实现了这种技术。

此外,Web服务器群集系统还具有价格便宜、能够保护原有投资等特点。

目前比较成熟的产品主要有Cisco的LocalDirector、IBM的Network Dispatcher、HydraWEB的HydraWEB Dispatcher和RND的Web Server Director等等。这些产品的应用非常广泛,如Yahoo、Net Center和MSN都是用几百到几千台计算机组成Web 服务器群集来对外提供服务,它们使用了上述产品。

以下是对2个Web服务器群集产品的分析:

Scalable Web Server Cluster UIUC的NCSA Scalable Web Server Cluster是世界上第一个Web服务器群集系统。1994年,NCSA为了缓解其Web站点面临的大量用户访问的压力,把4台Sun工作站用FDDI 连接起来组成一个群集,代替原有单台Sun工作站的Web服务器,对外提供Web服务。NCSA把这个系统称为Scalable Web Server Cluster,它几乎具备了现代Web服务器群集系统所具有的一切特征:用高速局域网连接多台Web服务器,通过并行处理提高系统的吞吐能力;整个系统 只有一个网络地址; 通过一台动态DNS服务器实现请求分配,该DNS服务器对DNS请求采用轮循算法依次返回群集中各台Web服务器的IP地址,引导Client将HTTP 请求发送到群集中不同的Web服务器上,以实现群集的负载均衡; 采用AFS(UNIX支持的分布式文件系统)将多台服务器上的文件系统组合成一个逻辑上单一的分布式文件系统,用来存储站点内容,使请求不论被分配到哪台 Web服务器上都能得到完全相同的应答服务;系统在其中一台Web服务器发生故障时仍能正常工作,并支持在线增加或减少Web服务器的数量等(其结构如下 图所示)。



Scalable Web Server Cluster是一个实验性的Web服务器群集系统,现代Web服务器群集系统和产品的大部分概念和方法均来源于它。
LocalDirector Cisco的LocalDirector是一种用来实现请求分配的设备,通过它可以组成Web服务器群集系统。LocalDirector有2个网络接 口,一个用于连接Internet,另一个用于连接局域网中的Web服务器群集,如下图所示。



LocalDirector采用IP NAT(Network Address Transfer)技术,整个系统对外只有一个IP地址,通过IP地址变换将HTTP请求分配到群集中不同的Web服务器。群集中的各台Web服务器上存 储的页面信息要求完全一致。LocalDirector在请求分配时实现了2种不同的负载均衡算法:最小连接数和快速响应优先,用户在配置 LocalDirector时可以选择使用其中一种。此外,LocalDirector还支持动态改变群集规模的大小,即在不停机的情况下增加或减少服务 器。

LocalDirector具有很强的吞吐能力,自身延迟也小,因而能够支持较大规模的系统,并且可以通过级联进一步扩大系统的 规模(如下图所示)。像IBM的Network Dispatcher、HydraWEB的HydraWEB Dispatcher和RND的Web Server Director等在结构和功能上与LocalDirector类似。值得一提的是,这些产品的价格基本上与一台普通的工作站相当,比大多数高性能计算机 要低许多。



  总 结:
负载均衡群集的应用提高了Web服务器、FTP服务器,邮件服务器和其它关键应用服务器的可用性和可伸缩性。单一计算机只能提供有限级别的服务器可靠性 和可伸缩性。但是,通过将两个或两个以上高级服务器的主机连成群集,网络负载均衡就能够提供关键任务服务器所需的高可靠性和高性能。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章