Apache+Tomcat实现负载均衡及集群(session同步)--五、session同步(3)使用memcache

首先,在192.168.137.211服务器上安装memcached服务。下载memcache安装包,memcached-1.4.22.tar.gz,安装也简单,就是解压缩后编译,make在make install

 
启动memcache服务


 
Apache配置不变,主要是配置tomcat的context.xml
修改tomcat的conf/context.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包如下

Apache+Tomcat实现负载均衡及集群(session同步)--五、session同步(3)使用memcache_第1张图片
 
测试同之前内存复制,不在赘述。
 

你可能感兴趣的:(apache,tomcat,集群,memcache)