tomcat集群redis配置session共享
2017-11-03 09:47
471 查看
针对之前的nginx+tomcat的负载均衡机制,因为会出现session丢失的问题,特研究了下redis的session共享;下载JDK7、tomcat7以备后续测试;
一、下载tomcat-redis-session的源码自行打包:https://github.com/jcoleman/tomcat-redis-session-manager
这里要对tomcat-redis-session打包做一下特殊记录:
上图中的构建pom.xml。
<?xml version="1.0" encoding="GB2312"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.hik</groupId> <artifactId>tomcat-redis-session</artifactId> <!--<packaging>war</packaging>--> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-catalina</artifactId> <version>7.0.27</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.2</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.0</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> </project>
由于我们的环境都是基于7系列来运行的,所以必须保持一致;
二、下载安装redis(linxu版本)
wget http://redis.googlecode.com/files/redis-2.4.6.tar.gz
解压:
tar –zxvfredis-2.4.6.tar.gz
编译
需要说明的事,redis的安装非常简单,已经有现成的Makefile文件,直接运行make命令即可。
make
make install
安装成功后直接启动redis:redis-server/etc/redis.conf,如图
新开窗口redis-cli测试:
Set a 123
Get a 得到123 安装成功可以使用
三、上边源码自己打包生成tomcat-redis-session.jar包,从网上下载jedis-2.7.2.jar commons-pool2-2.4.1.jar;将这3个包放入tomcat\lib目录下;
四、配置tomcat\conf下的context.xml文件
将以下代码添加进context.xml里边
<!-- tomcat-redis-session共享配置 --> <ValveclassName="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/> <ManagerclassName="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="localhost" port="6379" database="0" maxInactiveInterval="60" />
五、tomcat测试session共享配置
准备两个tomcat模拟,每个配置都跟上边一样,然后
Tomcat18080 webapp/index.jsp修改:<% request.getSession().setAttribute(“a”,”123”);%>
Tomcat28090 webapp/index.jsp 修改:<% out.print(request.getSession().getAttribute(“a”))%>
六、测试整个环境:
服务器记得先启动redis!
启动tomcat1,访问http://localhost:8080/index.jsp
启动tomcat2,访问 http://localhost:8090/index.jsp,可看到页面显示123,证明session共享成功。
七、可能会出现的错误
Tomcat可能启动不正常,最大的原因是jar包没用对应的版本,本人测试可以用的相关jar版本是commons-pool2-2.3,jedis-2.7.2。
tomcat-redis-session-manager-master.jar如果不能用就按文档自己重新打包。如果有其他错误(比如java.lang.UnsupportedClassVersionError)
的话就去检查下启动指定jdk是否为1.7,
如果报错xml文件如果读取错误(Invalid byte 1 of 1-byte UTF-8 sequence)就修改context.xml中 encoding="GB2312"?>,
其他错误基本上都跟jar版本和运行环境相关,请认真检查。
相关文章推荐
- Nginx+Tomcat配置集群session共享
- 使用Tomcat+Redis来实现集群部署中的Session共享问题
- Shiro+Redis实现tomcat集群session共享
- Spring-Session实现Session共享Redis集群方式配置教程
- nginx、memcached、tomcat 负载均衡和集群配置,session共享
- Nginx+tomcat集群使用redis共享session
- apache+tomcat集群session共享-redis服务器
- tomcat-session-redis配置(session共享)
- Tomcat集群和Session共享的配置方法
- Tomcat集群和Session共享的配置方法
- Tomcat集群和Session共享的配置方法
- 基于Memcached的tomcat集群session共享所用的jar及多个tomcat各种序列化策略配置
- Nginx +Tomcat集群搭建 Redis实现session共享
- Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享
- Nginx+Redis+Tomcat实现session共享集群 推荐
- Apache+Tomcat集群配置+session共享
- Linux高可用(HA)之Nginx+Redis+Tomcat集群实现session保持和共享
- Nginx+Tomcat+Redis搭建共享SESSION集群
- tomcat 集群(1)总结tomcat的server.ml配置cluster的方式,以及Tomcat集群session共享失败的解决方法
- Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享