背景
对大部分应用来说,都可能部署了多个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,便于测试
4. 四个tomcat服务都只有一个页面index.jsp,内容如下:
5. 使用浏览器访问http://localhost,结果如下,发现nginx对四个tomcat实现了负载,并且session一致,这就说明了实现了session共享