`
wb17534806
  • 浏览: 11538 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Apache+tomcat实现负载均衡

阅读更多
Apache+tomcat实现负载均衡 集群背景介绍 术语定义 服务软体是b/s或c/s结构的s部分,是为b或c提供服务的服务性软件系统。 服务硬体指提供计算服务的硬件、比如pc机、pc服务器。 服务实体通指服务软体和服务硬体。 客户端指接受服务实体服务的软件或硬件。 两大关键特性 集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台。在客户端看来,一个集群就象是一个服务实体,但事实上集群由一组服务实体组成。与单一服务实体相比较,集群提供了以下两个关键特性: 可扩展性--集群的性能不限于单一的服务实体,新的服务实体可以动态地加入到集群,从而增强集群的性能。 高可用性--集群通过服务实体冗余使客户端免于轻易遇到out of service的警告。在集群中,同样的服务可以由多个服务实体提供。如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。集群提供的从一个出错的服务实体恢复到另一个服务实体的功能增强了应用的可用性。 两大能力 为了具有可扩展性和高可用性特点,集群的必须具备以下两大能力: 负载均衡--负载均衡能把任务比较均衡地分布到集群环境下的计算和网络资源。 错误恢复--由于某种原因,执行某个任务的资源出现故障,另一服务实体中执行同一任务的资源接着完成任务。这种由于一个实体中的资源不能工作,另一个实体中的资源透明的继续完成任务的过程叫错误恢复。 负载均衡和错误恢复都要求各服务实体中有执行同一任务的资源存在,而且对于同一任务的各个资源来说,执行任务所需的信息视图(信息上下文)必须是一样的。 两大技术 实现集群务必要有以下两大技术: 集群地址--集群由多个服务实体组成,集群客户端通过访问集群的集群地址获取集群内部各服务实体的功能。具有单一集群地址(也叫单一影像)是集群的一个基本特征。维护集群地址的设置被称为负载均衡器。负载均衡器内部负责管理各个服务实体的加入和退出,外部负责集群地址向内部服务实体地址的转换。有的负载均衡器实现真正的负载均衡算法,有的只支持任务的转换。只实现任务转换的负载均衡器适用于支持ACTIVE-STANDBY的集群环境,在那里,集群中只有一个服务实体工作,当正在工作的服务实体发生故障时,负载均衡器把后来的任务转向另外一个服务实体。 内部通信--为了能协同工作、实现负载均衡和错误恢复,集群各实体间必须时常通信,比如负载均衡器对服务实体心跳测试信息、服务实体间任务执行上下文信息的通信。 具有同一个集群地址使得客户端能访问集群提供的计算服务,一个集群地址下隐藏了各个服务实体的内部地址,使得客户要求的计算服务能在各个服务实体之间分布。内部通信是集群能正常运转的基础,它使得集群具有均衡负载和错误恢复的能力。 集群配置 从上图可知,由服务实体1、服务实体2和负载均衡器组成了一个集群。服务实体1和服务实体2参与对客户端的服务支持工作,均衡负载器为客户端维护集群的单一影像。集群实体间通过内部的通信网交流信息,这种交流机制一般采用组播协议。负载均衡器通过内部通信网探测各服务实体的心跳信息,服务实体间通过内部通信网完成任务资源的传播。可以看出,配置集群主要由配置服务实体和配置负载均衡器两部分组成。本文使用tomcat 5.5.20、apache 2.2.11配置集群环境。 开始配置集群: 1,软件列表: Apache:httpd-2.2.15-win32-x86-no_ssl.msi Tomcat:jakarta-tomcat-5.0.28.zip Jk2:mod_jk-1.2.28-httpd-2.2.3.so jk2是连接tomcat和apache的。 Jk2下载地址:tomcat官网—》Tomcat Connectors—》Browse Download Area—》jk—》binaries/--》win32/ --》选择版本下载。 注意:软件jk2对apache版本有版本支持要求,而apache和tomcat暂时没发现版本支持要求。 2,安装apache和tomcat软件,加入插件jk2: *安装apache时请注意80端口是否被占用(IIS等)。测试:http://127.0.0.1 是否是显示it works。 注意:apache不能正常启动,提示the requested operation has failed。解决办法: 运行-》cmd 进入到apache的bin目录。输入httpd.exe -w -n "Apache" -k start 会提示配置文件的具体那行出错。找起来就方便多了。注:命令里的"Apache"是系统服务里apache服务的名称。及时换成你当前使用的版本。 *Tomcat解压缩即可。我解压2个:tomcat1和tomcat2。 *jk2设置: A,把下载的 mod_jk-1.2.28-httpd-2.2.3.so 改名为 mod_jk2.so 放到apache的modules目录下. B,修改apache的conf目录下的httpd.conf,在文件最后加入一行: #加入mod_jk2.so模块 include conf\mod_jk2.conf C,在apache的conf目录下创建mod_jk2.conf文件,内容如下: # Load mod_jk2 module 这是配置jk2 LoadModule jk_module modules/mod_jk2.so # Where to find workers.properties 配置tomcat JkWorkersFile conf/workers.properties # Where to put jk logs 日志存放 JkLogFile logs/mod_jk2.log # Set the jk log level [debug/error/info] #1JkLogLevel info # Select the log format 日志格式 JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " # JkOptions indicate to send SSL KEY SIZE, JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat set the request format JkRequestLogFormat "%w %V %T" # Send JSPs for context / to worker named loadBalancer 拦截内容 JkMount /* loadBalancer D, jk2设置tomcat jk2的配置全在一个配置文件中,文件名为workers.properties,和apache 的 httpd.conf放在同一个目录下。以下是这个文件的内容: # # workers.properties START # # list the workers by name worker.list=tomcat1, tomcat2, loadBalancer 指定服务器和拦截器 # ------------------------ # First tomcat server START # ------------------------ worker.tomcat1.port=8010 对应ajp13的端口 worker.tomcat1.host=127.0.0.1 对应ip worker.tomcat1.type=ajp13 调用ajp13端口进行访问 # Specify the size of the open connection cache. #worker.tomcat1.cachesize # Specifies the load balance factor when used with # a load balancing worker. # Note: # ----> lbfactor must be > 0 # ----> Low lbfactor means less work done by the worker. worker.tomcat1.lbfactor=1 权重值,表示分多少给tomcat1服务器 # ------------------------ # Second tomcat server START # ------------------------ worker.tomcat2.port=8011 worker.tomcat2.host=127.0.0.1 worker.tomcat2.type=ajp13 # Specify the size of the open connection cache. #worker.tomcat2.cachesize # Specifies the load balance factor when used with # a load balancing worker. # Note: # ----> lbfactor must be > 0 # ----> Low lbfactor means less work done by the worker. worker.tomcat2.lbfactor=1 # ------------------------ # Load Balancer worker # ------------------------ # The loadbalancer (type lb) worker performs weighted round-robin # load balancing with sticky sessions. # Note: # ----> If a worker dies, the load balancer will check its state # once in a while. Until then all work is redirected to peer # worker. worker.loadBalancer.type=lb worker.loadBalancer.balanced_workers=tomcat1, tomcat2 # # workers.properties END # 对于jk2模块的负载均衡配置可参见相关站点,值得提的是jk2的负载均衡还支持权重分配等优秀功能。 3,修改tomcat相关端口号,在conf文件下server.xml文件中: 第一个tomcat1: <server port="8006" shutdown="SHUTDOWN" debug="0"> tomcat服务端口 <connector port="8081" maxthreads="150" minsparethreads="25" maxsparethreads="75" enablelookups="false" redirectport="8443" acceptcount="100" debug="0" connectiontimeout="20000" disableuploadtimeout="true"></connector> 连接端口 <connector port="8010" enablelookups="false" redirectport="8443" debug="0" protocol="AJP/1.3"></connector> ajp的连接端口 第二个tomcat2: <server port="8007" shutdown="SHUTDOWN" debug="0"><connector port="8082" maxthreads="150" minsparethreads="25" maxsparethreads="75" enablelookups="false" redirectport="8443" acceptcount="100" debug="0" connectiontimeout="20000" disableuploadtimeout="true"></connector><connector port="8011" enablelookups="false" redirectport="8443" debug="0" protocol="AJP/1.3"></connector> 4,测试负载运行是否正常: 在tomcat1和tomcat2下弄两个相同页面不同内容的页面进行测试。主要看是否内容交替出现。 配置session同步: 修改tomcat1和tomcat2下server.xml文件: Tomcat1: <engine name="Catalina" defaulthost="localhost" jvmroute="tomcat1" debug="0"> 然后去掉标签<cluster>的注释,再修改 <receiver classname="org.apache.catalina.cluster.tcp.ReplicationListener" tcplistenaddress="auto" tcplistenport="4003" tcpselectortimeout="100" tcpthreadcount="6"></receiver> Tomcat1: <engine name="Catalina" defaulthost="localhost" jvmroute="tomcat2" debug="0"> 去掉标签<cluster>的注释,再修改 <receiver classname="org.apache.catalina.cluster.tcp.ReplicationListener" tcplistenaddress="auto" tcplistenport="4002" tcpselectortimeout="100" tcpthreadcount="6"></receiver> 注意:只要tcpListenPort不相同,不占用即可。 </cluster></engine></cluster></engine></server></server> 实在不想编辑了,感兴趣请下载附件,谢谢
分享到:
评论

相关推荐

    apache+tomcat+jk 均衡负载和集群

    Apache+Tomcat+JK是一个常见的Web服务器和应用服务器集群解决方案,用于实现负载均衡和高可用性。这个配置中,Apache作为前端反向代理服务器,Tomcat作为后端的应用服务器,而JK模块是Apache与Tomcat之间的连接器,...

    配置安装Apache+Apache Tomcat实现tomcat负载均衡教程.doc

    配置安装Apache+Apache Tomcat实现tomcat负载均衡教程.doc

    Apache+Tomcat+JK 实现集群负载均衡文档

    Apache+Tomcat+JK 实现集群负载均衡是一种常见的Web服务器和应用服务器的部署方式,它能够提高系统的可用性和响应速度,实现服务的高并发处理。本文将详细介绍如何配置这一环境。 首先,我们需要准备以下软件: 1. ...

    windows平台apache+tomcat+说明文档负载均衡整个环境

    本人自己配置的windows平台apache+tomcat负载均衡实现,这个资源中包括apache,tomcat,测试项目+说明文档。只要正确安装apache,即可直接正常运行。本人参考网络,所以给贡献网络。

    apache+tomcat 实现负载均衡

    #========controller,负载均衡控制器======== worker.controller.type=lb worker.controller.balanced_workers=tomcat1,tomcat2 worker.controller.sticky_session=1 5 修改tomcat的端口号(3处) ...

    apache+tomcat7+jk负载均衡

    "Apache+Tomcat7+jk负载均衡"的组合就是一种常见的解决方案,它通过Apache HTTP Server作为前端代理服务器,利用JK模块(mod_jk)将请求分发到多台后端的Tomcat7应用服务器上,实现负载均衡和故障转移。下面我们将...

    Apache+Tomcat实现负载均衡及集群(session同步)--五、session同步(3)使用memcache

    Apache和Tomcat的组合经常被用来搭建这样的架构,特别是在实现负载均衡和集群时。在这个场景中,session同步是一个核心问题,因为用户session数据的正确管理和共享是保持应用程序一致性和用户体验的关键。本文将深入...

    Apache+JK+Tomcat搭建负载均衡

    Apache+JK+Tomcat搭建负载均衡是一种常见的高可用性和性能优化策略,主要目的是分散网络流量,提高服务的稳定性和响应速度。这个方案特别适合大型网站或应用,可以有效防止单点故障,提升用户体验。 首先,负载均衡...

    Apache+tomcat负载均衡

    Apache通常通过其模块mod_proxy来实现负载均衡,它可以与Tomcat或者其他应用服务器进行集成。 在Apache中配置负载均衡,首先需要安装mod_proxy和mod_proxy_balancer模块。这些模块允许Apache作为反向代理服务器,...

    apache+tomcat集负载均衡

    Apache 和 Tomcat 集群负载均衡是一种常见的高可用性和可扩展性解决方案,它通过将请求分散到多个服务器上,确保即使单个服务器出现问题,整个系统仍能保持正常运行,并且能够处理更多的并发请求。 首先,我们需要...

    APACHE +TOMCAT配置负载均衡

    总之,Apache + Tomcat负载均衡配置涉及多个组件的设置,包括Apache的模块配置、虚拟主机设置、Tomcat的AJP连接器以及Session管理和文件访问控制。正确配置后,这种架构可以显著提高网站的可靠性、扩展性和用户体验...

    nginx+tomcat实现负载均衡1

    在IT行业中,构建高效、可扩展的Web服务是至关重要的,而"nginx+tomcat实现负载均衡1"的主题就是探讨如何通过Nginx反向代理和Tomcat应用服务器结合,来提升系统的性能和稳定性。这一组合是业界常用的一种架构模式,...

    Apache+Tomcat+Linux集群和均衡负载(Session同步复制

    Apache+Tomcat+Linux集群和均衡负载(Session同步复制

    jk+apache+tomcat整合 负载均衡 集群

    jk+apce+tomcat 整合 实现tomcat负载均衡 tomcat集群。让tomcat处理.jsp动态页面,apache处理静态页面。平且实现在一个IP下提供多个站点服务。 里面包括怎样配置apache虚拟机文件 怎样配置tomcat的虚拟机文件 花了我...

    apache+tomcat负载均衡_proxy模式

    内附完整配置教程和修改后的apache的httpd.conf文件和tomcat的server.xml配置文件,包含test测试项目,不包含apache和tomcat安装文件。 本教程参考网上资料,本机测试成功,如有问题可以私信说明。

    Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程

    在Linux环境中,使用Apache、Tomcat和JK模块实现负载均衡和群集是一项常见的高可用性架构设计,它能够有效地分发网络流量,提高系统的可扩展性和稳定性。Apache作为前端Web服务器,负责接收用户请求并根据配置策略将...

    apache + tomcat 负载均衡worker模式初探

    阅读这份手册可以帮助你深入理解Apache + Tomcat负载均衡worker模式的配置和管理,确保系统稳定高效地运行。 总的来说,Apache + Tomcat的负载均衡worker模式通过合理调度请求,能够有效地提升服务的可用性和响应...

    Nginx+Tomcat搭建负载均衡,实现网站请求的分发

    Nginx+Tomcat搭建负载均衡,实现网站请求的分发 Nginx+Tomcat搭建负载均衡是实现网站请求的分发的常见解决方案。以下是该解决方案的详细知识点说明: 一、负载均衡的概念 负载均衡是指将网络请求分配到多个服务器...

    nginx+tomcat7负载均衡+redis缓存session

    在构建高性能、高可用性的Web应用系统时,"nginx+tomcat7负载均衡+redis缓存session"是一种常见的架构模式。这种模式结合了Nginx的反向代理和负载均衡能力,Tomcat作为Java应用服务器处理业务逻辑,而Redis则用于...

Global site tag (gtag.js) - Google Analytics