负载均衡中的session共享

负载均衡中的session共享

在用软件做服务器负载均衡的时候,会涉及到session共享的问题,下面简单介绍一下我这几天解决session共享问题的方法,很简单。

  • 负载均衡服务器
  • 架构配置
  • 以上仅为备注,进入正题

负载均衡服务器

  • nginx
  • lvs
  • apache(一般不会有人用)

web服务器

  • apache
  • nginx

单一web服务应用

  • apache + mod_jk(转发) + tomcat
  • nginx + tomcat

以上仅为备注,进入正题

建议用yum安装,它会把你所有的依赖自动安装,很方便。
1. 安装libevent(libevent.x86_64)
2. 安装memcached(memcached.x86_64),我们的主角。
3. 启动memcached:一般会安装到/usr/bin下面

memcached -d -v -p 12000 -m 512 -u weitao

测试

telnet 127.0.0.1 12000
stats
quit

序列化配置

配置是在tomcat的conf/context.xml添加

(1)javolution序列化tomcat配置

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
   memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"
   lockingMode="auto"
   sticky="false" 
   requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"
   sessionBackupAsync= "false"
   sessionBackupTimeout= "100"
   copyCollectionsForSerialization="true"
   transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" />

tomcat lib文件中增加jar包

  • msm-javolution-serializer-cglib-1.3.0.jar
  • msm-javolution-serializer-jodatime-1.3.0.jar
  • spymemcached-2.10.3.jar
  • javolution-5.4.3.1.jar
  • msm-javolution-serializer-1.7.0.jar
  • memcached-session-manager-1.7.0.jar
  • memcached-session-manager-tc7-1.7.0.jar

(2)xstream序列化tomcat配置

   <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
   memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"   
   lockingMode="auto"
   sticky="false" 
   requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"    
   sessionBackupAsync= "false"   
   sessionBackupTimeout= "100"
   transcoderFactoryClass="de.javakaffee.web.msm.serializer.xstream.XStreamTranscoderFactory" />

tomcat lib文件中增加jar包

  • xmlpull-1.1.3.1.jar
  • xpp3_min-1.1.4c.jar
  • xstream-1.4.6.jar
  • msm-xstream-serializer-1.7.0.jar
  • spymemcached-2.10.3.jar
  • memcached-session-manager-1.7.0.jar
  • memcached-session-manager-tc7-1.7.0.jar

(3)flexjson序列化tomcat配置

   <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
   memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"     
   lockingMode="auto"
   sticky="false" 
   requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"    
   sessionBackupAsync= "false"   
   sessionBackupTimeout= "100"      
   transcoderFactoryClass="de.javakaffee.web.msm.serializer.json.JSONTranscoderFactory" />

tomcat lib文件中增加jar包

  • flexjson-3.1.jar
  • msm-flexjson-serializer-1.7.0.jar
  • spymemcached-2.10.3.jar
  • memcached-session-manager-1.7.0.jar
  • memcached-session-manager-tc7-1.7.0.jar

(4)kryo序列化tomcat配置

   <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
   memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"   
   lockingMode="auto"
   sticky="false" 
   requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"    
   sessionBackupAsync= "false"   
   sessionBackupTimeout= "100"    
   copyCollectionsForSerialization="true"   
   transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />

tomcat lib文件中增加jar包

  • kryo-1.04.jar
  • minlog-1.2.jar
  • asm-3.2.jar
  • reflectasm-1.01.jar
  • kryo-serializers-0.11.jar
  • msm-kryo-serializer-1.7.0.jar
  • spymemcached-2.10.3.jar
  • memcached-session-manager-1.7.0.jar
  • memcached-session-manager-tc7-1.7.0.jar

各种情况配置如上,据说kryo序列化效率比较快

配置中sticky字段为粘性/非粘性选择
以为我的理解是:
粘性操作,负载细化到登录用户,例如登录用户用到某个tomcatA服务,会一直使用该tomcatA服务,除非该tomcatA服务挂掉,才会转到其他tomcatB服务。
非粘性操作:负载细化到请求,例如用户的某个请求用到tomcatA服务,另一个请求可能会用到tomcatB服务。

Tomcat所需jar包下载地址【免费的哦】
http://download.csdn.net/download/snbgidt/9472051

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值