多种会话方式:1.ip_hash 2.mysql 3.redis
tomcat自带的cluster session复制 ( 官方建议不要超过4个tomcat节点 )
1.配置虚拟主机 (所有节点都需要配置)
[root@web02 ~]# vim /soft/tomcat/conf/server.xml
<Host name="session.baimei.com" appBase="/code/tomcat/session"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="session_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
2.创建目录,编写代码(所有节点都需要配置)
[root@web02 ~]# mkdir -p /code/tomcat/session/ROOT
[root@web02 ~]# vi /code/tomcat/session/ROOT/index.jsp
<body>
<%
//HttpSession session = request.getSession(true);
System.out.println(session.getCreationTime());
out.println("<br> web01/WEB2 SESSION ID:" + session.getId() + "<br>");
out.println("Session created time is :" + session.getCreationTime()
+ "<br>");
%>
</body>
重启服务:
systemctl restart tomcat
在 web01 上 再执行上边的步骤
然后我们配置一下 hosts
3.接入负载均衡
在 lb01
cat >/etc/nginx/conf.d/session.conf<<'EOF'
upstream session {
server 172.16.1.7:8080;
server 172.16.1.8:8080;
}
server {
listen 80;
server_name session.baimei.com;
location / {
proxy_pass http://session;
include proxy_params;
}
}
EOF
在 lb01 上 重启nginx
systemctl restart nginx
我们先看看 无会话保持的样子
修改一下 ,we01 上的 信息:
4.接入 TomcatClusterRedisSessionManager
看一下 有会话保持的
( 参考官方地址: https://github.com/ran-jit/tomcat-cluster-redis-session-manager )
0. [root@web01 ~]# wget https://github.com/ran-jit/tomcat-cluster-redis-session-manager/releases/download/4.0/tomcat-cluster-redis-session-manager.zip
如果你的网速不给力,可以尝试:
tomcat: https://url69.ctfile.com/d/253469-55980271-fb0f92?p=2206 (访问密码: 2206)
1.解压zip包
[root@web01 ~]# unzip tomcat-cluster-redis-session-manager.zip
2.拷贝jars到tomcat的/lib目录中
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/lib/* /soft/tomcat/lib/
3.拷贝conf下的redis.properties文件,到tomcat的conf文件
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/conf/redis-data-cache.properties /soft/tomcat/conf/
4.将配置文件中连接redis地址修改为如下地址即可
[root@web01 ~]# vim /soft/tomcat/conf/redis-data-cache.properties
redis.hosts=172.16.1.51:6379
5.添加如下两行至tomcat/conf/context.xml (添加在</Context> 上一行 )
[root@web01 ~]# vim /soft/tomcat/conf/context.xml
<Valve className="tomcat.request.session.redis.SessionHandlerValve" />
<Manager className="tomcat.request.session.redis.SessionManager" />
重启一下 tomcat ,
同样的配置在 web02上来一份:
我们再来看看有会话保持的样子:
session 一样,就说明配置成功。