Tomcat通过Memcached实现session共享
需要的文件安装包等:
链接: https://pan.baidu.com/s/18Mz_qCy7cR7CUrNNgJnCPg
提取码: 252e
1为什么要session共享?
用Nginx部署集群,转发到两台tomcat上。访问项目时,会出现切换网络或者ip变化等,导致session失效,让用户退出系统。
这是因为原本用户在tomcat-01上,但后面Nginx把请求转发到了tomcat-02上,之前的session就会失效。所以需要做session共享了。
2安装libevent和memcached
memcached需要libevent里面的库,所以需要先安装libevent,再安装memcached。
安装详情文章:https://blog.csdn.net/qq_39289155/article/details/117033848
3安装tomcat
为了简单,不搞Nginx,都在一台服务器上搞。
安装好两个tomcat-01,和tomcat-02
3.1首先复制jar包
把上面的jar包复制到tomcat的lib文件夹下面。两个tomcat都要。
3.2修改context.xml文件
修改tomcat/conf 文件夹下面的context.xml文件。两个tomcat都更换。
若只安装了一个memcached,可以如下配置:
memcachedNodes配置的就是安装memcached的ip加端口。
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:10.0.0.01:11211"
sticky="false"
sessionBackupAsync="false"
lockingMode="auto"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
安装了多个memcached,可以如下配置:
注意修改memcachedNodes属性的memcached的ip加端口。
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:10.0.0.104:11211,n2:10.0.0.105:11211"
sticky="false"
sessionBackupAsync="false"
lockingMode="uriPattern:/path1|/path2"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
4修改tomcat的访问页面
修改tomcat/webapps/ROOT下面的index.jsp的内容,两个tomcat都更换。
<html>
<body >
<center>
<%= request.getSession().getId() %>
<h1>10.0.0.01</h1>
<h1>port:18098</h1>
<h1>this is Tomcat-01 ! </h1>
</center>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false"%>
SessionID:<%=session.getId()%><BR>
SessionIP:<%=request.getServerName()%> <BR>
SessionPort:<%=request.getServerPort()%>
<% out.println("This is Tomcat server 01 !"); %>
5访问验证
直接访问两个tomcat的地址,ip加端口
查看SessionID,显示的应该是一样的值。