`
ywu
  • 浏览: 456819 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

Apache+Tomcat实现负载均衡及集群(session同步)--五、session同步(1)使用内存复制

阅读更多
打开tomcat的配置文件conf/server.xml,在主机Host元素中加入如下配置:

<!-- 集群配置 -->
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
   <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/>
   <Channel className="org.apache.catalina.tribes.group.GroupChannel">
    <!-- 配置membership服务,有规律的发送脉冲广播 -->
    <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/>
    <!-- receiver组件,用于从其他成员接收复制的数据信息 -->
    <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"  
      address="192.168.137.211" port="4001" autoBind="100" selectorTimeout="5000"  
      maxThreads="6"/>
    <!-- sender组件,用于给组中其他成员发送复制的数据信息 -->
    <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"/>
   </Channel>
   <!-- 过滤器,过滤了任何对静态页面、图形、js的请求,这些请求不会修改会话 -->
   <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>
   <!-- 过滤器,同mod_jk一起使用,在故障转移期间保证会话的粘性 -->
   <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>
 
两台tomcat的server.xml都做如上配置
 
注意事项:
1、无论Apache中是使用mod_jk还是使用mod_proxy,都应该关闭sticky session,如果是mod_proxy,还需要将nofailover属性的值置为Off,以下示例使用mod_proxy配置


 
2、tomcat的引擎Engine元素的jvmRoute属性去掉,如果加上,属性值会附加在session id的末尾,造成两次请求session id由于属性值不同而不同


 
3、两台tomcat的server.xml配置文件,Receiver元素的address属性值是不一样的,都是本机的ip


 
4、确保两台tomcat的4001端口是打开的,tomcat广播通信需要用到该端口,如果防火墙关闭了了该端口的访问,会出现如下问题
skipping state transfer. No members active in cluster group.
 
WARNING: Error receiving mcast package. Sleeping 500ms
java.net.SocketException: Socket closed
 at java.net.PlainDatagramSocketImpl.receive0(Native Method)
 at java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:145)
 at java.net.DatagramSocket.receive(DatagramSocket.java:725)
 at org.apache.catalina.tribes.membership.McastServiceImpl.receive(McastServiceImpl.java:314)
 at org.apache.catalina.tribes.membership.McastServiceImpl$ReceiverThread.run(McastServiceImpl.java:414)
 
5、应用程序shade的web.xml中需要加入distributable元素


 
依次启动tomcat、Apache,分别用Firefox和chrome浏览
目前火狐中的请求被211这台机器处理


 
刷新下页面


 
发现请求被243这台tomcat处理了,但是session id并没有改变
关闭211机器上的tomcat,继续刷新页面,重复刷几次,发现请求都是被243处理,session id并没有改变
 
至此,使用内存同步方式配置session同步已经完成,但是,tomcat默认的session存储策略是存储在文件系统中,对于一些高并发的系统,这往往会限制系统的相应时间
 
 
 
 

 

  • 大小: 15.7 KB
  • 大小: 4.9 KB
  • 大小: 6.2 KB
  • 大小: 22.1 KB
  • 大小: 394.7 KB
  • 大小: 364.2 KB
分享到:
评论

相关推荐

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

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

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

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

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

    3. JK模块:Apache的 mod_jk 模块,用于连接Apache和Tomcat,实现负载均衡。 配置步骤如下: 1. **安装Apache和Tomcat**:从官方站点下载Apache和Tomcat的Windows版本,并按照常规步骤进行安装。同时,下载JK模块...

    Apache+Tomcat实现负载均衡及集群(session同步)--三、动静分离(1)使用mod_jk

    NULL 博文链接:https://ywu.iteye.com/blog/2246306

    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模块...

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

    "tomcat9+tomcat-cluster-redis-session-manager_4.0.zip"这个文件组合涉及到的是在Tomcat 9上实现负载均衡以及使用Redis作为Session管理器的高级配置。 首先,Tomcat 9是Apache Tomcat服务器的一个版本,它是Java ...

    Apache+Tomcat负载均衡与集群配置详解

    这篇文章将详细介绍如何使用Apache作为前端负载均衡器,与多台Tomcat服务器配合构建集群环境。 首先,我们要理解负载均衡的基本概念,它是一种技术,通过分散网络流量到多个服务器,避免单一服务器过载,从而提高...

    Apache 2+Tomcat 6负载均衡与集群配置及性能测试

    而Tomcat集群则使得多个Tomcat实例在用户看来像是一个单一的服务器,从而实现资源的高效利用。 Apache HTTP Server通过mod_jk模块与Tomcat进行通信,mod_jk负责将HTTP请求转发到适当的Tomcat实例。以下是详细的配置...

    Mod_Proxy+Apache+Tomcat负载均衡与集群配置

    本文档详细介绍了使用mod_proxy模块与Apache和Tomcat结合来实现负载均衡与集群配置的过程。配置前需要准备相应的环境,包括安装JDK、Apache HTTP Server和Tomcat服务器。本文档使用了Tomcat 7.0.2作为应用服务器,并...

    Apache+tomcat负载均衡

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

    apache+tomcat+mysql 的负载平衡和集群技术

    **1.1 配置 Apache 实现负载均衡** Apache 的负载均衡可以通过 mod_proxy 和 mod_jk 模块来实现。其中 mod_jk 是一个专门为 Apache 和 Tomcat 设计的模块,用于处理负载均衡任务。以下是一些关键配置示例: - **...

    .在32位操作系统上配置apache+tomcat集群/负载均衡/session复制

    标题中的“在32位操作系统上配置apache+tomcat集群/负载均衡/session复制”涉及到的是在32位系统环境下,如何构建一个使用Apache HTTP Server作为前端负载均衡器,与多个Tomcat应用服务器协同工作的集群环境,并实现...

    apache,tomcat负载均衡和session复制

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

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

    通过以上步骤,可以在 Linux 环境下成功搭建 Apache+Tomcat 集群,并实现负载均衡以及 session 复制。这种方式不仅提高了系统的可伸缩性和可靠性,还能够有效提升用户体验。在实际操作过程中,还需要根据具体情况...

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

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

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

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

Global site tag (gtag.js) - Google Analytics