使用memcache 管理session

一、下载下列几个 Jar包
http://memcached-session-manager.googlecode.com/files/memcached-session-manager-1.3.0.jar
http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-jodatime-1.3.0.jar
http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-cglib-1.3.0.jar
http://spymemcached.googlecode.com/files/memcached-2.4.2.jar
http://memcached-session-manager.googlecode.com/files/javolution-5.4.3.1.jar

将以下几个Jar包Copy到 $TOMCAT_HOME/lib目下,每个Tomcat节点都需要有。

二、配置Tomcat的Server.xml配置文件,样本可以点击这里下载,主要内容如下:
http://www.javabloger.com/images/2010-05/webcluster/server.xml.txt

 <Context docBase="D:\webapp" path="" reloadable="true" > 
 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 
     memcachedNodes="n1:localhost:11211" 
     requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$" 
     sessionBackupAsync="false" 
     sessionBackupTimeout="100" 
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" 
     copyCollectionsForSerialization="false" 
     /> 
 </Context>

每个Tomcat的节点都需要修改。

三、前端分发的Ngixn的配置文件也需要修改,样本可以点击这里下载,主要内容如下:
http://www.javabloger.com/images/2010-05/webcluster/nginx.conf.txt
#gzip  on; 
      upstream  www.docyeah.com   { 
                server   192.168.1.103:81; 
                server   192.168.1.103:82; 
      } 

最后访问测试的JSP页面,进行刷新:
http://www.javabloger.com/images/2010-05/webcluster/msem.jsp.txt
页面上出现:SessionID:292621C48C4D6B27F40290039081492A-n1 一直不变,说明你经过前端 Ngixn 进行分发,跳转到任何一台服务器都是从Memcached中读取session,这样web容器中的 session就集中在一个地方了。并且每台机器都可以进行计算客户端发出的请求,实现了session共享和压力分载,下图中显示了每台Tomcat容 器中打印了各打印了2次 Hello World,说明分散的计算了客户端发出的请求。

采用这种方案的优势在于,如果最前端换成IP策略的负载均衡,例如:LVS、Iptables,或者HA-Proxy 都可以,并且可以提高前端负载均衡器的工作效率。通过这样的思路,还可以进行对这个工具进行改写成向数据库写入的方案。

如图所示:
http://www.javabloger.com/images/2010-05/webcluster/Ngixn-j2ee-tomcat-memcache-session-share_s.jpg

 

 

转载http://www.javabloger.com/article/ngixn-j2ee-tomcat-memcache-session-share.html

你可能感兴趣的:(tomcat,jsp,nginx,memcached,配置管理)