基于apache的tomcat负载均衡和集群配置session共享

接上面的话题接着继续完善。为什么没接到上篇呢?原因很简单太长的文章不爱看!就像有人写了上千行的方法一样,不是逼得没办法谁爱看谁看,反正我不看。

期间我没有一次配置成功,从失败的开始说起,

1、准备jar包

注意:不同的tomcat版本(tomcat6,tomcat7)所需的包不一样,需要针对tomcat版本下载对应的包.

这是采用的最新稳定版1.6

首先我到官网:http://code.google.com/p/memcached-session-manager/下载了最新的jar

基于apache的tomcat负载均衡和集群配置session共享

由于公司网络是用代理很多网站你懂的,上不去,后来从 https://github.com/magro/memcached-session-manager 下载其他的jar包,总之找了好久凑不去

基于apache的tomcat负载均衡和集群配置session共享

2、配置

1. 将上面所提到的包全部拷贝到tomcat的lib下(两台tomcat都需要)

2. 修改每台tomcat的conf目录下得context.xml文件,在其中加入如下任意一段代码:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211"
sticky="false"
sessionBackupAsync="false"
lockingMode="uriPattern:/path1|/path2"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

其中序列化有好几种方法,

  • javolution序列化tomcat配置
  • xstream序列化tomcat配置
  • flexjson序列化tomcat配置
  • kryo序列化tomcat配置

据说kryo序列化效率比较快,那还选啥。其实上面说的jar包包含了这几种,实际放到lib下的没有那么多包。最后我一共放了九个包,等会上图。

配置好了启动tomcat,然后报错,果然意料之中,报错意思缺少类de.javakaffee.kryoserializers.LocaleSerializer,

见怪不怪了,小问题,缺了就找呗,发现kryo-serializers包没有类,果断升级找kryo-serializers-0.11.jar。

再次启动测试报错java.lang.NoSuchMethodError: net.spy.memcached.MemcachedClient.set(Ljava/lang/String;ILjava/lang/Object;)Lnet/spy/memcached/internal/OperationFuture;。解决方法spymemcached-2.7.jar升级到spymemcached-2.8.4.jar.

再试启动中有信息

基于apache的tomcat负载均衡和集群配置session共享

顺利完成。浏览器测试过重结果不一致啊,我就XXX了。

从上面的测试结果,给我提示果断替换tomcat统一用6.0.18版本,虽然开始用的6.0.37也是tomcat6,但是测试不成功,看来还是有区别的吗具体原因这里没有深入探究。基于apache的tomcat负载均衡和集群配置session共享

最后放上所有9个jar包截图

基于apache的tomcat负载均衡和集群配置session共享

总之版本一致很关键。

下一个话题就该到动静分离

附几个参考链接

http://www.cnblogs.com/interdrp/p/4096466.html

http://www.iteye.com/topic/1125301

上一篇:JS-两个空数组为什么不相等?


下一篇:[UE4]一分钟实现聊天系统