设为首页 收藏本站
查看: 1934|回复: 0

[经验分享] tomcat集群memcached 共享session-8907660

[复制链接]

尚未签到

发表于 2018-12-6 13:24:33 | 显示全部楼层 |阅读模式
  4.将session存储到memcached中
  配置第一台tomcat
  [root@node2 local]# vi tomcat/conf/context.xml
  

    memcachedNodes="n1:192.168.1.204:11211"
  failoverNodes="n1"
  requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
  transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
  />
  
  配置第二台tomcat
  [root@node3 local]# vi tomcat/conf/context.xml
  

    memcachedNodes="n1:192.168.1.204:11211"
  failoverNodes="n1"
  requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
  transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
  />
  
  下载专用的jar包,并将这些jar包放置在$CATALINA_HOME/lib/
  [root@node2 lib]# wget http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager/1.8.1/memcached-session-manager-1.8.1.jar
  [root@node2 lib]# wget http://repo1.maven.org/maven2/net/spy/spymemcached/2.10.2/spymemcached-2.10.2.jar
  [root@node2 lib]# wget http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager-tc7/1.8.1/memcached-session-manager-tc7-1.8.1.jar
  三、memcached支持的序列化参数
  1.javolution序列化tomcat配置
  conf/context.xml添加

    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"
  />
  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配置
  conf/context.xml添加

    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"
  />
  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配置
  conf/context.xml添加

    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"
  />
  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配置
  conf/context.xml添加

    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"
  />
  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序列化效率比较快,未做测试。
  选其一中方式,部署2个tomcat端口分别是8080和8181
  启动后,访问刷新SessionID是否一致。
  http://127.0.0.1:8080/t.jsp
  SessionID:37B7F153AB3567295B2FBF1831475F5F-n1
  SessionIP:127.0.0.1
  SessionPort:8080
  http://127.0.0.1:8181/t.jsp
  SessionID:37B7F153AB3567295B2FBF1831475F5F-n1
  SessionIP:127.0.0.1
  SessionPort:8181
  测试结果SessionID一致。
  session存储到memchached实现方案时。他主要功能是修改tomcat的session存储机制,使之能够把session序列化存放到memcached中。
  Manager标签属性说明
  1.className  必须
  类名:de.javakaffee.web.msm.MemcachedBackupSessionManager
  2.memcachedNodes  必须
  memcached节点:此属性应该包含所有运行的memcached节点或者membase bucket的uri地址,每一个memcached节点的属性定义格式为::,多个节点定义直接使用空格或者逗号分隔,形如:memcachedNodes="n1:app01:11211,n2:app02:11211",如果只有单个的memcached节点,则是可选项,只需配置:即可,形如:memcachedNodes="localhost:11211"。
  如果我们配置的是membase,那么从1.6.0版本开始,我们可以配置指定一个或者多个membase bucket uris,形如:http://host1:8091/pools,http://host2:8091/pools。Bucket 名称和密码通过属性username,password来定义。membase buckets连接需要遵循memcached协议,传输数据通过二进制流方式。
  3.failoverNodes 可选项
  故障转移节点:可选项,对非黏性session不可用,属性必须包含memcached节点集群的所有ids。节点id之间用空格或者逗号分隔。
  4.username 可选项
  从1.6.0版开始使用,并且是可选的。用来进行membase bucket或者SASL验证,密码可以为空。
  5.password 可选项
  从1.6.0版开始使用,并且是可选的。用来进行membase bucket或者SASL验证,密码可以为空。
  6.memcachedProtocol    可选项
  定义memcached协议,默认使用text文本,出属性指明memcached使用的存储协议。只支持text或者binary。
  7.sticky    可选项
  定义session方式为黏性或非黏性,默认为true,多个tomcat时需使用非黏性
  8.lockingMode    可选项
  只有非黏性session才使用,默认值为none
  none: 从不对session进行锁定
  all: session将一直被锁定,知道请求结束
  auto: 对于只读请求,session将不会被锁定,如果是非只读请求,则session会被锁定
  uriPattern:: 通过正则表达式的方式来对请求uri以及查询字符串进行匹配,只有匹配上的才会被锁定。
  9.requestUriIgnorePattern   可选项
  此属性是那些不能改备份Session的请求的正则表达式。如果像css,javascript,图片等静态文件被同一个Tomcat和同一个应用上下文来提供,这些请求也会通过memcached-session-manager。但是这些请求在一个http会话中几乎没什么改变,所以他们没必要触发Session备份。所以那些静态文件没必要触发Session备份,你就可以使用此属性定义。此属性必须符合java regex正则规范。
  如:".*\.(png|gif|jpg|css|js)$"
  10.sessionBackupAsync   可选项
  指定Session是否应该被异步保存到Memcached中。 如果被设置为true,backupThreadCount设置起作用,如果设置false,通过sessionBackupTimeout设置的过期时间起作用。
  11.backupThreadCount    可选项
  用来异步保存Session的线程数,(如果sessionBackupAsync="true")。默认值为cup的内核数。
  12.sessionBackupTimeout    可选项
  设置备份一个Session所用的时间,如果操作超过时间那么保存失败。此属性只在sessionBackupAsync="false"是起作用。默认100毫秒
  13.operationTimeout    可选项
  从1.6.0版开始使用, 默认值为1000
  14.sessionAttributeFilter    可选项
  此属性是用来控制Session中的那个属性值保存到Memcached中的正则表达式。郑则表达式被用来匹配Session中属性名称。如sessionAttributeFilter="^(userName|sessionHistory)$" 指定了只有"userName"和"sessionHistory"属性保存到Memcached中。依赖于选择的序列化策略。
  15.transcoderFactoryClass    可选项
  此属性值是创建序列化和反序列化保存到Memcached中的Session的编码转换器的工厂类名。这个指定的类必须实现了de.javakaffee.web.msm.TranscoderFactory和提供一个无参的构造方法。例如其他的有效的实现在其他packages/jars中提供如:msm-kryo-serializer,msm-xstrea-serializer和msm-javolution-serializer.
  默认为 de.javakaffee.web.msm.JavaSerializationTranscoderFactory
  16.copyCollectionsForSerialization    可选项
  默认值为false。
  17.customConverter    可选项
  自己定义特殊的类注册到kryo自定义转换器中,实现序列化
  18.enableStatistics    可选项
  用来指定是否进行统计。 默认值为true。
  19.enabled   可选项
  指定Session保存到Memcached中是否可用和是否可以通过JMX进行改变。只用于粘性Session。 默认值为true。
  本文出自 “IT民工--小枫” 博客,请务必保留此出处http://wangfeng7399.blog.运维网.com/3518031/1409637
  将tomcat的session信息保存在memcached中,布布扣,bubuko.com
  将tomcat的session信息保存在memcached中
  标签:memcached apache tomcat session服务器 session 复制
  踩
  (0)
  赞
  (0)
  注意点:
  -msm1.6.5依赖了Couchbase,需要添加couchbase-client的jar包,否则启动会报:java.lang.NoClassDefFoundError: com/couchbase/client/CouchbaseClient。
  -tomcat6和7使用不同msm支持包:memcached-session-manager-tc6-1.6.5.jar和memcached-session-manager-tc7-1.6.5.jar,只可选一,否则启动报错。
  -msm源码中的lib包版本太低:spymemcached-2.7.jar需要使用2.10.2,否则启动tomcat报错:
  java.lang.NoSuchMethodError: net.spy.memcached.MemcachedClient.set(Ljava/lang/String;ILjava/lang/Object;)Lnet/spy/memcached/internal/OperationFuture;
  at de.javakaffee.web.msm.BackupSessionTask.storeSessionInMemcached(BackupSessionTask.java:227)
  kryo-serializers-0.8.jar需要使用0.10版本,否则报错:
  Caused by: java.lang.ClassNotFoundException: de.javakaffee.kryoserializers.DateSerializer


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-644025-1-1.html 上篇帖子: Tomcat高级应用(添加虚拟主机及优化) 下篇帖子: Tomcat的性能与最大并发(1000)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表