基于 memcached 的 tomcat 集群之 session 共享
实现在多台服务器之间共享 session 会话中的数据。
JAR 包
- asm-4.0.jar
- kryo-1.04.jar
- minlog-1.2.jar
- reflectasm-1.04.jar
- kryo-serializers-0.10.jar
- spymemcached-2.8.12.jar
- couchbase-client-1.1.4.jar
- msm-kryo-serializer-1.6.4.jar
- memcached-session-manager-1.6.4.jar
- memcached-session-manager-tc7-1.6.4.jar
配置
将 JAR 包全部放到 $Tomcat/lib 目录下($Tomcat 表示 Tomcat 安装的根目录,以下同)。
编辑 $Tomcat/conf/context.xml 文件,在 <Context> 节点下加入如下配置
|
|
memcachedNodes
必须项
配置 memcached 节点。格式:<id>:<host>:<port>,多个节点之间,用空格或英文逗号分隔
sticky
可选项
是否粘性。默认为 true。粘性会话需要保证每个用户的请求都路由到同一台 Tomcat 服务器中。否则,需要设置成非粘性会话。
lockingMode
可选项
用于非粘性会话。默认为 none。
可选值 | 描述 |
---|---|
none | 不锁定 session |
all | 每个请求访问 session 的期间,session 一直被锁定,直到请求结束 |
auto | 只锁定写请求的 session,只读请求的 session 不会被锁定 |
uriPattern:<regexp> | 通过正则表达式的方式来对请求的 URI 进行匹配,匹配上的会被锁定 |
sessionBackupAsync
可选项
设置 session 会话中的数据是否异步同步到 memcached 中,默认为 true。
requestUriIgnorePattern
可选项
设置忽略会话同步的请求的 URI 地址的正则表达式。这应该包含静态资源的请求。
failoverNodes
可选项
memcached 故障转移节点配置。用于粘性会话,非粘性会话不可用。如:
failoverNodes="n1",含义是告诉 msm 将 session 会话中的数据存储到 memcached 的 n2 节点中,如果 n2 节点宕掉等致使其不能正常提供服务,msm 才会将 session 会话中的数据存储到 memcached 的 n1 节点中。
sessionAttributeFilter
可选项
配置同步 session 会话数据的属性名称的正则表达式。如果不设置,则将 session 中全部的属性保存到 memcached 中。
transcoderFactoryClass
可选项
配置序列化和反序列化 session 会话中的数据到 memcached 中的编码转换器的工厂类名。
默认是 de.javakaffee.web.msm.JavaSerializationTranscoderFactory
backupThreadCount
可选项
用于异步存储 session 会话中的数据到 memcached 中的线程数。(当 sessionBackupAsync="true" 时,该配置项有效)
sessionBackupTimeout
可选项
备份 session 会话数据所需时间如果大于该值,将导致 session 会话数据同步失败。默认为 100(单位毫秒)