负载均衡技术在数字图书馆服务中的应用模式与实例分析_负载均衡论文

负载均衡技术在数字图书馆服务中的应用模式及实例分析,本文主要内容关键词为:实例论文,数字图书馆论文,负载均衡论文,模式论文,技术论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。

【分类号】G250.7

1 概述

在数字图书馆建设过程当中,图书馆为用户提供的服务种类和服务质量都在不断提高,同时用户对图书馆所提供的各种服务的响应时间、可靠性、内容丰富性等性能方面的要求也越来越高。因此如何合理部署数字图书馆应用成为数字图书馆建设当中非常关键的问题。而在应用部署过程中,合理的利用硬件设备资源,以较少的花费为读者提供稳定、高效的访问服务,并使之具有灵活的缩放性又是需要考虑的主要问题。我们常常会遇到以下两种情况,第一,在根据当前的访问需求购买服务器并部署相应的数字图书馆应用后不久,就会发现当前服务器配置并不能满足用户需求,而此时对硬件升级费用太高。第二,购买的服务器硬件配置太高,又使得大量服务器资源闲置,造成不必要的资源浪费。负载均衡技术的出现,恰好为解决这些问题提供了一种较好的方案。

2 负载均衡技术

负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价、有效、透明的方法,扩展网络设备和服务器的处理能力[1]。负载均衡是一种策略,即让多台服务器或多条链路共同承担一些繁重的计算或I/O任务(如图1所示),从而以较低成本消除网络瓶颈,提高网络的灵活性和可靠性,减少用户的等待时间。网络负载均衡是一种动态均衡,它通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理分配出去。在目前网络中,载荷分布并不均匀,对于计算集中型的应用,比如电子商务网站,服务器计算负荷会很大;对于读写频繁的应用,比如网络数据库,存储系统面临考验;传输量大的应用,比如视频服务,数据总是堵在网络接口上;访问量大的应用,路由器与防火墙容易成瓶颈。想要消除这些瓶颈,升级设备、改变拓扑是“笨办法”,相对取巧一些的就是采用负载均衡策略,用多个设备共同完成任务。

图1 负载均衡示意图

采用负载均衡技术来部署数字图书馆应用极大地提高了可缩放性,它可以通过适当地添加或减少应用服务器的数量,来满足不同的用户需求。当用户数量增大,或用户使用量增大时,单台服务器的负载将会加重,这时通过添加额外的应用服务器,可以减轻单台应用服务器的负载,从而提高了整个应用的处理能力。当用户数量减少,或用户使用量减少时,可以通过减少应用服务器的数量,以提高服务器资源的利用率。

2.1 负载均衡分类

负载均衡技术的分类方法很多,表1中介绍了几种常见的负载均衡分类方法以及各种负载均衡方法的特点。

2.2 负载均衡策略

在实际应用中,我们想根据服务器动态变化的情况更灵活地将客户端的服务请求分配给内部服务器,这样就必须选择合适的负载均衡策略,使多个设备能很好地共同完成任务,消除或避免现有网络负载分布不均、数据流量拥挤、反应时间长的瓶颈。决定负载均衡策略的优劣及其实现的难易程度的是两个关键因素:负载均衡算法;对网络系统状况的检测方式和能力。

表1 负载均衡分类方法及各种负载均衡方法的特点

分类 类别 描述 特点

软件

通过在服务器的操作配置简单,使用灵活,成本低廉,可

负载均衡

系统上附加软件实现满足一种需求。消耗资源、软件可

设 负载均衡。扩展性不好,由于操作系统的

备bug,会引起安全问题。

硬件

在服务器和外部网络独立于操作系统,性能高,功能强

负载均衡

间安装负载均衡设备大,可实行多样化策略、智能化的

执行负载均衡。流量管理。成本昂贵。

本地

对本地服务群做负 成本低,均衡策略灵活多样,易于

负载均衡

载均衡。 扩充,不需要改变现在网络结构。

全局

在不同位置、有不同网 全球用户通过一个IP地址或域名

负载均衡

络结构的服务器群间就能访问到最近的服务器,从而获

做负载均衡得最快的访问速度。

第二层

将多条物理链路当作网络数据流量由聚合逻辑链路中

负载均衡

一条单一的聚合逻辑所有物理链路共同承担,逻辑上增

(链路聚

链路使用 大链路容量

合技术)

网 第四层

通过网络地址转换进将一个有效IP地址映射为多个内

负载均衡

行负载均衡部IP地址,对每次TCP请求动态

层使用其中一个内部IP地址

次 第七层

通过检查流经的提供了一种对应用层服务内容及

负载均衡

HTTP报头,根据

访问流量的高层控制方式,适合用

HTTP报头信息来执 于HTTP服务器群,限制了应用

行负载均衡的广泛性,在有大量连接请求时,

设备容易成为网络整体性能的瓶颈

(1)负载均衡算法 考虑到服务请求的不同类型、服务器的不同处理能力以及随机选择造成的负载分配不均匀等问题,为了更加合理地把负载分配给内部多个服务器,就需要选用能够正确反映各个服务器处理能力及网络状态的负载均衡算法[1]。表2中列举一些常用负载均衡算法的特点及适用情况。

表2 常用负载均衡算法的特点及适用情况

均衡算法

特点及适用情况

轮循均衡

将用户请求轮流分配给内部服务器。适用于所有节点服

(Round Robin) 务器配置相同的情况。

权重轮循均衡

根据服务器处理能力不同,给每个服务器分配不同的权

(Weighted Round Robin) 值,使它接收相应权值数的服务请求。这种均衡算法可

确保高性能服务器得到更高的使用率,避免低性能服务

器负载过重。

随机均衡

将用户请求随机分配给多个内部服务器。

(Random)

权重随机均衡

与权重轮循算法类似,但是在处理请求分担时是一个随

(Weighed Random)

机选择过程。

响应速度均衡

负载均衡设备发出探测请求(如Ping),根据内部服务

(Response Time)器对探测请求的响应时间来决定谁响应用户请求。这种

均衡算法能较好地反映服务器的当前状态。

最少连接数均衡 用户请求可能在服务器停留较长时间,负载均衡机对每

(Least Connection) 台内部服务器记录当前正处理的连接数量,并将新用户

请求分配给当前连接数量最少的服务器,使负载更符合实

际情况,负载更均衡。这种均衡算法适用需要长时处理

的请求服务,如FTP。

处理能力均衡

这种算法将用户请求分配给处理负载最轻的内部服务

器。这种算法相对来说更加精确,尤其适用于第七层(应

用层)负载均衡。

DNS响应均衡

位于不同位置的负载均衡设备同时响应客户端请求,将

(Flash DNS)域名解析到对应IP地址并返回给客户端,客户端将以

最先收到的IP继续请求服务,忽略其他响应。它适用于

全局负载均衡,对本地负载均衡没有意义。

(2)系统检测方法 选用合适的负载均衡算法可以成功地把流量分配给不同的服务器,不过如果负载均衡策略不具备对网络系统状况的检测方式和能力,一旦在某台服务器或某段负载均衡设备与服务器网络间出现故障的情况下,负载均衡设备依然把部分数据流量引向那台服务器,就会造成大量服务请求丢失,未达到不间断可用性的要求。所以良好的负载均衡策略应具备对网络故障、服务器系统故障、应用服务故障的检测方式和能力,表3是几种最常用的检测方式。

表3 服务器故障的监测方式和作用

名称 作用

Ping

用Ping方式检测服务器及网络系统状况,此种方式简单快速,

侦测

但只能大致检测出网络及操作系统是否正常,对服务器上的应

用服务检测则无能为力。

TCP Open

每个服务都会开放某个通过TCP连接,检测服务器上某个

侦测

TCP端口(如Telnet的23端口,HTTP的80端口等)是否开放来判断服务是否正常。

Http URL

比如向HTTP服务器发出一个对main.html文件的访问请

侦测

求,如果收到错误信息,则认为服务器出现故障。

(3)交互信息处理 在某些应用中,需要将来自同一客户端的请求都分配给同一台服务器处理,例如当服务器将客户端注册、购物等服务请求信息保存在本地数据库中时,就需要把客户端的子请求分配给同一台服务器来处理。有两种方式可以解决此问题,一是根据IP地址把来自同一客户端的多次请求分配给同一台服务器处理,客户端IP地址与服务器的对应信息是保存在负载均衡设备上;二是在客户端浏览器Cookie内设置独一无二的标识,将多次请求分配给同一台服务器处理。此外,还有一种路径外返回模式(Out of Path Return),当客户端连接请求发送给负载均衡设备时,负载均衡设备将请求转发到某台服务器,服务器回应请求不再返回给负载均衡设备,即绕过流量分配器,直接返回给客户端。因此负载均衡设备只负责接受并转发请求,其网络负担大幅减小,并为客户端提供了更快的响应时间。这种模式一般用于HTTP服务器群。

2.3 负载均衡的具体实现方法

一种具体的负载均衡实现方法,通常会综合采用多种不同的负载均衡策略,使用多种系统检测方法,或对交互信息进行不同的处理。常见的负载均衡方法有DNS负载均衡,代理服务器负载均衡,网络地址转换负载均衡等[2]。

(1)DNS负载均衡 DNS负载均衡方法是一种最早使用的负载均衡方法,它通过修改DNS设置,为多个地址配置同一域名。从而对于访问同一域名的客户机,返回不同的服务器地址,达到负载均衡的目的。DNS负载均衡的优点是简单易行,并且服务器可以位于互联网的任意位置上,当前很多Web站点都使用这种技术,但它也存在缺点。

①为了保证DNS数据及时更新,一般都要将DNS的刷新时间设置为较小,但太小就会造成太大的额外网络流量,并且更改了DNS数据之后也不能立即生效。

②DNS负载均衡无法得知服务器之间的差异,它不能做到为性能较好的服务器多分配请求,也不能了解到服务器的当前状态,甚至会出现客户请求集中在某一台服务器上的偶然情况。

(2)反向代理负载均衡 使用代理服务器可以将请求转发给内部的Web服务器,使用这种加速模式显然可以提升静态网页的访问速度。因此也可以考虑使用这种技术,让代理服务器将请求均匀转发给多台内部Web服务器之一上,从而达到负载均衡的目的。这种代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式。使用反向代理的好处是,可以将负载均衡和代理服务器的高速缓存技术结合在一起,提供有益的性能,具备额外的安全性,外部客户不能直接访问真实的服务器。可以采用较好的负载均衡策略,将负载非常均衡地分给内部服务器,不会出现负载集中到某个服务器的偶然现象。

实现这个反向代理能力并不能算是一个特别复杂的任务,但是在负载均衡中要求特别高的效率,这样实现起来就不是十分简单了。每针对一次代理,代理服务器就必须打开两个连接,一个为对外连接,一个为对内连接,因此在连接请求数量非常大时,代理服务器的负载也就非常大了,最后反向代理服务器会成为服务的瓶颈。例如,使用Apache的mod-rproxy模块来实现负载均衡功能时提供的并发连接数量受Apache本身的并发连接数量的限制。一般来讲,可以使用它来对连接数量不是特别大但每次连接都需要消耗大量处理资源的站点进行负载均衡,例如搜寻。

(3)基于NAT的负载均衡技术 网络地址转换(NAT)指在内部地址和外部地址之间进行转换,使得具备内部地址的计算机能访问外部网络,而当外部网络中的计算机访问地址转换网关拥有的某一外部地址时,地址转换网关能将其转发到一个映射的内部地址上。因此如果地址转换网关能将每个连接均匀转换为不同的内部服务器地址,此后外部网络中的计算机就各自与自己转换得到的地址对应的服务器进行通信,从而达到负载分担的目的。

(4)基于特定服务器软件的负载均衡 很多网络协议都支持“重定向”功能,例如在HTTP协议中支持Location指令,接收到这个指令的浏览器将自动重定向到Location指明的另一个URL上。由于发送Location指令比起执行服务请求对Web服务器的负载要小得多,因此可以根据这个功能来设计一种负载均衡的服务器。Web服务器认为自己负载较大时,就不再直接发送回浏览器请求的网页,而是送回一个Location指令,让浏览器到服务器集群中的其它服务器上获得所需要的网页。例如《中国期刊网》主站点,当用户在主界面上输入用户名和口令之后,服务器CGI将把用户重定向到不同的Web服务器上,从而达到负载均衡的目的。

3 Engineering Village 2的负载均衡实现

美国工程信息公司(Engineering Information Inc.)始建于1884年,作为世界领先的应用科学和工程学在线信息服务提供者,一直致力于为科学研究者和工程技术人员提供专业化、实用化的在线数据信息服务。1995年以来EI公司开发了称为“Village”的一系列产品,Engineering Village 2就是其中的主要产品[3]。目前国内有很多高校和科研机构都购买了该数据库,清华大学与美国工程信息公司合作在清华图书馆设立镜像服务器,提供基于Web方式的信息服务。EI的网络服务器采用四台Dell PowerEdge 2650服务器,双网卡配置,运行RedHat Linux操作系统。二台网络交换机,分别用于内部网络连接和外部网络连接。由于EI数据库在国内的访问量非常大,经常造成服务器的宕机,为了保证在不重新购置服务器的情况下提供正常的数据库服务,我们最终选择了购买美国F5公司的两个BIG-IP Load Balancer负载均衡机实施负载均衡来改善数据库的服务。

3.1 系统总体结构

系统结构如图2所示,两台BIG-IP负载均衡机通过外部网络交换机连接到Internet,Web服务器通过内部网络交换机与两台BIG-IP负载均衡机相连接,同时每台Web服务器的另一块网卡连接到外部交换机上,直接与Internet相连接。其中两台BIG-IP负载均衡机的冗余配置组成高可用性系统。

用户的请求将发送到BIG-IP负载均衡机上,负载均衡机将用户请求平均分配到四台Web服务器上,Web服务器在处理完请求之后,将不再通过负载均衡机,而是直接通过外部网络交换机,将处理结果返回给用户。

图2 负载均衡总体结构图

3.2 系统实现

(1)负载均衡机的冗余配置 系统采用二台BIG-IP负载均衡机,一台保持在正常工作状态,另一台保持在待机状态,为EI数据库应用提供失效切换保护。当一台负载均衡机发生故障时,将自动切换到另一台负载均衡机工作。而且它们的失效切换保护可以保留会话信息,可以在不到1秒钟的时间内完成切换,确保用户始终可以访问到数据库应用的内容。图3所示为负载均衡机的冗余属性配置界面。

(2)负载均衡策略 由于EI数据库在国内只建立了一个镜像服务器站点,并且该站点只为国内用户服务,因此只需要本地负载均衡,而不必考虑在多个站点之间进行全局负载均衡。如图4所示,在负载均衡机中,为EI数据库应用建立了三个虚拟服务器,每个虚拟服务器对应一个节点池。第一个池ev-session主要用于管理会话信息,其它二个池(ev_controller和ev3)用于处理用户请求。

图3 负载均衡机的冗余属性配置界面

图4 虚拟服务器的节点池

图5 采用多种负载均衡算法

正常工作时,用户将访问第二个虚拟服务器166.111.120.42:80,负载均衡机在接收到用户请求后,根据均衡算法,将用户请求转发到节点池ev-controller中的某个节点上,该节点在处理完后,将结果返回给用户。在该应用中,采用了二种负载均衡算法:最少连接数和权重轮循均衡算法,如图5所示。对于节点池ev-controller采用了最少连接数均衡算法,由于各个成员节点的配置完全相同,因此其权重系数和优先级都设置为1。节点池ev-session采用了权重轮循均衡算法,同样因为各成员节点的配置完全相同,将其权重系数和优先级都设置为1。节点池ev3也采用了权重轮循均衡算法,当前它只配置了一个成员节点,但以后可以随时根据需要进行扩充。

(3)网络系统状态检测 负载均衡机周期性地检查系统中各成员节点的状态,当某个成员节点发生故障时,负载均衡机不再将用户请求转发到该成员节点,而将请求转发到其他成员节点。当故障成员节点恢复正常时,负载均衡机再将它纳入到负载均衡的算法中。

BIG-IP负载均衡机支持采用多种方式对系统状态进行检测,包括FTP,HTTP,ICMP,IMAP,LDAP,NNTP,POP3,HTTPS,RADIUS,SMTP,TCP-ECHO,SQL等,而且支持通过用户自定义方式来进行检测[4]。在EI数据库应用中,采用了三种系统状态检测方式,如图6所示。对于各个成员节点的状态,通过http-controller(一种自定义检测方式)进行检测;对于节点地址的状态,通过ICMP进行检测;而对于服务的状态,则通过HTTP进行检测。

图6 系统状态检测

(4)EI数据库负载均衡的应用结果 半年多的运行实践证明,应用了负载均衡的Engineering Village 2数据库服务的性能有了很大改善,具体体现在以下几个方面:

①响应速度变快,支持的并发用户数增多。

②可靠性增强。即使某一台或某几台服务器发生故障,其他服务器仍然保持可用,减少了数据库应用的宕机时间。

③安全性提高。由于应用服务器都位于负载均衡机后面,用户不能直接访问,从而为应用服务器提供了更好的安全防护。

④可缩放性提高。当用户数量不断增长,导致服务器性能不足以满足用户需求时,只需要再增加一个或多个成员节点服务器,就可以使系统处理性能得到提高,新系统将能够更好地满足用户需求。

4 结束语

在数字图书馆的发展过程中,用户需求不断提升,因此在部署数字图书馆应用时,如果考虑到采用负载均衡技术,不仅会节省大量硬件设备投资,而且将会在很大程度上提高数字图书馆应用的可缩放性,更好地满足日益变化的读者需求。

标签:;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  

负载均衡技术在数字图书馆服务中的应用模式与实例分析_负载均衡论文
下载Doc文档

猜你喜欢