您的位置 首页 tomcat

Tomcat+Nginx+Redis会话保持

多种会话方式: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 &quot;%r&quot; %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 一样,就说明配置成功。

 

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章