最新消息:运维之路

Linux下Tomcat+Redis保持Session会话

系统运维 admin 225浏览 0评论

redis
Redis 作为持久化强大的缓存缓存服务
Redis有如下优点:
1. 高性能 – Redis能支持超过100K+每秒的读写频率
2. 丰富的数据类型 – Redis支持Strings、Lists、Hashes、Sets及Ordered Sets等数据类型
3. 原子性 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子操作
4. 丰富的特性 – Redis还支持发布/订阅、事务、key过期等特性
5.持久化
基本上我工作中很少去用 Memcache了 也不是说Memcache不好 个人比较偏爱Redis

这次记录下此次公司因为web做成集群 会丢失session问题..要保持session共享问题 开发不更改代码前提下所做的 NGINX+TOMCAT+REDIS 负载均衡并Session共享达到高并发目的
本文主要介绍了使用 redis 服务器进行 session 统一存储管理的共享方案。

==我用的是centos 64位的系统==

1、安装redis
将redis安装到/usr/local/redis
$ mkdir /user/local/redis
进入安装目录下
$ cd /user/local/redis
下载你需要的redis版本(http://download.redis.io/releases/) 我选的是 2.8 这个版本与公司Java 采用的Jdk 比较契合
然后解压
make && make install
修改下配置
daemon yes 后台运行
bind 0.0.0.0 监听所有
最好做一下主从吧 Redis主从太简单这就不写了 Redis密码方面的话我建议不设定了 修改端口直接用iptables控制访问端口即可

环境是Nginx1.10 JDK1.6 REDIS 2.8
配置nginx

新建nginx虚拟机配置文件

vim /etc/nginx/conf.d/sstest.conf


upstream ss {
server 192.168.110.5:8080;
server 192.168.110.6:8080;
}

server {
listen 80;
server_name 192.168.110.4 default_server;
location / {
proxy_pass http://ss;
}
}


service nginx restart
配置tomcat

vim /usr/local/tomcat/conf/context.xml

******************************
    <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve"/>
    <Manager className="com.radiadesign.catalina.session.RedisSessionManager" 
     host="47.90.80.156"
     port="6379"
     database="0"
     maxInactiveInterval="60"
     />
******************************

Valve要在Manager之前 注意className,网上的都不一样,需要按照自己下载jar包的版本进行调整

maxInactiveInterval 这个值是设定Session会话时间长
对了 要把Jar包放进去 我这收集了无Bug 并在线上取得成功的 网上大部分的都是有缺陷Jar包
wget https://raw.githubusercontent.com/xiaotuanyu120/nginx_tomcat6_redis2.8/master/tomcat-redis-session-manager-1.2-tomcat-6.jar
wget https://raw.githubusercontent.com/xiaotuanyu120/nginx_tomcat6_redis2.8/master/jedis-2.1.0.jar
wget https://raw.githubusercontent.com/xiaotuanyu120/nginx_tomcat6_redis2.8/master/commons-pool-1.6.jar

3个Jar包
mv tomcat-redis-session-manager-1.2-tomcat-6.jar jedis-2.1.0.jar commons-pool-1.6.jar /usr/local/tomcat/lib/
根据jdk和tomcat版本,需要的jar包完全不一样,不同的jar包版本对应的tomcat Context配置亦不同

启动redis、重启tomcat服务

service redis start

在两个tomcat节点上重启tomcat

/usr/local/tomcat/bin/catalina.sh stop
/usr/local/tomcat/bin/catalina.sh start

代码效果测试的话 网上一堆 线上环境取得成功了 这里就不再写了 在此记录一下

转载请注明:DevOps » Linux下Tomcat+Redis保持Session会话

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址