龙空技术网

使用Redis实现Tomcat集群使Session共享

文雅痞 973

前言:

眼前我们对“tomcatredissessionmanager”可能比较注重,姐妹们都想要学习一些“tomcatredissessionmanager”的相关内容。那么小编同时在网摘上搜集了一些有关“tomcatredissessionmanager””的相关内容,希望小伙伴们能喜欢,姐妹们快快来学习一下吧!

说明

Tomcat集群中,为了在多机环境保持登陆会话,常见的有两种解决方式:

浏览器与Tomcat机器绑定,即为浏览器一直会与同一台Tomcat进行会话

Tomcat机器使用同一session,即使浏览器每次请请求的Tomcat不同,但是session-id值是相同的

Tomcat集群借助于Redis实现Session共享,就是使用第二种方式,将所有Tomcat的seesion值存储在同一个Redis上面,从而保证所有的Tomcat使用相同session值

实现方式

方式1:Tomcat-redis-session-manager

支持环境:redis2+Tomcat6/7(代码2012年后停止更新)

GitHub:

安装参考文章:

方式2:TomcatClusterRedisSessionManager

支持环境:redis3+Tomcat7/8

GitHub:

安装配置步骤(以方式2为例)

1. 安装Nginx

Ngnix无需增加任何第三方模块,直接官方下载进行编译安装即可,之后配置Nginx的负载均衡

nginx.conf配置文件

worker_processes 1;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 { include mime.types; default_type application/octet-stream; log_format main '$remote_user [$time_local] $http_x_Forwarded_for $remote_addr $request '  '$http_x_forwarded_for '  '$upstream_addr '  'ups_resp_time: $upstream_response_time '  'request_time: $request_time';  access_log /usr/local/nginx-1.9.8/logs/access.log main; sendfile on; keepalive_timeout 65; #gzip on; upstream myserver { server 192.168.124.131:8080 weight=4; server 192.168.124.132:8080 weight=3; } server { listen 80; server_name localhost; location / { root html; index index.html index.htm; client_max_body_size 1000m; proxy_pass ; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}

2. 安装Redis

如下载redis-3.2.9.tar.gz,之后进行编译安装,并设置密码

redis配置文件的requirepass 密码可设置密码

3. 安装Tomcat

在多台机器上分别解压安装Tomcat,如apache-tomcat-7.0.68.tar.gz

4. 安装配置TomcatRedisSessionManager

4.1 下载TomcatRedisSessionManager

根据Tomcat版本选择TomcatRedisSessionManager的版本,如TomcatRedisSessionManager-1.0.zip,下载地址

4.2 放置JAR包

将TomcatRedisSessionManager-1.0.zip里面的所有的jar包分别放到Tomcat的lib目录中

commons-logging-1.2.jar,commons-pool2-2.4.1.jar,jedis-2.8.0.jar,TomcatRedisSessionManager-1.0.jar

4.3 修改配置文件

RedisDataCache.properties中配置Reids的地址和密码,之后放在Tomcat的config目录下

修改Tomcat的conf/context.xml,增加如下:

<Valve className="com.r.tomcat.session.management.RequestSessionHandlerValve"/><Manager className="com.r.tomcat.session.management.RequestSessionManager"/>

修改Tomcat的conf/web.xml,如下:

session失效时间,根据项目实际情况进行设置<session-config> <session-timeout>600<session-timeout><session-config>

注意:官方文档中说还要修改catalina.properties,实际使用发现并不需要

5. 验证安装

至此,已经完成了整个环境的安装配置,我们可以在所有的Tomcat的webapps中部署同一个项目,启动所有的Tomcat

验证安装:

浏览器访问部署的项目,然后进行登陆

通过redis客户端可以看到在数据库生成了session值

观察在有效的session时间内,会不会退出登录

标签: #tomcatredissessionmanager