Tomcat8+redis实现session共享
1、本地环境
JDK版本:JDK8
Tomcat版本:apache-tomcat-8.0.33
Redis版本:redis-3.2.100-win32-win64.zip
nginx版本:1.81
2、需要的jar包
commons-pool2-2.0.jar
jedis-2.7.2.jar
tomcat-redis-session-manage-tomcat8.jar (开源组件目前不支持tomcat8 该jar包对源码进行过修改可支持tomcat8 亲测有效)
下载地址:https://download.****.net/download/qq_36133698/11055319
3、context.xml配置
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="127.0.0.1"
port="6379"
database="0"
maxInactiveInterval="60"
/>
4、启动redis服务
命令行窗口,进入redis的/bin目录,输入如下命令启动redis服务。
查看redis所有key
5、测试war包(需要两个tomcat分别运行两个服务,修改两个tomcat的端口防止端口冲突,通过nginx代理统一端口)
demo下载地址:https://download.****.net/download/qq_36133698/11055334
nginx配置
#user nobody;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
client_max_body_size 100m;
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#upstream表示负载服务器池,定义名字为cluster2的服务器池.将client端的请求分发
upstream cluster2{
# 下面介绍几种负载均衡策略,其中轮询、weight、ip_hash是nginx内置的,可以直接使用。fair和url_hash需要第三方支持才可以使用。
# 1、轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
#include gzip.conf;
server{
listen 8888;
server_name 127.0.0.1; # 这里是服务器的IP或者域名 最好用IP 访问网址是, 需要经过DNS域名解析将网址转换成IP地址, 直接修改为ip地址不就省去了这步嘛
#location块:配置请求的路由,以及各种页面的处理情况。
location /cluster2 {
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_pass http://cluster2; #请求转向naire(upstream块) 定义的服务器列表
}
}
}
6、访问demo
查看redis key
Tomcat通过redis成功实现session共享