通过Memcached来实现对Tomcat集群中Session的共享策略

近期在做一套集群的实现,实现的方案是在Linux下完成对Apache + Tomcat 负载均衡的功能。

上述功能已经实现,有需要了解的朋友可以看我另外一篇博文。 Linux下Apache与Tomcat的完全分布式集群配置(负载均衡)

但是实现了该集群后,发现登陆系统后,每次都会被拦截回登录页面,造成该现象的原因是Session共享的问题没有解决。

原理即当我通过apache进入tomcat子节点1后,会持有一个唯一的标识放入到session中,但是第二次会通过负载均衡的实现进入到tomcat子节点2中,这时之前的标示符已经不存在,且Session已经销毁,因此会被误认为用户Session超时,解决的办法就是通过Session共享来实现该功能。

之前在网上查了很多资料,说法很多,不知道apache自身可不可以完成Session复制功能,试过很多,但都没有解决,这里不发表结论,有兴趣的朋友可以自行研究。

参考阅读:

Memcached 安装及启动脚本

PHP中使用Memcached的性能问题

Ubuntu下安装Memcached及命令解释

回到正题,我来整理一下我所实现的方案,希望对其他朋友有所帮助。

本方案通过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.到下载linux下的memcached的安装包.

1.2.到 下载安装memcached前比需要的包libevent-2.0.15我安装的是这个版本.

2.安装libevent-2.0.15

# tar zxvflibevent-2.0.5-beta.tar.gz
# cd libevent-2.0.5
# ./configure –prefix=/usr
# make
# make install

如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。(网上照搬.中间我只是出现过没有GCC的情况)

3.安装memcached

tar zxvfmemcached-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共享作为主题。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/05bce8363916d1c8d3733d8d5a0b153f.html