xuol001 发表于 2017-1-14 09:46:19

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包如下



 

测试同之前内存复制,不在赘述。

 
页: [1]
查看完整版本: Apache+Tomcat实现负载均衡及集群(session同步)--五、session同步(3)使用memcache