背景

对大部分应用来说,都可能部署了多个tomcat(6,7,8,9),包括部署了多个memcached节点,但是nginx分发请求到不同tomcat后,session的共享就成为了一个很大的问题。使用memcached-session-manager(MSM)就可以很轻松的解决这个问题。


添加MSM所需jar到tomcat容器

1. 默认我们使用JDK自带序列化方式实现序列化,添加如下jar文件到tomcat的lib目录下

memcached-session-manager-2.1.1.jar

memcached-session-manager-tc7-2.1.1.jar

spymemcached-2.11.1.jar

2. 修改tomcat下conf下的context.xml文件,添加如下配置

<Manager

className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="127.0.0.1:11212"

requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

/>

3. 把nginx的负载均衡策略设置为1:1,便于测试

tomcat 7负载均衡-memcache-session

4. 四个tomcat服务都只有一个页面index.jsp,内容如下:

tomcat 7负载均衡-memcache-session

5. 使用浏览器访问http://localhost,结果如下,发现nginx对四个tomcat实现了负载,并且session一致,这就说明了实现了session共享

tomcat 7负载均衡-memcache-session

tomcat 7负载均衡-memcache-session

tomcat 7负载均衡-memcache-session

tomcat 7负载均衡-memcache-session

相关文章: