tomcat 集群 session复制共享 redis实战版本
来源:互联网 发布:封面制作软件ios 编辑:程序博客网 时间:2024/06/08 08:49
作者:许瑜钊
目录
1、下周安装Redis
2、配置两个Tomcat7
3、下载,拷贝tomcat需要的jar
4、tomcat7配置
5、测试程序
6、配置nginx,设置权重负载均衡
session复制/共享
在 访问系统的会话过程中,用户登录系统后,不管访问系统的任何资源地址都不需要重复登录,这里面servlet容易保存了该用户的会话(session)。 如果两个tomcat(A、B)提供集群服务时候,用户在A-tomcat上登录,接下来的请求web服务器根据策略分发到B-tomcat,因为B- tomcat没有保存用户的会话(session)信息,不知道其登录,会跳转到登录界面。
这时候我们需要让B-tomcat也保存有A-tomcat的会话,我们可以使用tomcat的session复制实现或者通过其他手段让session共享。
1.https://redis.io/下载安装redis
2.在本机上配置两个Tomcat,分别为tomcat7-8081、tomcat7-8082。
编制两个index.jsp页面,分别放入tomcat7-8081\webapps\ROOT、tomcat7-8082\webapps\ROOT目录下,index.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=ISO-8859-1"><title>获取session id</title></head><body> Session Id : <%= request.getSession().getId() %></body></html>
tomcat7-8081访问地址:http://localhost:8081,浏览显示内容:Session Id : A86BC413D12339380DD7B0079C50D9EB
tomcat7-8082访问地址:http://localhost:8082,浏览显示内容:Session Id : A86BC413D12339380DD7B0079C50D9EB
备注:在同一台服务器上配置多个Tomcat教程
3、拷贝tomcat需要的jar
将如下几个jar拷贝到${TOMCAT_HOME}/lib下
tomcat-redis-session-manager-VERSION.jar jedis-2.5.2.jar commons-pool2-2.2.jar
备注:jar已上传到博客园中,有需要的点击下载
4、配置tomcat
编辑${TOMCAT_HOME}/conf/context.xml,在context中加入
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /><Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="localhost" port="6379" database="0" maxInactiveInterval="60" />
其中host和port为redis的ip和端口
至此配置完成,tomcat会使用redis来托管session。
5、测试
分别启动2个Tomcat,在终端看到了如下信息,表明redis的session manager初始化成功。
...十月 15, 2015 4:52:39 下午 com.radiadesign.catalina.session.RedisSessionManager startInternal信息: Attached to RedisSessionHandlerValve十月 15, 2015 4:52:39 下午 com.radiadesign.catalina.session.RedisSessionManager initializeSerializer信息: Attempting to use serializer :com.radiadesign.catalina.session.JavaSerializer十月 15, 2015 4:52:39 下午 com.radiadesign.catalina.session.RedisSessionManager startInternal信息: Will expire sessions after 1800 seconds十月 15, 2015 4:52:39 下午 org.apache.catalina.startup.HostConfig deployDirectory信息: Deployment of web application directory E:\WorkFolder\Temp\Redis-Session\apache-tomcat1-8080\webapps\manag十月 15, 2015 4:52:39 下午 org.apache.catalina.startup.HostConfig deployDirectory信息: Deploying web application directory E:\WorkFolder\Temp\Redis-Session\apache-tomcat1-8080\webapps\ROOT十月 15, 2015 4:52:39 下午 org.apache.catalina.startup.TldConfig execute信息: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a co十月 15, 2015 4:52:39 下午 com.radiadesign.catalina.session.RedisSessionManager startInternal信息: Attached to RedisSessionHandlerValve十月 15, 2015 4:52:39 下午 com.radiadesign.catalina.session.RedisSessionManager initializeSerializer信息: Attempting to use serializer :com.radiadesign.catalina.session.JavaSerializer十月 15, 2015 4:52:39 下午 com.radiadesign.catalina.session.RedisSessionManager startInternal信息: Will expire sessions after 1800 seconds...
打开浏览器,输入http://localhost:8081回车,
打开浏览器,输入http://localhost:8082回车
获取的SESSIONID是同一个,说明成功了,其中D5E4019A04709CD68F94378211DA1B60就是SESSIONID
启动redis自身的客户端:redis-cli.exe -h 127.0.0.1 -p 6379
执行"keys *",会看到SESSIONID:D5E4019A04709CD68F94378211DA1B60;
执行"get D5E4019A04709CD68F94378211DA1B60",得到SESSIONID的值。
经测试,只要redis不重启,用户session就不会丢失。虽然session保存到了redis中,但是如果redis挂掉,session也会丢失。为了解决此问题,可对redis进行集群。
注意:放到redis中的对象必须为可序列化对象。因此,在编程过程中,放置的session对象必须实现serialiable接口。
6、配置nginx,设置权重负载均衡
安装下载好nginx
服务器准备好了,我们要在server外部定义个服务器集群,即用到了上文中提到的upstream 标签。服务器集群名字取为test。
同时我们需要再修改下server,将定向的路径转到问你服务器集群上。
- tomcat 集群 session复制共享 redis实战版本
- tomcat 集群配置,Session复制共享
- tomcat 集群配置,Session复制共享
- apache+tomcat集群session共享-redis服务器
- tomcat集群基于redis共享session解决方案
- linux-tomcat-session共享-redis集群
- nginx+tomcat+redis的集群+session共享
- 基于Redis的Tomcat集群Session共享
- tomcat集群-基于redis的session共享
- Nginx+Tomcat+Redis搭建共享SESSION集群
- redis实现tomcat集群session共享
- redis集群 实现 tomcat session 共享
- tomcat集群共享session(nginx+redis)
- tomcat集群redis配置session共享
- tomcat集群-基于redis的session共享
- 用Redis存储Tomcat集群的Session实现session共享
- Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享
- Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享
- 九、Git-添加远程仓库
- PHP错误类型及屏蔽方法
- 达内云笔记(三)模式初涉
- stm32 使用外部时钟的注意事项(jlink调试输出无信息)
- 爬取房天下(全站)
- tomcat 集群 session复制共享 redis实战版本
- LeetCode 633 Sum of Square Numbers
- poj2063 Investment(完全背包)
- hdu6201transaction transaction transaction(最长路spfa vector模板)
- 0911 Oracle基本概念
- 3Layer
- Taints and Tolerations
- 电子之电容测试标准
- eclipse配置生成.h和.so文件过程