负载均衡中的session共享

来源:互联网 发布:淘宝怎么重新激活店铺 编辑:程序博客网 时间:2024/05/30 22:50

负载均衡中的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 12000statsquit

序列化配置

配置是在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

0 0
原创粉丝点击