设为首页 收藏本站
查看: 1499|回复: 0

[经验分享] tomcat的session共享方案

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-13 09:48:47 | 显示全部楼层 |阅读模式
生产-tomcat的session共享方案
    在部署nginx+tomcat集群后,nginx采用负载均衡轮训模式,会出现访问时每个tomcat应用都会互相覆盖sessionID,导致sessionID不断变化,从而导致java一些功能实现不正常。作者查阅了不少文档,并且在测试环境和预生产环境进行各类测试,有两种方法可行。
    应为目的只是实现session共享,杜绝session不断变化,所以解决方案越简单越好,本文属于实践文档,不会过多涉及原理和技术方面的东东,谷歌有详细相关技术介绍。
1      实验环境介绍1.   centos 6.52.   JDK1.6_3.83.   apache-tomcat-6.0.352      基于tomcat集群的session共享   tomcat集群各节点通过建立tcp链接来完成Session的拷贝,具体的详细解释大家可以谷歌SimpleTcpCluster。作者在实验是,成功的最简单配置为:
1.   配置步骤    在{TOMCST_HOME}/conf/server.xml
取消下面代码注释即可:
<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
完整的集群配置,可以看以下的文章:
http://zyycaesar.iteye.com/blog/296606
http://my.oschina.net/fenno/blog/111188
2.   优缺点总结a)配置简单,可以满足session的共享b)       局限于网络环境,如果tomcat服务器不在同一网段,很可能失效,需要完整的配置tomcat集群,而且会涉及到tcp的网络传输,导致系统复杂性增加,从而增加排错复杂度。3      基于memcached存储session共享   因为基于tomcat的session共享,在测试环境同网段很轻松实现,但是生产环境跨网段导致简单的配置无法实现,完成配置却不利于以后运维排错,而基于memcached存储session共享则是很好的替代方案。
1.   配置步骤a)下载下图中所需的jar包,这个在反复测试中,确认的需要完整版的jar包,下载地址:http://code.google.com/p/memcach ... tupAndConfiguration有大牛翻译成中文:http://chenzhou123520.iteye.com/blog/1650212 QQ截图20150713094903.png
    需要注意的是,建议大家先仔细阅读上面的连接中的文档,特别注意tomcat7、tomcat8,所下载的jar包是不同的,作者在阅读官方文档前,先看的百度的相关文档,结果发现各个文档见所引用的jar都不同,完全实现不了,在tomcat启动时就会因为jar包原因,导致报错:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
java.lang.reflect.InvocationTargetException
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:597)
       at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
       at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.AbstractMethodError
       atorg.apache.catalina.core.StandardContext.start(StandardContext.java:4714)
       at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
       at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
       at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
       at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
       atorg.apache.catalina.core.StandardService.start(StandardService.java:525)
       atorg.apache.catalina.core.StandardServer.start(StandardServer.java:754)
       at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
       ... 6 more



     最终使用官方提供的jar包,才最终试验成功,搭建一定要注意jar包的版本。
b)       配置{TOMCST_HOMER}/conf/context.xml      在<Context>标签内增加下列语句:
1
2
3
4
5
        <ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager"
           memcachedNodes="you_memcache_addr:port"
           requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
           transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
         />



    上面方案是基于sticky sessions + kryo,黏性session管理,由于生产没有采用memcached集群,所以做了修改,各位读者也可以根据自己的生产架构,适当的调整。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-86152-1-1.html 上篇帖子: tomcat配置调优与安全总结 下篇帖子: Tomcat+Memcached实现Session共享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表