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

[经验分享] 通过memcached来实现对tomcat集群中Session的共享策略

[复制链接]

尚未签到

发表于 2015-11-18 15:01:21 | 显示全部楼层 |阅读模式
  近期在做一套集群的实现,实现的方案是在Linux下完成对Apache + Tomcat 负载均衡的功能。
  上述功能已经实现,有需要了解的朋友可以看我另外一篇博文。
  Linux下Apache与Tomcat的完全分布式集群配置(负载均衡)


  


  但是实现了该集群后,发现登陆系统后,每次都会被拦截回登录页面,造成该现象的原因是Session共享的问题没有解决。
  原理即当我通过apache进入tomcat子节点1后,会持有一个唯一的标识放入到session中,但是第二次会通过负载均衡的实现进入到tomcat子节点2中,这时之前的标示符已经不存在,且Session已经销毁,因此会被误认为用户Session超时,解决的办法就是通过Session共享来实现该功能。
  之前在网上查了很多资料,说法很多,不知道apache自身可不可以完成Session复制功能,试过很多,但都没有解决,这里不发表结论,有兴趣的朋友可以自行研究。
  


  回到正题,我来整理一下我所实现的方案,希望对其他朋友有所帮助。
  本方案通过memcached的memcache session manager来实现对Session的共享问题。
  即整体的一套配置是 Apache +  Tomcat  +  memcached  实现负载均衡以及Session共享。
  具体的机器安装软件路径等相关信息,请看上面给出的博文链接。
  


  主节点 :192.168.1.150    Apache 2.2.25    Memcached  1.4.15


  子节点 :192.168.1.151    Tomcat  6.0.37


  子节点 :192.168.1.152    Tomcat  6.0.37


  1. memcache的安装及启动
  本人把memcache安装在了apache所在的机器上
  
  

1.下载包
1.1.到http://memcached.org/下载linux下的memcached的安装包.
1.2.到http://libevent.org/ 下载安装memcached前比需要的包libevent-2.0.15我安装的是这个版本.
2.安装libevent-2.0.15
# tar zxvf libevent-2.0.5-beta.tar.gz
# cd libevent-2.0.5
# ./configure –prefix=/usr
# make
# make install
如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。(网上照搬.中间我只是出现过没有GCC的情况)
3.安装memcached
tar zxvf memcached-1.4.2.tar.gz
cd memcached-1.4.2
./configure --with-libevent=/usr
make
make install
如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。
安装完成后会把memcached放到 /usr/local/bin/memcached ,
4.测试是否成功安装memcached:
# ls -al /usr/local/bin/mem*
成功的话,会输出一些相关信息。
5.启动memcached
/usr/local/bin/memcached -d -m 10 -u root -l localhost -p 11211 -c 256 -P /tmp/memcached.pid以上部分为从其他网站摘录的memcached安装以及启动的方式,我本人对该安装做了部分修改,仅给大家作为参考,如果安装不成功,请自行查询原因,该文章主要用于对集群的Session共享作为主题。  大家必须要确保两件事情已经完成:
  第一:首先确认memcached是否已经启动,可以通过




netstat -lp | grep memcached

来查看是否有11211的进程存在。  注意:11211为memcached的默认端口。
  

第二:需要在tomcat所在的节点上分别执行telnet命令来确认是否已经可以连接,操作命令为:
  

telnet 192.168.1.150 11211

上面的操作必须要在每一个子节点上去做,否则在启动的时候会提示Connect refuse。(本人在该地方卡住很长时间)  
  在这里首先要确保telnet服务是否已经安装并启动。
  


  上述操作都完成后,就可以对Tomcat的相关文件进行配置了。
  


  2. Tomcat相关配置
  


  这一步很简单,网上也有很多说法,五花八门,我来给大家统一整理下,各位可以相互借鉴。
  1)首先需要在tomcat安装路径所在的lib里面加上memcached相关的jar包,由于相互之间的版本问题,建议最好使用统一的版本。
  另外网上似乎有两种办法,一种是kryo的序列化方式,另一种是javolution的方式,博主本人使用的是后者。
  需要引入的jar包见下图所示:(这里大家导入一定要和下面完全一样,否则可能会出现错误,并不是因为每一个jar包都会用到,最好还是谨慎些)
DSC0000.jpg
  


  2)配置Tomcat的conf相关配置文件。
  在Context.xml文件中引入下列代码:
  

<Manager className=&quot;de.javakaffee.web.msm.MemcachedBackupSessionManager&quot;  
memcachedNodes=&quot;n1:192.168.1.150:11211&quot;  
requestUriIgnorePattern=&quot;.*\.(png|gif|jpg|css|js)$&quot;  
sessionBackupAsync=&quot;false&quot;  
sessionBackupTimeout=&quot;100&quot;  
transcoderFactoryClass=&quot;de.javakaffee.web.msm.serializer
.javolution.JavolutionTranscoderFactory&quot;  
copyCollectionsForSerialization=&quot;false&quot; />



这里的memcachedNodes节点中的n1为节点的别名,可以随意起。后面的IP必须是memcached所在的主机的IP地址,端口必须是之前配置的11211端口。  
  该代码段在网上发现其他人说也可以放到Server.xml下面,这里本人没有尝试。
  此时,所有的tomcat子节点中都要加上上面的这段代码,每个tomcat里面的内容都是相同的上述内容,无需做任何修改。
  


  至此为止,有关memcache的Session共享已经完全配置完成,具体的启动顺序,首先要把memcached的服务启动,然后是apache服务,最后启动tomcat所在的每个子节点的服务。
  然后观察tomcat的控制台打印如下:
DSC0001.jpg


  


  该上述信息为博主从tomcat子节点1的控制台上截图下来的,大家可以自行观察,此时memcachedConnection已经连接成功,由于没有涉及到单点故障问题,因此failover nodes为null。
  该部分为memcached进行session共享的所有配置,需要借鉴的朋友可以尝试配置一下,如果有问题可以给我留言。
  由于csdn博客上无法上传附件,因此tomcat所需的lib包,大家如果有需要的话可以留言向我索要,谢谢。


  


  


  



版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 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-140807-1-1.html 上篇帖子: Mac OS 下的 memcached 下篇帖子: 大数据量缓存应用--memcached+magent
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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