nginx+Redis+tomcat实现session共享的过程
2017-01-30 00:00
399 查看
一 前言
nginx 的upstream支持的策略有如下几种
使用ip_hash可以不用考虑session共享问题(每个ip会固定访问一个tomcat,无需session共享)
本文演示的例子是使用的轮询(默认)策略。
关于如何在liunx上安装nginx,redis,jdk以及部署两个或者多个tomcat等,可以参考其他博客(当然,当您搜索如何用nginx 共享session的时候,相信您前面的步奏都做了),言归正传
二 nginx+Redis+tomcat实现session共享
1 配置 nginx 的配置文件
2 上传jar包到tomcat的lib文件下
3 修改两tomcat的context.xml:
4 部署项目到tomcat中进行测试
其中jsp页面代码如下
结果如下图:
附:
1 jar包下载地址 (tomcat7,jdk7)http://download.csdn.net/detail/changheluorivs/9745499
2 测试项目源码下载http://download.csdn.net/detail/changheluorivs/9745500
参考博客http://blog.csdn.net/qinxcb/article/details/42041023
nginx 的upstream支持的策略有如下几种
1、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 2、weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 例如: upstream bakend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; } 3、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 例如: upstream bakend { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; } 4、fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。 upstream backend { server server1; server server2; fair; } 5、url_hash(第三方) 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法 upstream backend { server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; }
使用ip_hash可以不用考虑session共享问题(每个ip会固定访问一个tomcat,无需session共享)
本文演示的例子是使用的轮询(默认)策略。
关于如何在liunx上安装nginx,redis,jdk以及部署两个或者多个tomcat等,可以参考其他博客(当然,当您搜索如何用nginx 共享session的时候,相信您前面的步奏都做了),言归正传
二 nginx+Redis+tomcat实现session共享
1 配置 nginx 的配置文件
2 上传jar包到tomcat的lib文件下
3 修改两tomcat的context.xml:
<Context> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> <!-- Uncomment this to enable Comet connection tacking (provides events on session expiration as well as webapp lifecycle) --> <!-- <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> --> <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="10.10.49.20" port="6379" database="0" maxInactiveInterval="60" /> </Context>
4 部署项目到tomcat中进行测试
其中jsp页面代码如下
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 从session中获取user的信息<%=session.getAttribute("user")%> <br/> 响应的tomcat为<%=request.getAttribute("url")%><br/> sessionid 为: <%=session.getId()%><br/> <br> 请多次刷新本页观察结果 </body> </html>
结果如下图:
附:
1 jar包下载地址 (tomcat7,jdk7)http://download.csdn.net/detail/changheluorivs/9745499
2 测试项目源码下载http://download.csdn.net/detail/changheluorivs/9745500
参考博客http://blog.csdn.net/qinxcb/article/details/42041023
相关文章推荐
- tomcat+nginx+redis实现均衡负载、session共享
- tomcat+nginx+redis实现均衡负载、session共享(一)
- tomcat+nginx+redis实现均衡负载、session共享---(推荐)
- tomcat+nginx+redis实现均衡负载、session共享---项目默认路径找不到
- Redis学习笔记(六)Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享
- tomcat+nginx+redis实现均衡负载、session共享
- tomcat+nginx+redis实现均衡负载、session共享(二)
- Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享
- Linux下搭建Nginx+Keepalived+Redis+Tomcat实现session共享 、负载均衡、高可用
- 负载均衡之Nginx+tomcat+redis实现session共享的负载均衡
- Linux+Nginx+Tomcat+Redis实现负载均衡,应用集群及session共享
- nginx+tomcat+redis实现负载平衡和session共享
- tomcat+nginx+redis实现均衡负载、session共享(一)
- tomcat+nginx+redis实现均衡负载、session共享(一)
- tomcat+nginx+redis实现均衡负载、session共享(二)
- me_nginx+tomcat+memcached实现session共享配置过程
- nginx+tomcat+redis实现session共享
- tomcat+nginx+redis实现均衡负载、session共享(一)
- tomcat+nginx+redis实现均衡负载、session共享---让Tomcat把会话Session保存到Redis数据库。