Tomcat集群—使用Redis3.0实现Session共享

本文内容参考龙果学院《基于Dubbo的分布式系统架构实战》课程内容,以课程中所提供的简易版支付系统中的运营管理系统 pay-web-boss 项目为例

Tomcat版本:Tomca7

1、单节点访问http://192.168.1.61:8082/pay-web-boss/


Tomcat集群—使用Redis3.0实现Session共享_第1张图片
Tomcat集群—使用Redis3.0实现Session共享_第2张图片

2、增加多一个消费者节点:192.168.1.62,以同样的方式部署pay-web-boss工程。

先验证新增节点也可正常访问http://192.168.1.62:8082/pay-web-boss/


Tomcat集群—使用Redis3.0实现Session共享_第3张图片
Tomcat集群—使用Redis3.0实现Session共享_第4张图片

3、在Keepalived+Nginx组成的反向代理集群中的两个节点同步增加如下两处配置:

user  root;

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_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  0;

keepalive_timeout  65;

#gzip  on;

## FastDFS Tracker Proxy

upstream fastdfs_tracker {

server 192.168.1.131:8000 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.1.132:8000 weight=1 max_fails=2 fail_timeout=30s;

}

## web-boss

upstream web_boss {

server 192.168.1.61:8082 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.1.62:8082 weight=1 max_fails=2 fail_timeout=30s;

}

## FastDFS Cluster

server {

listen      88;

server_name  localhost;

#charset koi8-r;

#access_log  logs/host.access.log  main;

location / {

root  html;

index  index.html index.htm;

}

#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;

}

## FastDFS Proxy

location /dfs {

root  html;

index  index.html index.htm;

proxy_passhttp://fastdfs_tracker/;

proxy_set_header Host  $http_host;

proxy_set_header Cookie $http_cookie;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

client_max_body_size  300m;

}

## web-boss Cluster

location /pay-web-boss {

root  html;

index  index.html index.htm;

proxy_passhttp://web_boss/pay-web-boss;

proxy_set_header Host  $http_host;

proxy_set_header Cookie $http_cookie;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

client_max_body_size  100m;

}

}

}

4、重启Nginx

# /usr/local/nginx/sbin/nginx -s reload

5、通过反向代理集群的VIP访问pay-web-boss时,有时可以登录成功,但有时又会提示验证码错误,原因就是Session没有同步。

http://192.168.1.50:88/pay-web-boss/login_operatorLogin.action


Tomcat集群—使用Redis3.0实现Session共享_第5张图片

接下来就是要解决Tomcat的Session共享问题,使用开源项目:

https://github.com/ran-jit/TomcatRedisClusterEnabledSessionManager

注意,因为我们使用的是Redis3.0集群,相应的插件一定要支持Redis3.0集群。Redis集群地址,请看《Dubbo视频教程--高可用架构篇--第05节--Redis集群的安装(Redis3+CentOS)》

192.168.1.111:7111

192.168.1.112:7112

192.168.1.113:7113

192.168.1.114:7114

192.168.1.115:7115

192.168.1.116:7116

6、下载

https://github.com/ran-jit/TomcatRedisClusterEnabledSessionManager/archive/master.zip

解压,找到lib目录中的

jedis-3.0.0-SNAPSHOT.jar

commons-pool2-2.2.jar

commons-logging-1.1.jar

并将这3个jar包上传到Tomcat7中的 lib 目录

7、下载

https://github.com/ran-jit/TomcatRedisClusterEnabledSessionManager/releases/download/1.0/TomcatRedisSessionManager-1.0.zip(当前是1.0,如果出最新版,你们要同步更新到最新版)

解压后得到:TomcatRedisSessionManager-1.0.jar 和 redis.properties


Tomcat集群—使用Redis3.0实现Session共享_第6张图片

将 TomcatRedisSessionManager-1.0.jar 上传到Tomcat7中的 lib 目录

8、添加Tomcat的环境变量 (可选)

catalina.home="/home/wusc/edu/web/boss-tomcat"

9、配置 redis.properties , 集群中的IP:端口用都好隔开,打开Redis集群模式

# redis hosts ex: 127.0.0.1:6379, 127.0.0.2:6379, 127.0.0.2:6380, ....

redis.hosts=192.168.1.111:7111,192.168.1.112:7112,192.168.1.113:7113,192.168.1.114:7114,192.168.1.115:7115,192.168.1.116:7116

# Redis Password

redis.password=

# set true to enable redis cluster mode

redis.cluster.enabled=true

配置好之后把 redis.properties 上传到 Tomcat7的 conf目录

注意:此插件支持单节点的Redis,也支持Redis集群,只需要在redis.properties中配置则可。

10、在Tomcat7中的 conf/context.xml 中增加如下两行配置:

11、在Tomcat的conf/web.xml中核对确认Tomcat的Session超时时间,默认为30分钟。

可按需修改。

你可能感兴趣的:(Tomcat集群—使用Redis3.0实现Session共享)