Tomcat +Nginx+Redis实现session共享
一、准备工作
中间件:Tomcat、Redis、Nginx
jar包:commons-pool2-2.4.2.jar、jedis-2.8.0.jar、tomcat-redis-session-manager-2.0.0.jar
二、配置
Tomcat
多台Tomacat需要配置不同的端口号
/lib
将jar包存放到此位置
/conf/server.xml
/conf/context.xml
host为Redis的ip地址,port为端口,database为数据库。
Nginx
/conf/nginx.conf
upstream意为配置服务器列表,本例中开启了两台tomcat,端口分别为8080与9999。
proxy_pass意为配置代理服务器。
此配置意为监听本地(192.168.0.113)的80端口,并将请求以轮询方式转发给8080和9999的tomcat服务器。
Redis
Redis不需要特殊配置,启动即可。
三、测试
先后启动Redis服务、两台tomcat服务器、Nginx服务器。
在Tomcat启动页面加上标识,判断两台服务器中sessionId是否一致。
/webapps/ROOT/index.jsp:
四、结果
如果F5刷新页面不能切换端口对应的页面,可能是由于浏览器缓存造成。
解决方法:清除缓存刷新,alt+F5
此时可看到多个tomcat服务在不断轮询,且sessionId一致。
再用Redis桌面管理工具查看信息:
可以看到session信息已经交给Redis管理。
实现成功 。
五、弊端
此种方式依赖于tomcat容器,如果中间件换成jetty或者其他,就不受用。
还有一种较好实现方式:Spring Session + Redis
Tomcat +Nginx+Redis实现session共享的更多相关文章
- Tomcat通过Redis实现session共享的完整部署记录
对于生产环境有了一定规模的tomcat集群业务来说,要实现session会话共享,比较稳妥的方式就是使用数据库持久化session.为什么要持久化session(共享session)呢?因为在客户端每 ...
- windows 环境下nginx + tomcat群 + redis 实现session共享
nginx作为负载均衡根据定义将不同的用户请求分发到不同的服务器,同时也解决了因单点部署服务器故障导致的整个应用不能访问的问题 在加入nginx之后,如果多个服务器中的一个或多个(不是全部)发生故障, ...
- Tomcat 使用redis实现session共享
准备工作: 1.安装nginx 环境搭建参考:https://blog.csdn.net/fd2025/article/details/79878326 nginx.conf的编辑: 2.同一台机器配 ...
- tomcat用redis做session共享
在context.xml添加以下配置: <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerVa ...
- tomcat+nginx+redis实现均衡负载、session共享(一)
在项目运营时,我们都会遇到一个问题,项目需要更新时,我们可能需先暂时关闭下服务器来更新.但这可能会出现一些状况: 1.用户还在操作,被强迫终止了(我们可以看日志等没人操作的时候更新,但总可能会有万一) ...
- 【转载】tomcat+nginx+redis实现均衡负载、session共享(一)
http://www.cnblogs.com/zhrxidian/p/5432886.html 在项目运营时,我们都会遇到一个问题,项目需要更新时,我们可能需先暂时关闭下服务器来更新.但这可能会出现一 ...
- Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享
小伙伴们好久不见!最近略忙,博客写的有点少,嗯,要加把劲.OK,今天给大家带来一个JavaWeb中常用的架构搭建,即Nginx+Tomcat搭建服务集群,然后通过Spring Session+Redi ...
- nginx+tomcat实现集群,redis实现session共享,软连接实现文件共享:http://blog.csdn.net/hua1586981/article/details/78132710
转载 2017年02月08日 16:52:41 730 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人未必了解. 说到反向代理,可能 ...
- Nginx+tomcat+redis实现session共享
Nginx+tomcat+redis实现session共享 1,安装nginx,使用yum -y install nginx 这是epel源中的,需要安装epel源. 2,配置nginx. 在ngin ...
随机推荐
- JVM中对象模型及相应名词概念
JVM中对象模型及相应名词概念 java对象在jvm中的模型是OOP-Klass 模型: klass klass对应元数据,包括常量池.字段.方法等.是在加载class阶段创建instanceKlas ...
- 【Gin-API系列】Gin中间件之日志模块(四)
日志是程序开发中必不可少的模块,同时也是日常运维定位故障的最重要环节之一.一般日志类的操作包括日志采集,日志查询,日志监控.日志统计等等.本文,我们将介绍日志模块在Gin中的使用. Golang如何打 ...
- MIT 6.828 Lab04 : Preemptive Multitasking
目录 Part A:Multiprocessor Support and Cooperative Multitasking Multiprocessor Support 虚拟内存图 Exercise ...
- 简单说说mybatis是防止SQL注入的原理
mybatis是如何防止SQL注入的 1.首先看一下下面两个sql语句的区别: <select id="selectByNameAndPassword" parameterT ...
- docker 启动容器失败 id already in use
问题:id already in use 解决:/etc/docker/daemon.json {"shutdown-timeout": 60}
- keepalived的vrrp多播报文被禁,导致VIP同时位于多个机器上
keepalived的vrrp多播报文被禁,导致VIP同时位于多个机器上 查看man keepalived.conf,VRRP instances中给出了单播的设置方法,添加unicast_peer即 ...
- SpringBoot集成Swagger2,3分钟轻松入手!
一.引入maven <dependency> <groupId>io.springfox</groupId> <artifactId>springfox ...
- Privacy-Preserving Deep Learning via Additively Homomorphic Encryption
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Full version of a paper at the 8-th International Conference on Appli ...
- python编程中的并发------多线程threading模块
任务例子:喝水.吃饭动作需要耗时1S 单任务:(耗时20s) for i in range(10): print('a正在喝水') time.sleep(1) print('a正在吃饭') time. ...
- Hadoop 3.x 与Hadoop 2.x 的区别和优化点
Hadoop 3.x 与Hadoop 2.x 的区别和优化点 通用性 1.精简Hadoop内核,包括剔除过期的API和实现,将默认组件实现替换成最高效的实现(比如将FileOutputCommitte ...