tomcat-自带的简单session共享,小集群适用
来源:互联网 发布:dos java 编辑:程序博客网 时间:2024/05/20 07:31
前言
在多个tomcat集群中,session共享就是必须,不然前端nginx转发过来不知道之前请求在哪台,就找不到session,导致请求失败。
下面是tomcat自带的session共享的例子,对于小集群够用了,大集群还是建议使用redis或者memcache进行共享。
例子
安装apache-tomcat比较简单可以参照:tomcat-你会怎么部署多个tomcat?
集群配置:
在conf/server.xml文件中找到这行:
<Engine name="Catalina" defaultHost="localhost">
在这行下面配置集群配置信息就可以了,如下:
<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 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"/>
<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>
<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="/opt/tomcat/tmp/war-temp/"
deployDir="/opt/tomcat/tmp/war-deploy/"
watchDir="/opt/tomcat/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
记得多个tomcat都需要配置,同一个集群里面配置信息保持一直就可以了。如果是其他集群,修改一下address就好了。
测试页面
<html>
<head>
<title> test1</title>
</head>
<body>
SessionID is <%=session.getId()%>
<BR>
SessionIP is <%=request.getServerName()%>
<BR>
SessionPort is <%=request.getServerPort()%>
<%
out.println("Response from tomcat1");
%>
</body>
</html>
nginx上面默认配置是轮询的,请求会依次分发。
第一次访问:
第二次访问:
可以发现两次访问获取到的sessionid是一样的,但是Response是不同的tomcat。
总结
之前公司业务访问量比较少就是用这种方式进行session共享,但是后面业务增长大了,发现session共享会使机器的负载增大,所以还是用redis或者memcache,效率比较高。
- tomcat-自带的简单session共享,小集群适用
- tomcat-自带的简单session共享,小集群适用
- tomcat集群session共享
- tomcat集群session共享
- tomcat集群session共享
- tomcat集群session共享
- tomcat集群 session共享
- tomcat集群共享session
- memcached实现集群tomcat的session共享
- Tomcat集群--基于Memcached的Session共享
- memcached实现tomcat集群的session共享
- Tomcat 集群中 Session 共享的方法
- nginx+tomcat+redis的集群+session共享
- 基于Redis的Tomcat集群Session共享
- tomcat集群-基于redis的session共享
- 基于Memcached的tomcat集群session共享
- tomcat集群-基于redis的session共享
- [Session共享]Tomcat集群实现Session共享
- ubus实现进程间通信举例
- 深度学习资料汇总
- 软件调试笔记15
- Trafodion 操作结果集-并集、差集、交集
- Android架构组件之ViewModel
- tomcat-自带的简单session共享,小集群适用
- newCoder Wannafly挑战赛4:A 解方程
- Git版本控制常见操作
- Discovering the Local Time Zone: Why It's a Hard Problem Article of General Interest to the Smallta
- 彻底解决wordpress安装主题或插件需要FTP问题
- spring+springmvc+jpa+thymeleaf 练习
- android 颜色选择控件、等待动画、图片高斯模糊等源码
- LeetCode基础--二叉树--后序遍历
- Java下利用Jackson进行JSON解析和序列化