`
norain1988
  • 浏览: 57169 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

apache Web服务器集群负载均衡技术 (转)

阅读更多
Internet 的快速增长,特别是电子商务应用的发展,使Web应用成为目前最重要最广泛的应用,Web服务器动态内容越来越流行。目前,网上信息交换量几乎呈指数增长,需要更高性能的Web服务器提供更多用户的Web服务,因此,Web服务器面临着访问量急剧增加的压力,对其处理能力和响应能力等带来更高的要求,如果Web 服务器无法满足大量Web访问服务,将无法为用户提供稳定、良好的网络应用服务。
    由于客观存在的服务器物理内存、CPU 处理速度和操作系统等方面的影响因素,当大量突发的数据到达时,Web服务器无法完全及时处理所有的请求,造成应答滞后、请求丢失等,严重的导致一些数据包因延时而重发,使传输线路和服务器的负担再次增加。传统的方法是提高Web 服务器的CPU 处理速度和增加内存容量等硬件办法但无论如何增加Web 服务器硬件性能,均无法满足日益增加的对用户的访问服务能力。
    面对日渐增加的Web 访问服务要求,必须对Web 服务器按一定策略进行负载分配。利用负载均衡[1]的技术,按照一定策略将Web 访问服务分配到几台服务器上,负载处理对用户透明,整体上对外如同一台Web 服务器为用户提供Web服务。
2  Web负载均衡结构
2.1  负载均衡
    负载是一个抽象的概念,是表示系统繁忙程度,系统在一段时间空闲,该系统负载轻,系统在一段时间空忙,该系统负载重,影响系统负载的各种因数较多如果存在很多的数据包同时通过网络连向一台Web服务器,也就是网络的速度比网络所连接的设备速度快的情况下,系统负载不断增加,直到最大。
    目前提高Web 服务器性能,使其具有较强负载能力,主要有两种处理思想[2]:
    1)单机思想
    不断升级服务器硬件性能,每当负载增加,服务器随之升级。这随之将带来一些问题,首先,服务器向高档升级,花费资金较多;其次,升级频繁,机器切换造成服务中断,可能会导致整个服务中断;最后,每种架构的服务器升级总有一个极限限制。
    2)多机思想
    使用多台服务器提供服务,通过一定机制使它们共同分担系统负载,对单一的服务器没有太高的性能要求,系统负载增加,可以多增加服务器来分担。对用户而言,整个系统仿佛是一台单一的逻辑服务器,这样的系统能够提供较强的可扩展性和较好的吞吐性能。
    为了适应当前急剧增长的Web访问,有别于传统的单机思想,解决单机思想带来的一系列问题,本文提出了一种基于权值的策略分配负载。
2.2  负载均衡实现设备[2]
    目前实现负载均衡需要两类的设备:服务器和分配器。
    1)服务器(Server)
    为用户提供真正的服务,也就是指给用户提供负载均衡服务的计算机设备,有关该设备的一些性能数据是负载均衡的主要依据之一。
    2)分配器(Dispatcher)
    由用户浏览器、Web 服务器组成两层结构Web 系统[2],如图1所示,实际是基于客户端的负载均衡。

图1
    负责给用户服务分配服务器,分配器的主要功能是根据客户和服务器的各种情况(这些情况要能反映服务器的负载状况或性能状况)通过一定的算法进行调动和分配工作,从而提高由服务器整体构成的网站的稳定性、响应能力。它主要是集中所有的HTTP 请求,然后分配到多台Web服务器上处理,来提高系统的处理效率。
2.3  负载均衡系统结构
2.3.1 两层结构的负载均衡系统
    在服务器上运行一个特定的程序,该程序相当一个客户端,它定期的收集服务器相关性能参数,如CPU、I/O、内存等动态信息,根据某种策略,确定提供最佳服务的服务器,将应用请求转发给它。如果采集负载信息程序发现服务器失败,则找其它服务器作为服务选择。这是一种动态负载均衡技术,但是每台服务器上必须安装特定的客户端程序,同时,为保证应用程序的透明性,需要对每个应用进行修改,能够将访问请求通过该客户端程序转发到其它服务器上,重定向方式进行,修改每一个应用程序,工作量十分大。
2.3.2 三层结构的负载均衡系统
    由用户浏览器、负载均衡和Web服务器组成三层结构Web系统[2],如图2所示。实际是基于服务器的负载均衡。

图2
    如果将基于客户端的负载均衡中客户端的负载均衡部分移植到一个中间平台,形成一个应用服务器,构成请求、负载均衡和服务器的三层结构,客户端应用不需要做特殊修改,透明的中间层将请求均衡的分布到不同的服务器。
    据服务器直接连到Internet 与否有两种多Web 服务器结构:隔离式(Separation) 和非隔离式(Unseparation)。隔离式是服务器不直接连到Internet,如图3所示,非隔离式是服务器直接连到Internet,如图4所示。

图3

图4
    隔离式中只有负载均衡器对外有一个IP 地址,所有的请求由负载均衡器分配到不同的Web Server,所有Web Server 的返回结果也经过负载均衡器传回给用户。非隔离式中每一台Web Server 都有一个IP地址,用户请求经过负载均衡器分配到Web Server,而请求的应答不经过负载均衡器,直接传回用户。为了减轻均衡器的负载,本文中采用了三层结构中的隔离方式。
2.4  负载均衡实现的方法
    Web 负载均衡常见算法有[3]:循环调度算法(Round-Robin Scheduling)、加权循环调度算法(Weighted Round-Robin Scheduling) 、最小连接调度算法(Least-Connection Scheduling)、目标地址散列调度算法(Destination Hashing Scheduling)、源地址散列调度算法(Source Hashing Scheduling)。
    本文采用基于权值的调度算法,也就是说权值大的服务器优先得到调度,本文在实现时是基于静态的权值,就是在开始的时候给每一个服务器配置一个默认的权值。当然也可以根据实际运行情况再对每一个服务器的权值进行调整。但是这需要实时的搜集每一个服务器的信息,如服务器的内存实用情况,响应速度等一些信息。
3  Web服务器集群环境配置与测试[4][6][9]
3.1 搭建环境
3.1.1 软硬件环境的搭建
    (1)服务器有4台,一台安装apache,三台安装tomcat。
    (2)服务器的操作系统都是Windows XP。
    (3)其中安装apache的服务器充当负载均衡器,其它三台是给用户真正服务的服务器。
    (4)IP配置,一台安装apache的IP为219.218.22.130,三台安装tomcat的服务器IP分别为 219.218.22.131/132/133。
3.1.2 软件的安装与配置
    1)安装tomcat的服务器的配置
    (1)在三台安装tomcat的服务器上安装jdk。
    (2)配置jdk的安装路径,在环境变量path中加入jdk的bin路径,新建环境变量JAVA_HOME指向jdk的安装路径。
    (3)在三台要安装tomcat的服务器上分别安装tomcat,调试三个tomcat到能够正常启动。
    (4)tomcat的默认WEB服务端口是8080,默认的模式是单独服务,我配置的三个tomcat的Web服务端口修改为7080/8888 /9999。
    修改位置为tomcat的安装目录下的conf/server.xml在文件中找到下面的语句:
<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads= "75" enableLookups="false"  redirectPort="8443" acceptCount= "100”connectionTimeout="20000" disableUploadTimeout= "true" />
    只需改动Port=”8080”为上面提到的端口号就行,对安装tomcat的三个服务器这个文件做改动。
    2)负载均衡服务器配置1
    (1)在那台要安装apache的服务器上安装apache,我的安装路径为默认C:\Program Files\Apache Group\Apache2。
    (2)安装后测试apache能否正常启动,调试到能够正常启动http://219.218.22.130。
    (3)下载jk2.0.4后解压缩文件。
    (4)将解压缩后的目录中的modules目录中的mod_jk2.so文件复制到apache的安装目录下的modules目录中。
    (5)修改apache的安装目录中的conf目录的配置文件httpd.conf,在文件中LoadModule模块配置信息的最后加上一句 LoadModule jk2_modules/mod_jk2.so。
    (6)分别修改三个tomcat的配置文件conf/server.xml在文件中找到下面的语句<Enginename=”Standalone” defaultHost=”localhost” jvmRoute=”jvm1”>只需改动jvmRoute的值,在这里分别改为tomcat1,tomcat2和tomcat3。
    3)均衡服务器的配置2
    在apache的安装目录中的conf目录下创建文件workers2.propertie,写入文件内容如下:
#fine the communication channel
[channel.socket:219.218.22.130:8009]
Info=Ajp13 forwarding over socket
#配置第一个服务器
tomcatId=tomcat1 #要和tomcat的配置文件server.xml中的jvmRoute="tomcat1"名称一致debug=0 lb_factor=1#负载平衡因子,数字越大请求被分配的几率越高。类似地再配置其它的服务器。最后加上这样的句子info=Status worker,displays runtime information  [uri:/jkstatus.jsp] info=Display status information and checks the c onfig file for changes. Group =status: [uri:/*]
info=Map the whole Webapp debug=0
    4)安装tomcat的服务器配置2
    在三个tomcat的安装目录中的webapps建立相同的应用,我和应用目录名为GroupTest,在三个应用目录中建立相同 WEB-INF目录和页面index.jsp,index.jsp的页面的主要内容是打印出为客户服务的服务器的IP地址和端口号,当然还有其它一些内容,最主要的是这些内容,这样当我们在测试的时候也方便地知道为其提供服务的服务到底是哪一个服务器,这个信息是非常重要的,这样我们能看出当大量用户访问的时候我们能知道负载分配的情况。
    5)集群配置
    分别修改三个tomcat的配置文件conf/server.xml找到以下面语句开始的地方:
<!-- <Cluster className="org.apache.c
       atalina.cluster.tcp.SimpleTcpCluster”
<ClusterListener className="org.apache.catalina.cluster. session.ClusterSessionListener"/> </Cluster>  -->  将最上,最下面的一行都改为<!-- modify by whh -->就可以了。
    然后再在Conf目录下建立jk2.properties文件,写入下面一行,其中端口为相应的channelSocket.port=8009
    6)集群应用配置
    对于要进行负载和集群的tomcat目录下的webapps中的应用中的WEB-INF中的web.xml文件要添加如下一句配置<distribut
able/>到此为止配置完成剩下的就是测试
3.2  环境的测试
    (1)首选分别测试每个tomcat的启动是否正常。
    http://219.218.22.131:7080
    http://219.218.22.132:8888  
    http://219.218.22.133:9999
    (2)其次测试一下负载均衡服务器http://219.218.22.130/jkstatus.jsp 再访问一下http://219.218.22. 130/GroupTest/index.jsp以上测试成功,这说明负载均衡配置已经成功。
3.3  集群系统负载均衡测试
    利用多个客户端访问页面index.jsp[5][7][8],能够在客户端的浏览器中看到为其提供服务的服务器的IP地址和端口,以及其它一些信息。这说明,在并发请求的情况下,集群能够将请求进行分发,达到了负载平衡的目的。下面是本实验测试的一些数据,详细内容如表格所示:
     
客户端
数量 服务器A,B,C
权值 服务器A,B,C
处理请求数量
3 0.5,0.8,0.3 1,2,0
4 0.5,0.8,0.3 1,2,1
7 0.5,0.8,0.3 2,3,2
12 0.5,0.8,0.3 4,6,2
19 0.5,0.8,0.3 6,9,4

3.4  集群系统负载均衡测试分析
    由上面的表格可知,当增加客户端的访问数量的时候我们可以发现设置权值在的服务器处理的请求个数多,这说明这个负载均衡系统达到了我们的预定目标,这样的系统也适用于集群中的服务器处理能力不一致的情况。此系统具有良好的适应能力,非常好地解决了在单机思想下无法解决的系统瓶颈问题。
3.5  本系统的不足之处
    本系统在除了有单机思想不能比拟的优点之处,也有自己的不足之处,比如本系统不能根据每个服务器的实际运行情况动态地调整集群中的每一个服务器权值,因此当有大量的用户同时访问时并不能真正的做到绝对的负载均衡,只能相对比较均匀地将负载分配到集群中的每一个服务器中去。所以本系统也有待于进一步优化,比如实时地搜集每一服务器的信息,做到动态地调整每一个服务器的权值,有关系统的进一步优化问题,将做进一步的研究。
4  结束语
    本文提出了一种基于三层结构的Web服务器集群负载均衡的设计方案,通过对系统进行测试,本系统能够达到负载均衡的目的,实现了本系统设计的初衷,能够适应目前Internet 的发展需求。
分享到:
评论

相关推荐

    Web服务器基于Apache集群与负载均衡之Tomcat

    希望对广大网络爱好者提供帮助,多谢指点交流

    apache 负载均衡集群

    apache负载均衡的详细配置,你能根据这份文档的介绍,轻松的配置web服务器的负载均衡,让服务器运行更稳定。

    Apache+Tomcat服务器集群实现负载均衡

    在实际操作中,主要是Apache作为主服务器运行,当监听到有jsp或者servlet的请求时,将请求转发给tomcat服务器,由tomcat服务器进行解析后,发回apache,再由apache发回用户。 在tomcat中有两个监听的端口,一个是...

    基于Apache和Tomcat的负载均衡和服务集群

    Apache和Tomcat都是众所周知的优秀web服务器。Apache强于处理静态文件的处理,而tomcat是一个开源的servlet容器,可以执行java开发的jsp 类型的web应用。它们既可以单独使用,也可以联合起来使用达到更加优良的性能...

    基于集群的web服务器负载均衡设计的 软件

    做过的基于集群的web服务器负载均衡设计所用到的服务器软件,有tomcat apache 还有.so文件

    高并发web集群框架搭建

    支持高并发、高可用、高可扩展的web集群框架搭建。采用nginx(当然也可以用lvs,前提是使用了redis,如果没用redis必须...最后使用memcache做web服务器缓存。具体还有很多详细配置,可邮件我:tianyang200209@sina.com

    运维-Nginx代理服务器-方向代理-负载均衡-数据缓存

    负载均衡:LB是一种集群技术,它将特定的业务(网络服务、网络流量等)分担给多台网络设备(包括服务器、防火墙等)或多条链路,从而提高了业务处理能力,保证了业务的高可靠性。简单来说,就是把多条客户端的请求传...

    用apache和tomcat搭建集群(负载均衡)

    一、集群和负载均衡的概念 (一)集群的概念  集群(Cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提供网络服务或应用程序(包括数据库、Web服务和文件服务等)的单一客户视图,...

    Web应用的负载均衡、集群、高可用(HA)解决方案

    ——它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安全Socket层(SSL)等等,目前互联网主要使用它做静态资源服务器,也...

    nginx 作为反向代理实现负载均衡的例子

    〉另外一个功能就是作为反向代理服务器实现负载均衡 以下我们就来举例说明如何使用 nginx 实现负载均衡。因为nginx在处理并发方面的优势,现在这个应用非常常见。当然了Apache的 mod_proxy和mod_cache结合使用也...

    keepalived 安装手册.docx

    javaweb高可用+负载均衡-服务器集群(keepalived+apache+tomcat)生产环境部署手册 所用技术:1高可用集群keepalived。2负载均衡集群apache。3tomcat服务。4生产环境的日常维护脚本 真实生产环境在用的技术架构,亲...

    架构设计方案

    3)通过web服务器的配置来实现负载均衡 即通过apache或是Nginx 将客户请求均衡的分给tomcat1,tomcat2....去处理。 2.1.2WEB应用开发架构思路 1)应用开发实现MVC架构三层架构进行web应用开发 2)页面尽可能静态化以减少...

    最全面的门户网站架构设计方案.doc

    实现网络流量的负载均衡 4 3.3 系统测算 4 3.3.1 系统处理能力要求 4 3.3.2 业务处理能力要求 4 3.3.3 系统话务模型 4 3.4 配置核算 5 3.4.1 数据库服务器性能核算 5 3.4.2 WEB服务器集群性能核算 5 3.4.3 WEB服务器...

    Apache安装及JBOSS部署说明文档.rar

    本文档描述了apache web服务器安装以及常用的编译模式;描述了apache jboss3.2.6做负载均衡(load balance)的部署细节以及一些常见错误说明;描述了部署jboss3.2.3/3.2.6时一些心得、常用配置项。 目 录 1 ....

    Apache2+Tomcat7+mod1.3整合

    为优化web服务器性能,需要配置Apache集群和负载均衡,本文档记录了完整的配置过程。

    应用服务器中间件技术要求.doc

    " "集群与可用性要"必须支持通过Apache、IIS实现集群、负载均衡和系统 " "求 "扩展。 " " "支持多服务器群集部署、负载均衡、组件级的失效即时" " "恢复(Fail Over)。支持Web层的集群和EJB集群。应 " " "提供较...

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    2.3.3 Varnish对应多台Web服务器的配置实例 2.4 运行Varnish 2.4.1 varnishd指令 2.4.2 配置Varnish运行脚本 2.4.3 管理Varnish运行日志 2.5 管理Varnish 2.5.1 查看Varnish进程 2.5.2 查看Varnish...

    网站架构及高性能并发服务器设计

     用负载均衡技术建设高负载站点 20  大型网站的架构设计问题 25   开源平台的高并发集群思考 26  大型、高负载网站架构和应用初探 时间:30-45分钟 27  说说大型高并发高负载网站的系统架构 28 好的案例...

    apache+tomcat+memcached 全配置

    本人是UBUNTU 的操作系统,但是全部是用源码安装的,可能有些细节不一样,但总体应该没问题, 我两台虚拟机上,成功共享session ...apache+tomcat+memcached 集群 session 共享会话,apache负载均衡

Global site tag (gtag.js) - Google Analytics