首先,在192.168.137.211服务器上安装memcached服务。下载memcache安装包,memcached-1.4.22.tar.gz,安装也简单,就是解压缩后编译,make在make install
启动memcache服务
Apache配置不变,主要是配置tomcat的context.xml
修改tomcat的conf/context.xml,加入如下配置:
Xml代码
- <Context>
- <!-- Default set of monitored resources -->
- <WatchedResource>WEB-INF/web.xml</WatchedResource>
- <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
- memcachedNodes="n1:192.168.137.16:11211"
- sticky="false"
- requestUriIgnorePattern=".*\.(png|gif|jpg|css|js|ico|jpeg|htm|html)$"
- sessionBackupAsync="false"
- sessionBackupTimeout="1800000"
- copyCollectionsForSerialization="false"
- transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
- </Context>
className | session管理器类名 |
memcachedNodes | 配置运行的 memcached节点或者membas bucket的uri地址,格式为<id>:<host>:<port>, 多个节点使用空格或者逗号分隔,如:memcachedNodes="n1:app01:11211,n2:app02:11211",如果只 有单个的memcached节点,则<id>可选 |
sticky | 配置会话为粘性或非粘性,默认true,tomcat集群时设置为false |
requestUriIgnorePattern | 不能修改备份Session的请求的正则表达式。如果像css,javascript,图片等静态文件被同一个Tomcat和同一个应用 上下文来提供,这些请求也会通过memcached-session-manager。这些请求在一个http会话中几乎不会改变,没必要 触发Session备份 |
sessionBackupAsync | 指定session是否以异步方式备份,如果被设置为true,backupThreadCount设置起作用,如果设置false,通过sessionBackupTimeout设置的过期时间起作用 |
sessionBackupTimeout | 设置备份Session所用的时间,如果超时则保存失败。此属性只在sessionBackupAsync="false"是起作用。默认100毫秒 |
copyCollectionsForSerialization | 默认false |
transcoderFactoryClass | 创建序列化和反序列化保存到Memcached中的Session的编码转换器的工厂类名 |
启动tomcat,启动的过程中可能会报错,比如:
java.lang.AbstractMethodError,以及xxx class not found之类的,主要是需要的jar包不全,或者jar包太新,一些类被删除了,配置过程中需要的jar包如下
测试同之前内存复制,不在赘述。
- tomcat-memcached-cluster.rar (1.5 MB)
- 下载次数: 8