`
ghbullor
  • 浏览: 9317 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Apache2.X + Tomcat 7 实现集群部署以及Session 同步复制

阅读更多
今天先把标题写下来.

文章参照
http://lxiaodao.iteye.com/blog/321000


一、 环境说明
1. 软件版本
 Apache :  apache_2.2.19
 Tomcat : apache-tomcat-7.0.8 (zip版) 2个或 2个以上
 mod_jk : mod_jk-apache-2.0.55.so
 运行环境 : 在一台服务器中 。

注意各个版本的匹配问题。 mod_jk 的2.0.55 对应的是Apache2.2.X的版本。

前提条件:
 两个tomcat 配置好相应的端口,以保证都能顺利的启动。 本部署手册的部署针对一台服务器上集群配置。如果你有多台服务器。则不需要修改Tomcat的端口号。只要在相应的配置中加入你的IP地址即可。
例如:
Tomcat1 放置在 D:/cluster/tomcat1  关闭端口 8005 启动端口8090  ajp端口8010
Tomcat2 放置在 D:/cluster/tomcat2 关闭端口 8006 启动端口9090  ajp端口9010

 安装好Apache, 如安装在D:/Apache2 目录。

二、 负载均衡(loadBlance)配置
 本节内容 主要配置服务器之间作为一个集群组,在服务器启动或者关闭的时候,在集群组中通知 其它机器。以及在客户端请求到来的时候可以通过负载均衡的原则合理的分配请求到不同的机器上,以分担服务器压力。

配置 负载均衡 主要是对Apache 服务器 配置文件的修改。
 打开Apache 目录下 conf/ httpd.conf , 增加内容 Include conf/extra/mod_jk.conf
 打开目录 conf/extra/  新建文件mod_jk.conf ,内容为
#加载mod_jk Module
LoadModule jk_module modules/mod_jk.so
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器 如果要Apache 负责处理静态文件 则此处应该让转发控制中的 /* -> /*.jsp 等等类似的表达式。
JkMount /* controller
 在conf 下 新建文件workers.properties
内容如下:
#========controller,负载均衡控制器======== 
worker.list=controller,tomcat1,tomcat2
worker.controller.type=lb 

#========tomcat1======== 
worker.tomcat1.port=8010       
#ajp13 端口号,在tomcat下server.xml配  置,默认8009 
worker.tomcat1.host=localhost 
#tomcat的主机地址,如不为本机,请填写ip地址 
worker.tomcat1.type=ajp13 
worker.tomcat1.lbfactor = 1  
#server的加权比重,值越高,分得的请求越多 

#========tomcat2======== 
worker.tomcat2.port=9010      
#ajp13 端口号,在tomcat下server.xml配置, 
worker.tomcat2.host=localhost
#tomcat的主机地址,如不为本机,请填写ip地址 
worker.tomcat2.type=ajp13 
worker.tomcat2.lbfactor = 1  
#server的加权比重,值越高,分得的请求越多 


worker.controller.balanced_workers=tomcat1,tomcat2
#指定分担请求的tomcat 
worker.controller.sticky_session=false
#worker.controller.sticky_session=1 
 将mod_jk-apache-2.0.55.so 改名为上面定义的mod_jk.so 放置到 /modules,文件夹下。

如此集群基本配置完成。
如果还需要虚拟主机的配置 ,可以打开虚拟主机修改对应的端口号 等等。

如果只是配置负载均衡还不够,也就是说如果一个Tomcat拥有的Session ,另外一个Tomcat不能共享 ,所以用户信息就会丢失。
三、 配置集群(Session 同步)配置
 本节 内容主要讲述如何配置Session 同步,以保证多台服务器之间共同享有相同的Session。不至于在某一台服务器宕机以后,其它服务器中用户信息不至于丢失。

 在两个Tomcat的web.xml 文件中,在</web-app>前添加<distributable/>
 修改Tomcat的配置文件Server.xml
其中Engine 中增加JvmRoute 对应workers.properties中的tomcat1和tomcat2
Ajp通信用的端口范围为 40000 -40100 之间。只要设置两台tomcat不一样并且在这个范围内就可以。
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
      <!--For clustering, please take a look at documentation at:
          /docs/cluster-howto.html  (simple how to)
          /docs/config/cluster.html (reference documentation) -->
     
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" 
                channelSendOptions="8"> 
         <!--   
          
         <Manager className="org.apache.catalina.ha.session.BackupManager" 
                   expireSessionsOnShutdown="false" 
                   notifyListenersOnReplication="true" 
                   mapSendOptions="8"/> --> 
         <!--   --> 
         <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="4000" 
                     autoBind="100" 
                     selectorTimeout="5000" 
                     maxThreads="6"/> 
           <!-- timeout="60000"--> 
           <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=""/> 
         <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
分享到:
评论

相关推荐

    Apache+Tomcat5.0实现集群

    通过集成Apache和Tomcat,可以构建一个高效且可扩展的Web服务器集群,实现负载均衡和session复制功能。 集群技术的主要目标是提高系统的可用性和性能,通过将工作负载分散到多个服务器上,避免单点故障,并提高处理...

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

    Apache服务器和Tomcat7集群是企业级Web应用的常见架构,用于实现高可用性和高性能。在这样的设置中,Apache作为前端服务器,通过反向代理和负载均衡策略将请求分发到后端的多个Tomcat实例,以提高服务的处理能力和...

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

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

    Windows+Nginx+Tomcat做负载均衡同时实现session共享Demo

    对于基于内存的session复制,Tomcat可以通过`org.apache.catalina.ha.session.DeltaManager`作为session manager,但这种方式需要所有Tomcat实例之间进行实时同步,网络负担较大。另一种方法是利用Nginx的sticky模块...

    Apache+Tomcat服务器集群配置详细步骤

    本文将详细介绍如何在一机双Tomcat环境下搭建Apache+Tomcat集群,并深入解析其中的关键配置和技术细节。 #### 二、Apache+Tomcat集群的优势 1. **高可靠性(HA)**:通过集群管理软件实现在主服务器发生故障时,备份...

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

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

    tomcat9+tomcat-cluster-redis-session-manager_4.0.zip

    Tomcat Cluster Redis Session Manager是一个插件,它允许Tomcat集群中的各个节点共享和同步Session信息,确保用户在集群中的任何服务器上都能保持登录状态。 集成Tomcat集群和Redis Session Manager的过程大致如下...

    Nginx+Tomcat+Memcached实现tomcat集群和session共享.docx

    【Nginx+Tomcat+Memcached实现Tomcat集群和session共享】 在现代Web应用程序的部署中,为了提高系统的可用性和可扩展性,通常会采用集群技术。将多个Tomcat服务器组成一个集群,通过负载均衡策略分发用户请求,以...

    Apache2负载均衡+Tomcat6集群

    2. **通信机制**:Tomcat集群使用一种称为`JGroups`的协议来实现节点间的通信,确保session数据的一致性。JGroups提供多种传输层协议,如UDP、TCP等,可以根据网络环境选择。 3. **session复制**:每个Tomcat实例都...

    tomcat集群实现session复制

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

    redis+tomcat集群配置session共享

    本篇文章将详细探讨如何在Redis+Tomcat集群配置中实现Session共享。 首先,我们需要理解什么是Session。Session是Web应用中用于存储用户状态的一种机制,通常用于保存用户的登录信息、购物车等数据。在单台服务器...

    TOMCAT+APACHE集成以及session复制

    这可能包括了Apache的虚拟主机配置、mod_proxy模块的启用、TOMCAT集群的配置以及session复制的实现步骤。通过学习这个demo,你可以了解到具体的配置细节和操作流程,这对于实际项目部署非常有帮助。 总的来说,...

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

    在Tomcat集群中,为了保持用户会话在不同服务器间的同步,需要实现session复制。这可以通过以下方式实现: 1. **集群配置** - 在每个Tomcat实例的`server.xml`中,设置`&lt;Engine&gt;`、`&lt;Host&gt;`和`&lt;Cluster&gt;`元素。...

    NGINX + TOMCAT 6 + REDIS 实现负载均衡 session会话同步

    本篇文章将详细探讨如何使用NGINX作为负载均衡器,结合TOMCAT 6应用服务器和REDIS作为session会话存储来实现负载均衡下的session会话同步。 首先,我们需要理解负载均衡的基本概念。负载均衡是指在多台服务器之间...

    Apache+tomcat集群环境配置

    Apache作为前端服务器,可以通过负载均衡技术将用户请求分发到多个后端的Tomcat实例上,实现请求的分担,同时通过session同步,保证用户会话的连续性。以下是对"Apache+mod_jk+Tomcat集群环境配置"的详细解析。 **1...

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

    本篇将深入探讨Apache如何实现负载均衡,以及Tomcat集群和session复制的相关知识。 首先,Apache的负载均衡主要通过模块mod_proxy来实现。这个模块能够将客户端的HTTP请求转发到不同的后端服务器,从而达到负载均衡...

    Tomcat7集群实现共享session,已配置好。

    总之,通过合理配置Tomcat集群和使用Redis作为session存储,我们可以实现跨服务器的session共享,确保用户在多台服务器间的会话一致性。这个压缩包提供了一个预配置的解决方案,对于快速搭建和测试session共享环境...

    tomcat+apache集群配置实例

    总结,配置Tomcat+Apache集群涉及多个步骤,包括安装和配置Apache和Tomcat,启用负载均衡,配置session复制,以及对集群进行持续监控和优化。通过这样的设置,可以提升Web应用的性能,增强系统的稳定性和容错能力。

Global site tag (gtag.js) - Google Analytics