Nginx在负载均衡条件下实现Session共享
Nginx在负载均衡条件下实现Session共享存在两种方式:
(1)Redis共享Session:
【准备三台服务器】:
IP:10.13.5.10 作为负载均衡服务器 和 redis 服务器
IP:10.13.5.11 项目服务器01
IP: 10.13.5.12 项目服务器02
本文采用的是基于Nginx做JavaWeb负载均衡
(1)在同一台服务器进行测试更改端口号的方式,页面返回的SessionID是一样的
(2)向Session存值也是保证取值跳转两个Tomcat同一台服务器的不同端口号的访问一致
redis中的keys如图:
【注意事项】:
1、一定要保证nginx.conf 中的location / {} , ‘/’ 之后不要加任何uri 加了就实现不了。
2、一定要保证是同一个项目,就算只是改了html 中的几个字符,有时候Session 共享还是会失效!!!
点击下载 :项目地址链接
(2)Tomcat共享Session:
(a)修改tomcat 下 conf/context.xml 在</Context>里面加入以下代码
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="10.13.5.10"
port="6379"
password="123456"
database="0"
maxInactiveInterval="60" />
(b)在tomcat lib下 加入以下三个jar包
commons-pool2-2.2.jar
jedis-2.5.2.jar
tomcat-redis-session-manage-tomcat7.jar
【调试成功条件】: 访问项目成功,可以在 redis 中查看到 既成功
【参考文献】:Nginx 负载均衡条件下 Redis 共享Session (Java)(二)