高可扩展性集群技术


  高可扩展性集群技术

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


  一般的框架结构如下图(以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服务器群集实现负载均衡的最初基本设计思想。

  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服务器群集有如下特点: 

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

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

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

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

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