`

浅叙负载均衡集群的性能

 
阅读更多

转自:http://net.zdnet.com.cn/network_security_zone/2010/0507/1734170.shtml

浅叙负载均衡集群的性能

 

ZDNET网络频道时间:2010-05-07作者: | ZDNet网络频道

本文关键词:负载均衡 网络

通过以前的文章我们知道,负载均衡和集群是两个概念。在一定程度上,负载均衡是包含在集群之中的。那么,随着技术的不断改进,现在我们通常把负载均衡集群一起来说,因为,在服务器方面的均衡策略总是将集群和负载均衡的概念相捆绑的。

 

集群技术的目标在于通过多层网络结构进一步提高扩展性、可用性与可靠性。目前应用最为广泛的集群计算技术包括高可用集群技术、高性能并行数据库集群技术和高扩展负载均衡集群技术,这三种技术在实际应用中有可能会存在同一个应用中。

 

负载均衡集群技术介绍

 

1 技术概念

 

负载均衡集群:英文原文为Load Balance Cluster,简称LB Cluster或者LB高扩展集群,是指以维持可接受性能的前提下处理不断提高的工作负载为目标的服务器集群技术。

 

负载均衡集群主要使用在Web服务器以及中间件应用服务器中,用来提高系统的高性能、可扩展性与高可用性;在集群中增加服务器可以提升集群系统的处理能力,每个服务器的配置不要求完全一致。

 

◆高性能

 

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

 

◆高扩展性

 

负载均衡集群具有较好的可扩展性,因为扩大系统规模非常容易,只要在集群中增加新的服务器即可。

 

◆高可用性

 

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

 

2 工作原理

 

2.1 负载均衡集群结构

 

负载均衡集群就是带均衡策略(算法)的服务器集群,服务器称作节点。负载均衡集群在多节点之间按照一定的算法分发网络或计算处理负载。

 

负载均衡建立在现有网络结构之上,提供一种廉价有效的方法来扩展服务器带宽,增加吞吐量,提高数据处理能力,同时又可以避免单点故障。

 

负载均衡集群一般的框架结构,以Web访问为例,多个Web服务器内部署相同的Web内容,Internet客户端的访问请求首先进入负载均衡器,然后由负载均衡器根据负载均衡算法合理地分配给某个Web服务器。

 

负载均衡的作用就像轮流值日制度,把任务分给大家来完成,以免让一个人过度劳累。但是与轮流值日制度不同的是,负载均衡是一种动态均衡,它通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务分配出去。对于不同的应用环境,使用的均衡策略(算法)是不同的,比如电子商务网站,它的计算负荷大;再如网络数据库应用,读写频繁,服务器的存储子系统系统面临很大压力;再如视频服务应用,数据传输量大,网络接口负担重压。所以负载均衡策略也就有了多种多样的形式,广义上的负载均衡既可以设置专门的网关、负载均衡器,也可以通过一些专用软件与协议来实现。

 

在OSI(开发系统互连)七层协议模型中,第二(数据链路层)、第三(网络层)、第四(传输层)、第七层(应用层)都有相应的负载均衡策略。在数据链路层上实现负载均衡的原理是根据数据包的目的MAC地址选择不同的路径;在网络层上可利用基于IP地址的分配方式将数据流疏通到多个节点;而传输层和应用层的交换(Switch),本身便是一种基于访问流量的控制方式,能够实现负载均衡。

 

目前实现负载均衡的产品可以分为硬件产品、类硬件与软件产品三大类。

 

◆硬件产品:比软件产品运行快,但价格较高。比如Alteon 公司的AD3。

 

◆类硬件:是指用一台专门的服务器安装特定的软件来模拟硬件负载均衡器,比如在Turbo Linux操作系统上安装TCS(Turbo Cluster Server)软件。类硬件一般只用来提供网络请求的分发,而不作为功能服务器向客户端提供服务。

 

◆软件产品:包括Web服务器层和应用服务器层的很多产品都提供了负载均衡功能。

 

2.2 负载均衡策略

 

所有的负载均衡产品都需要一定的负载均衡策略来实现,负载均衡策略也被称为负载均衡算法。目前,最常用的负载均衡算法主要有三种:轮循(Round-Robin)、最小连接数(Least Connections First)和快速响应优先(Faster Response Precedence)。

 

轮循算法,就是将来自网络的请求依次分配给集群中的服务器进行处理。

 

最小连接数算法,就是为集群中的每台服务器设置一个记数器,记录每个服务器当前的连接数,负载均衡系统总是选择当前连接数最少的服务器分配任务。这要比“轮循算法”好很多,因为在有些场合中,简单的轮循不能判断哪个服务器的负载更低,也许新的工作又被分配给了一个已经很忙的服务器了。

 

快速响应优先算法,是根据集群中的服务器状态(CPU、内存等主要处理部分)来分配任务。这一点很难做到,事实上到目前为止,采用这个算法的负载均衡系统还很少。尤其对于硬件负载均衡设备来说,只能在TCP/IP协议方面做工作,几乎不可能深入到服务器的处理系统进行监测。但是它是未来发展的方向。

 

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

 

转自:http://net.zdnet.com.cn/network_security_zone/2010/0507/1734125.shtml

详述集群负载均衡

 

ZDNET网络频道时间:2010-05-07作者: | ZDNet网络频道

本文关键词:网络 负载均衡

集群中使用负载均衡技术已经是大家所熟知的事情了,那么,这两者的关系式如何发展而来的呢?这就让我们一起来看看吧。首先我们来说下我们的系统设计需求,以及集群的概念,然后是对负载均衡的解释。

 

Tomcat5自带一个基于规则的负载均衡应用?根据两种负载均衡策略(扩展自规则API,分别是round-robin和random算法)来重定向进入的请求?讲述运行在集群环境中的样例Web应用的性能评测?通过负载测试工具JMeter模拟多个Web用户的方式来研究负载均衡机制?

 

◆大型系统的设计

 

企业级的Web门户应用必须提供可升级能力(scalability)和高可用性(HA),在同一个网站下为数以百万计的用户提供服务?可升级是系统可以通过增加服务器来支持更多的数量的用户?高可靠性是系统提供基本的冗余能力?在集群中的某个成员失效时,其他成员能透明的接替处理对Web服务的请求?在集群的环境中部署一个Web门户应用能提供门户网站需要的可升级和高可用性的能力?基本上,集群的主要目的是防止某些站点出现当机的问题,应付系统的单点失效?

 

大型系统的设计目的是在企业应用环境中提供稳定的服务,确保最少的当机时间和最大的可升级能力?运行的不是单一的服务器,有多个协作服务器也同时在运行?为了达到可升级的能力,集群能任意增加机器数量,而为了最少的当机时间,集群中每一个组件都是可冗余的?大型系统的主要因素就是集群,包含负载均衡?容错?session状态持久化等特性?在集群中,通常负载均衡器(硬件或软件)布置在应用服务器的前面?这些负载均衡器通过使用重定向Web交易到相应的集群成员来在集群的节点内分发负载,并且在同时检查集群内是否有服务器失效?

 

◆集群

 

集群的定义好比一组应用服务器透明的运行J2EE应用,就象在一台机器上执行一样?有两种方式的集群:垂直缩放和水平缩放?垂直缩放可以通过提高单台机器上的运行服务的数量来达到,水平缩放就要提高集群内机器的数量?水平缩放比垂直缩放更可靠?使用垂直缩放,机器的处理能力?CPU的使用情况和JVM堆内存配置都是决定应该在这台机器上运行多少的服务器实例的主要因素(众所周知的server-to-cpu比率)?

 

J2EE集群内的服务器一般使用三种配置选项的一种:

 

独立(independent),每个服务都有属于自己的一份应用程序文件的拷贝;

 

共享文件系统(sharedfilesystem),集群内所有的服务器拥有一个共同的存储设备,所有服务器的应用文件都是从该设备取得;

 

第三方的配置方法(managed),有一台管理服务器控制对应用内容的访问,通过"pushing“相应的应用内容到管理服务器作为响应?管理服务器能保证集群中所有的成员的应用有效?当部署应用时,所有的服务器都会更新,而反部署时,所有的服务器都会将应用删除?

 

集群可以在J2EE应用的各个层次使用,包括数据层?一些数据库提供商提供集群数据库,支持多个数据库服务器中的数据复制?客户透明访问(servlet容器或者应用服务器无须知道从那个数据库服务器中取的数据)?JDBC集群的例子是Oracle9i'sRealApplicationClusters(RAC)和集群JDBC(C-JDBC)?RAC支持数据库连接的失败重启?透明变更JDBC连接?请求到一台恢复后的数据库节点?C-JDBC是一个开放源的数据库集群,允许Web应用通过JDBC透明的访问数据库集群?实现数据库节点内的负载均衡和失败重启?

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics