欢迎访问鸿雪径,这里介绍软件相关技术、动态以及鸿雪径杂谈,如有技术合作请与站长联系!邮费网 易食烤吧 特产大全网
首页 > JAVA > 使用阿里云OCS来存储tomcat的session实现tomcat多机负载均衡

使用阿里云OCS来存储tomcat的session实现tomcat多机负载均衡

发布时间:2015-01-04 作者:伊君 点击:1419

   之前一直是1个nginx加多个tomcat的集群方式,直接使用nginx的ip_hash即可。可是这次客户提出了3层的结构,前端使用阿里云的SLB,中间使用多个nginx做负载均衡,最底下基础的是若干个tomcat,这样我们就没法使用nginx的ip_hash来进行会话保持了。只好转到tomcat的会话管理上来看看了,之前使用memcached管理过session,看来这次又需要用这个方案了。

   我们需要准备的是memcached的环境(直接使用阿里云的ocs),tomcat运行环境(tomcat7),memcached-session-manager(2014年底最新版是1.8.3),以及相关的jar包等。

   对于msm序列化的效率、优缺点什么的就不在这里重复说了,msm的官网也说了kryo的效率最高,次之是javolution,但是kryo的相关依赖包最难凑齐,依赖关系也最复杂,kryo我找到了3.0的jar包,可以依赖的asm等包就找不到对应的能运行的了,项目时间紧,留着以后再研究吧,我先用javolution序列化顶上吧。

   所需的jar包如下:

   注意我们一定要使用高版本的spymemcached,因为高版本的才增加了带验证的memcached连接功能。否则会报错,说找不到连接相关的方法。

    jar包直接拷贝到tomcat的lib目录下,然后我们修改conf/context.xml文件,加入如下manager

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:******.ocs.aliyuncs.com:11211"
username="你的用户名" password="你的密码"
sticky="false" memcachedProtocol="binary"
 requestUriIgnorePattern=".*.(png|gif|jpg|css|js|swf|flv|json|)$"
 sessionBackupAsync="false" sessionBackupTimeout="100"
  transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.Javolution
TranscoderFactory"
   copyCollectionsForSerialization="false"  />

    这里需要注意的是,我sticky使用的是false,(非粘连),这样每次tomcat都会同步向memcached写会话信息。

    另外网上其它文章都没有提到的就是那个验证相关的配置,我们需要把username、password都配置正确,同时我们要加入

memcachedProtocol="binary"

    因为在msm的官网也提到了,只有在binary模式的连接时,username、password才会生效。

    这样我们就配置出了在ocs或者memcached需要验证时的tomcat会话集群。


更多关于 阿里云,ocs,tomcat,session,memcached 的信息
本站部分文章转载于网上,版权归原作者所有。如果侵犯您的权益,请Email和本站联系!
鸿雪径 www.HongXueJing.com  冀ICP备07017673号-4