打开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存储策略是存储在文件系统中,对于一些高并发的系统,这往往会限制系统的相应时间。
相关推荐
Apache+Tomcat+Linux集群和均衡负载(Session同步复制
NULL 博文链接:https://ywu.iteye.com/blog/2247441
NULL 博文链接:https://ywu.iteye.com/blog/2246306
配置apache+tomcat负载均衡和session复制,并且解决了tomcat报2009-6-5 10:10:12 org.apache.jk.common.ChannelSocket processConnection 警告: processCallbacks status 2 的问题
linux 下实现apache+tomcat集群及session复制
tomcat+apache实现集群/负载均衡,只配置负载均衡还不行,还要session复制,也就是说其中任何一个tomcat的添加的session,是要同步复制到其它tomcat, 集群内的tomcat都有相同的session1. 修改tomcat1, tomcat2的...
内附完整配置教程和修改后的apache的httpd.conf文件和tomcat的server.xml配置文件,包含test测试项目,不包含apache和tomcat安装文件。 本教程参考网上资料,本机测试成功,如有问题可以私信说明。
apache server2.2 + tomcat7.0 服务器集群负载均衡+session共享 包括配套的软件和详细的配置文档。
NULL 博文链接:https://xueweiabcok.iteye.com/blog/1841448
公司花钱买的apache + tomcat 集群+session复制解决方案。 感觉对一些网站建设比较有用,但不太符合我们的产品
利用apache、tomcat、jk2实现集群功能,并同步实现session复制功能。
首先大家注意: 本文章中没有session共享,关于session共享我会在下一篇中讲解,先实现Nginx+tomcat负载均衡再实现session共享。 从网上查了好多资料,多走了很多弯路,现在把自己成功的方法拿出来与大家分享。 ...
3集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台。在客户端看来,一个集群就象是一个...欢迎下载:Apache Tomcat负载均衡及Session绑定的实现.doc,共10页,3千多字,图文教程!
NULL 博文链接:https://xuranpaoche.iteye.com/blog/1522110
最新apache+tomcat集群,session设置等配置说明
而实际情况下,采取Apache 加Tomcat进行负载均衡集群的时候,是可以不用将Session复制到所有的节点里, 比如有六个Tomcat实例 Tomcat1,Tomcat2,Tomcat3,Tomcat4,Tomcat5,Tomcat6 是可以配置成 三组互相复制...
本人是UBUNTU 的操作系统,但是全部是用源码安装的,可能有些细节不一样,但总体应该没问题, 我两台虚拟机上,成功共享session ...apache+tomcat+memcached 集群 session 共享会话,apache负载均衡
apache+mod_jk+tomcat的集群环境配置,实现多个tomcat分担网络请求并同步session。文件里包含了一个配置说明文档,所需要的所有文件
Tomcat和Apache集群和负载均衡配置 Tomcat版本:apache-tomcat-7.0.26 Apache版本:Apache2.2.25 jre版本:1.6.0_26 集群和负载均衡配置已整好,解压后,只要点击run.bat一键启动,即可看到集群效果。 运行成功后,...
apache与tomcat集群session同步,实现负载均衡,可以多台机器也可以一台汲取