`
enet_java
  • 浏览: 55209 次
社区版块
存档分类
最新评论

Apache负载均衡 Tomcat6的集群和session的复制

阅读更多
系统环境:Windows XP SP3 ,jdk1.5.0_05
软件版本:apache_2.2.11-win32-x86-openssl-0.9.8i.msi  apache-tomcat-6.0.16  apache-tomcat-6.0.18
备注:tomcat可以下载压缩包直接解压就可以,另外也下载整合了APR(Apache Tomcat Native library 1.1.16)
Apache和Tomcat的整合个人推荐使用AJP的方式,配置简单,而且现在tomcat官方鼓励采用这种方式呢!如果想体验mod_JK的方式,下面也有介绍。
我是在同一台机器上作的测试,因为我完成了apache的负载均衡以及tomcat6的集群和session的复制,所以需要修改到的地方可能比较多,先将配置列出如下:
一、AJP方式的配置:
1、 修改apache的httpd.conf
首先要load所需要的so文件,需要列表如下:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so

ProxyPass /images !
ProxyPass /css !
ProxyPass /js !

<Proxy balancer://cluster/>
BalancerMember ajp://localhost:8009/ route=tomcat1 loadfactor=50
BalancerMember ajp://localhost:9009/ route=tomcat2 loadfactor=50
</Proxy>

开启虚拟主机
# Virtual hosts
Include conf/extra/httpd-vhosts.conf

httpd-vhosts.conf:
NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin winsky_2008@163.com
    DocumentRoot "D:\www\webapps"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
    ProxyRequests Off
    ProxyPass / balancer://cluster/ stickysession=JSESSIONID nofailover=On
    ProxyPassReverse / balancer://cluster/
    #ProxyPassReverse /test balancer://cluster/ test
</VirtualHost>
二、mod_jk方式的配置
1、修改apache的httpd.conf
LoadModule  jk_module modules/mod_jk.so
JkWorkersFile "conf\workers.properties"
JkMountFile  "conf\uriworkermap.properties"

JkLogFile "logs\mod_jk2.log"
JkShmFile "logs\jk.shm"
JkLogLevel info

workers.properties:
workers.java_home=D:\ jdk1.5.0_05
ps=\
worker.list= status,LBCONTROLLER


# localhost server 1
# ------------------------
worker.s1.port=8009
worker.s1.host=localhost
worker.s1.type=ajp13

# localhost server 2
# ------------------------
worker.s2.port=9009
worker.s2.host=localhost
worker.s2.type=ajp13

worker.LBCONTROLLER.type=lb
worker.retries=3
worker.LBCONTROLLER.balanced_workers=s1,s2
worker.LBCONTROLLER.sticky_session=true

worker.status.type=status

uriworkermap.properties:
/*= LBCONTROLLER
#/*.jsp= LBCONTROLLER
#/*.do= LBCONTROLLER
#/*.action= LBCONTROLLER
#/servlet/*= LBCONTROLLER

/jkstatus=status

!/*.gif= LBCONTROLLER
!/*.jpg= LBCONTROLLER
!/*.png= LBCONTROLLER
!/*.css= LBCONTROLLER
!/*.js= LBCONTROLLER
!/*.htm=DLOG4J
!/*.html=DLOG4J
开启虚拟主机
# Virtual hosts
Include conf/extra/httpd-vhosts.conf

httpd-vhosts.conf:
NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin winsky_2008@163.com
    DocumentRoot "D:\www\webapps"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/localhost-error.log"
CustomLog "logs/localhost-access.log" common
JkMountCopy On
</VirtualHost>

三、修改%TOMCAT_HOME%/conf/server.xml(跟使用AJP和JK方式没有关系,皆通用)
添加集群的配置:
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6">
       <!-- 
        <Manager className="org.apache.catalina.ha.session.BackupManager"
                 expireSessionsOnShutdown="false"
                 notifyListenersOnReplication="true"
                 mapSendOptions="6"/>
         -->
        <Manager className="org.apache.catalina.ha.session.DeltaManager"
                expireSessionsOnShutdown="false"
                notifyListenersOnReplication="true"/>

        <Channel className="org.apache.catalina.tribes.group.GroupChannel">
            <Membership className="org.apache.catalina.tribes.membership.McastService"
                        address="228.0.0.4"
                        port="45564"
                        frequency="500"
                        dropTime="3000"/>
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="auto"
                      port="5001"
                      selectorTimeout="100"
                      maxThreads="6"/>
            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
                    <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
            </Sender>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
        </Channel>
        <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
               filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
       <!--
        <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
        -->
        <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                  tempDir="/tmp/war-temp/"
                  deployDir="/tmp/war-deploy/"
                  watchDir="/tmp/war-listen/"
                  watchEnabled="false"/>
                  <!--
        <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
        -->
        <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
      </Cluster>
四、实现session复制
第一步:
Tomcat 6.0.16
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">
<!--   
    <Engine name="Catalina" defaultHost="localhost">
-->
Tomcat 6.0.18
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat2">
<!--   
    <Engine name="Catalina" defaultHost="localhost">
-->

  第二步:
Webapps目录下的应用程序的web.xm中必须添加
<distributable/> 此应用将与群集服务器复制Session

因为是在同一台机器上启动多个tomcat,所以修改监听的端口是必不可少的,这里将我的配置列出如下:
Tomcat 6.0.16
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" acceptCount="5000" maxThreads="2000"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Tomcat 6.0.18
<Connector port="9080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="9443" acceptCount="5000" maxThreads="2000"/>
<Connector port="9009" protocol="AJP/1.3" redirectPort="9443" />
配置完成,先启动所有tomcat服务器,最后启动apache2.2服务器
以上为个人使用过程的总结,具体的性能没有做测试,所以没法做比较,如有疑问,可以联系QQ:735014642,进行沟通,欢迎指正~~

附件提供文档下载:关于windows下整合Apache和Tomcat的个人经验.rar

参考连接:http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_proxy.html
          http://tomcat.apache.org/tomcat-6.0-doc/config/cluster.html
分享到:
评论
2 楼 song_in_china 2012-06-17  
我刚看到,会不会有点晚呢
1 楼 bingel 2009-10-19  
谢谢你的博文
看完后 测试成功
非常感谢!!!!!!

相关推荐

    apache,tomcat负载均衡和session复制

    当我们谈论"Apache,tomcat负载均衡和session复制"时,这意味着我们要探讨如何在多台服务器之间分配负载,并确保用户会话的无缝迁移和一致性。 **负载均衡**是解决高并发、高可用性问题的重要策略。它通过将来自...

    apache2 JK tomcat6 集群 负载均衡

    在Apache2和Tomcat6的环境下,我们可以利用Apache的mod_jk模块来实现这种集群和负载均衡。 1. **mod_jk模块**:这是Apache的一个模块,负责与Tomcat之间的通信,它提供了AJP(Apache JServ Protocol)协议,允许...

    实例Apache负载均衡+Tomcat集群

    在搭建Apache负载均衡和Tomcat集群之前,需要准备相应的硬件设备。文中提到使用两台服务器,每台服务器上部署两个Tomcat实例,形成一个包含四个Tomcat实例的集群。这里的服务器可以是实体服务器,也可以使用虚拟机。...

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

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

    Window下Apache负载均衡+Tomcat集群

    通过以上步骤,我们可以创建一个基于Apache的负载均衡Web服务器,它将流量分发到多个Tomcat实例,以提高服务的可用性和响应速度。同时,我们还设置了Session超时和防止目录浏览的安全措施。这种架构对于处理高流量的...

    Apache2负载均衡+Tomcat6集群

    1. **反向代理**:Apache2作为前端负载均衡器,接收用户请求,然后通过mod_proxy将请求转发到Tomcat集群中的某个实例。 2. **健康检查**:Apache2可以定期检查后端Tomcat实例的健康状态,如果发现某个实例不可用,...

    tomcat集群实现session复制

    在IT领域,特别是Web应用服务器的管理与优化中,Tomcat集群实现Session复制是一个关键的技术点,它确保了高可用性和负载均衡,特别是在处理大量并发请求的场景下。本文将深入探讨这一主题,涵盖其原理、配置方法以及...

    apache_server+Tomcat7集群负载均衡session共享

    在这样的设置中,Apache作为前端服务器,通过反向代理和负载均衡策略将请求分发到后端的多个Tomcat实例,以提高服务的处理能力和容错性。session共享则是一个关键问题,因为用户会话数据需要在各个Tomcat实例之间...

    apache的tomcat负载均衡(两个tomcat)和集群配置(session复制)

    综上所述,配置Apache Tomcat的负载均衡和集群需要结合反向代理服务器和适当的session复制策略。正确实施后,可以显著提升Web应用的可用性和性能,同时为用户提供无缝的会话体验。在实际操作中,务必根据具体环境和...

    apache tomcat 6集群负载和session复制

    无意间看到tomcat 6集群的内容,就尝试配置了一下,还是遇到很多问题,特此记录。apache服务器和tomcat的连接方法其实有三种:JK、http_proxy和ajp_proxy。本文主要介绍最为常见的JK。 环境:PC2台:pc1(IP 192.168....

    apache tomcat 集群 负责均衡 session复制

    NULL 博文链接:https://xueweiabcok.iteye.com/blog/1841448

    Nginx+tomcat负载均衡集群session复制 windos

    本文将详细介绍如何在Windows环境下,利用Nginx作为反向代理服务器,与Tomcat集群配合实现负载均衡,并进行session复制,确保用户会话在不同服务器之间的一致性。 首先,Nginx是一款轻量级、高性能的HTTP和反向代理...

    Apache和Tomcat实现集群和负载均衡(WindowsNT)

    ### Apache和Tomcat实现集群和负载均衡(Windows NT) #### 软件环境 为了实现Apache与Tomcat的集群及负载均衡,在Windows NT环境下需要准备以下软件环境: 1. **Apache**: 版本2.0.55。可以从官方网站...

    linux下apache+tomact基于集群负载均衡session复制

    本篇文章将详细介绍如何在 Linux 环境下搭建基于 Apache 和 Tomcat 的集群负载均衡,并实现 session 复制,以确保在多台服务器之间能够无缝地进行会话共享。 #### 二、环境配置 在部署 Apache+Tomcat 集群之前,...

    apache + tomcat 集群+session复制解决方案

    Apache 和 Tomcat 集群配合 Session 复制是一种常见的高可用性和负载均衡解决方案,尤其适用于大型网站和企业级应用。以下将详细解释这个方案的关键点。 **整体方案策略** 1. **部署逻辑图** 部署逻辑通常包括...

    Apache+Tomcat集群和负载均衡及Session绑定

    【Apache+Tomcat 集群与负载均衡及Session...通过以上配置,Apache+Tomcat集群可以实现高效的负载均衡和高可用性,同时通过Session绑定确保用户会话的连续性。注意定期监控和优化集群性能,以应对不断变化的业务需求。

    tomcat cluster 集群 session复制

    而实际情况下,采取Apache 加Tomcat进行负载均衡集群的时候,是可以不用将Session复制到所有的节点里, 比如有六个Tomcat实例 Tomcat1,Tomcat2,Tomcat3,Tomcat4,Tomcat5,Tomcat6 是可以配置成 三组互相复制...

Global site tag (gtag.js) - Google Analytics