分类: 系统运维
2009-07-10 10:07:45
前言
随着计算机技术的快速发展以及应用的广泛深入,计算机技术被广泛地使用在企事业单位的各个业务环节,越来越多的依赖于计算机技术的应用系统成为我们日常工作的得力伙伴。在给我们带来方便和效率的同时,也使得各行各业对于计算机技术的依赖程度越来越高。
尽管随着计算机技术以日新月异的速度发展,单台计算机的性能和可靠性越来越好,但还是有许多现实的要求是单台计算机难以满足的。比如以下例子:
² 某企业需要一台服务器存储ERP数据。企业运作没有休息的日子,当然也要求支持企业运作的服务器不能有任何理由停机,保证任何时候各个运营点都能访问;
² 某企业业务前景看好,但经营者不想马上投入数千万元一台的数据库服务器,而是希望随着业务的扩展,采取逐步增加数据库服务器的方式,逐步升级到具有200GHz计算能力(相当于100颗2GHZ的奔腾4处理器)的数据库服务器来运行数据库管理运算。
² 某电子商务公司在市场策动下突然涌入大量的用户,经营者需要有一种简单方法能够迅速扩充其应用服务器系统,不需要的时候再把扩充的设备去掉。
在这种情况下,往往需要将多台计算机组织起来进行协同工作,用来模拟一台功能更强大的计算机解决问题。这种技术称为集群(Cluster)技术。集群就是一组通过协同工作方式运行同一套应用程序并针对客户端及应用程序提供单一系统映像的独立计算机。
集群技术的目标在于通过多层网络结构进一步提高扩展性、可用性与可靠性。目前应用最为广泛的集群计算技术包括高可用集群技术、高性能并行数据库集群技术和高扩展负载均衡集群技术,这三种技术在实际应用中有可能会存在同一个应用中。
负载均衡集群技术介绍
技术概念
负载均衡集群:英文原文为Load Balance Cluster,简称LB Cluster或者LB高扩展集群,是指以维持可接受性能的前提下处理不断提高的工作负载为目标的服务器集群技术。
负载均衡集群主要使用在Web服务器以及中间件应用服务器中,用来提高系统的高性能、可扩展性与高可用性;在集群中增加服务器可以提升集群系统的处理能力,每个服务器的配置不要求完全一致。
u 高性能
一个负载均衡集群系统由多台服务器组成,对外部而言,整个集群就如同一台高性能服务器,系统只有一个对外的网络地址(虚拟IP地址),所有对集群的请求都发到这个地址上。系统中有专门的机制能够将这些请求按照一定原则分发到集群中的各台服务器上,让它们各自分担一部分工作。
u 高扩展性
负载均衡集群具有较好的可扩展性,因为扩大系统规模非常容易,只要在集群中增加新的服务器即可。
u 高可用性
负载均衡集群系统将会在各种商业应用领域中占有举足轻重的地位。商用系统最重视系统的可靠性和容错性,二者合在一起称为系统的可用性。常用的系统可用性指标有系统平均无故障时间、期望不间断工作时间及年平均故障率等。由于负载均衡集群系统中各台服务器之间相对独立,采用一些不太复杂的技术就能使集群系统达到很高的可用性。
工作原理
2.2.1 负载均衡集群结构
负载均衡集群就是带均衡策略(算法)的服务器集群,服务器称作节点。负载均衡集群在多节点之间按照一定的算法分发网络或计算处理负载。
负载均衡建立在现有网络结构之上,提供一种廉价有效的方法来扩展服务器带宽,增加吞吐量,提高数据处理能力,同时又可以避免单点故障。
负载均衡集群一般的框架结构如图1所示,以Web访问为例,多个Web服务器内部署相同的Web内容,Internet客户端的访问请求首先进入负载均衡器,然后由负载均衡器根据负载均衡算法合理地分配给某个Web服务器。
负载均衡的作用就像轮流值日制度,把任务分给大家来完成,以免让一个人过度劳累。但是与轮流值日制度不同的是,负载均衡是一种动态均衡,它通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务分配出去。对于不同的应用环境,使用的均衡策略(算法)是不同的,比如电子商务网站,它的计算负荷大;再如网络数据库应用,读写频繁,服务器的存储子系统系统面临很大压力;再如视频服务应用,数据传输量大,网络接口负担重压。所以负载均衡策略也就有了多种多样的形式,广义上的负载均衡既可以设置专门的网关、负载均衡器,也可以通过一些专用软件与协议来实现。
图1 负载均衡集群系统结构
在OSI(开发系统互连)七层协议模型中,第二(数据链路层)、第三(网络层)、第四(传输层)、第七层(应用层)都有相应的负载均衡策略。在数据链路层上实现负载均衡的原理是根据数据包的目的MAC地址选择不同的路径;在网络层上可利用基于IP地址的分配方式将数据流疏通到多个节点;而传输层和应用层的交换(Switch),本身便是一种基于访问流量的控制方式,能够实现负载均衡。
目前实现负载均衡的产品可以分为硬件产品、类硬件与软件产品三大类。
u 硬件产品:比软件产品运行快,但价格较高。比如Alteon 公司的AD3。
u 类硬件:是指用一台专门的服务器安装特定的软件来模拟硬件负载均衡器,比如在Turbo Linux操作系统上安装TCS(Turbo Cluster Server)软件。类硬件一般只用来提供网络请求的分发,而不作为功能服务器向客户端提供服务。
u 软件产品:包括Web服务器层和应用服务器层的很多产品都提供了负载均衡功能。
2.2.2 负载均衡策略
所有的负载均衡产品都需要一定的负载均衡策略来实现,负载均衡策略也被称为负载均衡算法。目前,最常用的负载均衡算法主要有三种:轮循(Round-Robin)、最小连接数(Least Connections First)和快速响应优先(Faster Response Precedence)。
² 轮循算法,就是将来自网络的请求依次分配给集群中的服务器进行处理。
² 最小连接数算法,就是为集群中的每台服务器设置一个记数器,记录每个服务器当前的连接数,负载均衡系统总是选择当前连接数最少的服务器分配任务。这要比“轮循算法”好很多,因为在有些场合中,简单的轮循不能判断哪个服务器的负载更低,也许新的工作又被分配给了一个已经很忙的服务器了。
² 快速响应优先算法,是根据集群中的服务器状态(CPU、内存等主要处理部分)来分配任务。这一点很难做到,事实上到目前为止,采用这个算法的负载均衡系统还很少。尤其对于硬件负载均衡设备来说,只能在TCP/IP协议方面做工作,几乎不可能深入到服务器的处理系统进行监测。但是它是未来发展的方向。
综上所述,负载均衡集群的使用是非常广泛的,它的核心内容是运用越来越科学的负载分配算法开发出软件或硬件,来实现负载的更加合理地分配。
2.2.3 性价比极高的IA服务器集群
在当前的企业应用中,服务器的处理能力和I/O对于提供服务起着关键作用。如果客户的增多导致数据处理量超出了服务器所能承受的范围,其结果必然是响应缓慢、甚至宕机。众所周知,RISC小型机具有很高的可靠性和性能,但主机系统只是对于复杂任务和有限的并发处理显得高性能,对于简单任务的高并发处理(比如Internet Web应用)有时也难以应付。
采用IA(Intel-based Architecture)架构的服务器构建的集群,除了能提供超过小型机的性能外,还能够大大提高整体系统的可靠性。
由于IA架构服务器集群所提供的高性能、高可用与高扩展性,以及具备相当好的性价比,因此在企业应用和Internet应用中,越来越多的组织采用IA架构服务器来构建Web服务器及应用服务器集群。
应用场合
目前,越来越多的企业应用和互联网应用都采用服务器集群进行构建。在多层架构应用的各层集群中,包括Web服务器和中间层应用服务器都可以采用负载均衡集群技术。
u Web服务器集群
Web服务器集群可以从三个方面进行考虑:
² Web服务器仅仅提供静态页面,在这种情况下可以采用手工上传或用专门的静态页面发布系统(比如联想LCMS)将内容传递到Web服务器;
² 一般的数据库访问,比如网络调查,访问时不需要进行登录(Login)的情况;
² 需要进行注册登录的BBS、电子商务等,需要考虑到Session(会话)的应用场合。
其中,前两种情况在集群中进行负载均衡时没有任何问题的;而对于第三种情况,需要考虑集群中不同服务器之间Session的同步复制问题。Session技术可以记录用户的基础数据,比如登录时的身份、所做过的操作数据等,能够提高系统的处理效率,其主要应用于需要身份验证的业务中,Session存储技术有三种:本地、横向、纵向,We服务器因该技术的不同会限制用户日后对其的扩充方式,只有支持横向和纵向的才具有Session级系统负载均衡能力。
基于的Web的应用其系统负荷量的测算一般采用峰值的方式,静态页面在2000PV左右,动态页面平均在400左右(逻辑复杂性越高,PV值越低),在实际部署中采用动静分离可以达到更好的扩展效果。
* PV :Page View,一种浏览量统计方法。
u 中间层应用服务器集群
对于应用服务器集群,主要有下面几种:
² COM+应用服务器;
² J2EE应用服务器;
² 专业交易中间件(比如Tuxedo);
² CORBA中间件。
位于企业应用系统中间层的应用服务器,同样可以通过负载均衡技术构建集群,增强系统的高扩展性和处理能力。
主要负载均衡产品介绍
硬件负载均衡产品
采用硬件来实现负载均衡速度较快,负载均衡硬件只负责对到来的请求在功能服务器集群之间根据一定的策略进行分发。目前比较著名的负载均衡硬件产品主要有:F5 Networks公司的Big-IP和3-DNS产品;Alteon公司的AD3/AD4产品;Cisco公司的Local Director等等。
类硬件负载均衡产品
与采用硬件实现负载均衡功能相类似,使用类硬件的软件系统也可以对客户端请求根据一定策略进行分发。
目前,比较常用的是在服务器上安装Linux操作系统,然后通过配置相应的软件来实现负载均衡功能,比如Turbo Linux上的TCS(Turbo Cluster Server),在红旗Linux上也有相应的产品。类硬件负载均衡集群的结构如图2所示。
图2 类硬件负载均衡集群结构
软件负载均衡产品
3.3.1 Microsoft NLB
微软的NLB(Network Load Balance,网络负载均衡)技术能够在多个运行NLB软件的节点对进入系统的IP请求负载进行合理分配,可以为诸如Web服务器之类基于IP协议的应用提供可扩展性与可用性。
NLB底层软件是一种位于NIC(网卡)与TCP/IP之间的网络设备接口规范(NDIS)驱动程序。在NLB集群中的每台服务器上安装这种驱动程序,并且所有NLB节点均共享同一个代表所需网络资源(如Web服务器)的虚拟IP地址。所有NLB服务器均监听用户请求,但其中只有一台服务器对这些用户请求进行响应。NLB是Windows 2000 Advanced Server与Datacenter网络服务中的一种集成化组件。
Application Center 2000是微软推出的运行于Windows 2000平台的集群创建和管理工具,可以方便的创建和管理Web集群,配置NLB。NLB既可以通过Application Center使用,也可以作为一种独立解决方案使用。
3.3.2 COM+应用服务器
微软的COM+把COM、DCOM和MTS统一起来,形成真正适合于企业应用的组件技术。COM+应用服务器把COM组件软件提升到应用层而不再是底层的软件结构,通过操作系统的各种支持,使组件对象模型建立在应用层上,把所有组件的底层细节留给操作系统,因此,COM+与操作系统的结合更加紧密。
微软推出的CLB(Component Load Balance, 组件负载均衡)技术,运用于COM+应用服务器集群中,能够在提供COM+对象的多台服务器之间实现负载均衡功能,即通过多台服务器共享激活与执行COM+对象所产生的工作负载。
Application Center 2000是微软推出的运行于Windows 2000平台的集群创建和管理工具,可以方便的创建和管理COM+应用集群,配置CLB,并且对集群的性能表现与健康状况进行动态监控以及对特定事件进行响应。CLB是Application Center的组成部分之一,并且只能通过Application Center加以应用。
图3给出了利用Application Center构建Web集群和COM+应用服务器集群的系统结构:
图3 Application Center集群结构
3.3.3 J2EE应用服务器
J2EE是一个利用JAVA技术开发和部署企业应用的开放架构。这个架构下,企业应用开发者可以自由选择其应用驻留的应用服务器。目前,比较流行的J2EE应用服务器主要有BEA公司的WebLogic、IBM公司的Websphere和Oracle公司的iAS。
WebLogic是BEA公司的J2EE应用服务器,WebLogic集群技术可以通过一组服务器共同工作,在多台机器间复制应用表示层和应用逻辑层,实现关键业务系统的负载分布。WebLogic把负载按一定策略分配到集群中所有的服务实例,从而使每个服务实例都能充分发挥能力,这可以通过其提供的WLS Proxy Plug-in或者单独的负载均衡硬件来实现。注意:WebLogic可以复制HttpSession对象和有状态的会话EJB,但由于WebLogic对于Session状态的处理采用横向镜像存储方式,因此建议使用WebLogic负载均衡时,不要同时使用硬件负载均衡。
Websphere是IBM公司的J2EE应用服务器,利用多台Websphere应用服务器可以构成高扩展性服务器集群,对于发向Websphere服务器集群的客户端请求,Websphere可以实现动态的负载均衡。由于Websphere中对于Session状态的处理采用纵向共享存储方式,因此采用硬件负载均衡时,Websphere集群超过两节点也可以正确工作。
IAS是Oracle公司基于J2EE标准的应用服务器,用来开发、部署和管理互联网应用。IAS的负载均衡实质上是指如何能够跨单个CPU或多个CPU中的多个Oracle9iAS实例分布来自客户机的请求。IAS可以提供HTTP服务器上的负载均衡和J2EE容器中的负载均衡(Servlet和EJB容器实例使用多种负载均衡算法对请求进行负载均衡,并且提供了适用于RMI和SOAP请求的负载均衡增强功能),最后IAS还可以与第三方负载均衡产品(如Big-IP和Alteon)结合提供适用于非会话状态和会话状态的负载均衡。
总之,WebLogic、Websphere和Oracle iAS都提供了负载均衡技术,能够很好的实现负载均衡和故障迁移功能,可以把多台机器联合起来形成一个庞大稳固的企业应用。
3.3.4 交易中间件
交易处理中间件也称为事务处理监控器(Transaction Processing Monitor, TPM)能够提供支持大规模事务处理的可靠运行环境。随着分布计算技术的发展,分布应用系统对大规模的事务处理提出了需求,比如商业活动中大量的关键事务处理。事务处理监控器界于Client和Server之间,进行事务管理与协调、负载平衡、失败恢复等,以提高系统的整体性能。
目前比较流行的交易处理中间件主要有BEA Tuxedo、IBM CICS和东方通科技的TongEASY等。Tuxedo、CICS和TongEASY等产品都提供了在多台中间件服务器之间进行负载均衡的能力。