Nginx+Redis+Tomcat实现session共享

导读:本篇文章讲解 Nginx+Redis+Tomcat实现session共享,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

架构图:

Nginx+Redis+Tomcat实现session共享

使用资源:

nginx主服务器:192.168.0.90

tomcat项目服务器1:192.168.0.91

tomcat项目服务器2:192.168.0.92

redis服务器:192.168.0.93

注意访问时需要配置防火墙规则,或者关闭防火墙

一、前言:上一篇文章讲到了Nginx实现反向代理和负载均衡,最后虽然看到了效果,但是还有一个问题就是在负载均衡的情况下session不能实现集服务之间共享,比如用户登录时被分配到192.168.0.91服务器,这台服务器记录下用户session,而在跳转到首页时分配到192.168.0.92服务器,这台服务器没有用户session信息,导致用户是未登录状态,这样很明显是不友好的。

二、session共享办法

1、nginx提供了ip_hash策略,就是根据请求ip进行hash计算,根据hash值将用户分配到一台固定的服务器。

2、session保存在redis或memcache中,把session抽取出来放到内存数据库中,读取速度快,实现session在多台服务器之间共享。

三、session+redis实现session共享

1、指定一台redis服务器安装redis,安装redis也很简单,请自行百度。

2、修改redis.conf

设置允许连接redis的ip(图一)或者关闭保护模式(图二)

Nginx+Redis+Tomcat实现session共享

Nginx+Redis+Tomcat实现session共享

设置守护线程,后台启动,貌似redis3.X版本以后这个参数默认是true

Nginx+Redis+Tomcat实现session共享

3、启动redis

./redis-server redis.conf

4、配置tomcat服务器tomcatA192.168.0.91和tomcatB192.168.0.92;

引入jar包放到tomcat的lib目录下(commons-pool2-2.0.jar+jedis-2.5.0.jar+tomcat-redis-session-manager-2.0.0.jar);

建议tomcat7引入这三个jar包版本尽量要和我的一样,如果报错基本都是jar包版本问题,反正我是引入其他版本报各种问题唉;

jar包下载链接:https://pan.baidu.com/s/1geZVozx#list/path=%2F;

tomcat8目前不支持session共享,也有解决办法,链接:https://www.cnblogs.com/cgli/p/7920573.html

5、配置tomcat的context.xml,在context节点增加如下内容

    <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
    <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
     host="redis服务地址"
     port="6379"
     database="0"
     maxInactiveInterval="60" />

6、启动tomcatA和tomcatB,如果报类找不到或者其他错误,一般就是jar包版本问题。

7、启动ngin,这块需要和上一篇文章nginx实现反向代理和负载均衡连起来实现。

8、访问192.168.0.90:81,nginx地址

session不变,即使一台服务器挂掉,访问另一台服务器也能拿到session

Nginx+Redis+Tomcat实现session共享

redis已保存session

Nginx+Redis+Tomcat实现session共享

9,session 实现共享。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/14840.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!