美文网首页Linux技巧Java学习笔记
Tomcat集群—使用Redis3.0实现Session共享

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

作者: 龙果学院 | 来源:发表于2016-12-14 17:51 被阅读267次

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

    Tomcat版本:Tomca7

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


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

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

    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的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

    将 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共享

        本文链接:https://www.haomeiwen.com/subject/sxzimttx.html