├── README.md
└── jar
├── commons-pool2-2.2.jar
├── jedis-2.5.2.jar
└── tomcat-redis-session-manager-2.0.0.jar
/README.md:
--------------------------------------------------------------------------------
1 | # tomcat-redis-session-manager
2 |
3 | > 使用redis配置tomcat共享session
4 |
5 | ### 结构图:
6 |
7 |
8 |
9 | ### 分析:
10 |
11 | 分布式web server集群部署后需要实现session共享,针对 tomcat 服务器的实现方案多种多样,
12 | 比如 tomcat cluster session 广播、nginx IP hash策略、nginx sticky module等方案,
13 | 本文主要介绍了使用 redis 服务器进行 session 统一存储管理的共享方案。
14 |
15 | ### 必要环境:
16 |
17 | * java1.7
18 | * tomcat7
19 | * redis2.8
20 |
21 |
22 |
23 | ## nginx 负载均衡配置
24 |
25 | 1. 修改nginx conf配置文件加入
26 |
27 | upstream tomcat {
28 | server 200.10.10.67:8110;
29 | server 200.10.10.67:8120;
30 | server 200.10.10.44:8110;
31 | server 200.10.10.66:8110;
32 | }
33 |
34 | 2. 配置 相应的server或者 location地址到 http://tomcat
35 |
36 |
37 | ## tomcat session共享配置步骤
38 |
39 | 1. 添加redis session集群依赖的jar包到 TOMCAT_BASE/lib 目录下
40 |
41 | * tomcat-redis-session-manager-2.0.0.jar
42 | * jedis-2.5.2.jar
43 | * commons-pool2-2.2.jar
44 |
45 |
46 | 2. 修改 TOMCAT_BASE/conf 目录下的 context.xml 文件
47 |
48 |
49 |
57 |
58 | 属性解释:
59 |
60 | * **host** redis服务器地址
61 | * **port** redis服务器的端口号
62 | * **database** 要使用的redis数据库索引
63 | * **maxInactiveInterval** session最大空闲超时时间,如果不填则使用tomcat的超时时长,一般tomcat默认为1800 即半个小时
64 | * **sessionPersistPolicies** session保存策略,除了默认的策略还可以选择的策略有:
65 |
66 | [SAVE_ON_CHANGE]:每次 session.setAttribute() 、 session.removeAttribute() 触发都会保存.
67 | 注意:此功能无法检测已经存在redis的特定属性的变化,
68 | 权衡:这种策略会略微降低会话的性能,任何改变都会保存到redis中.
69 |
70 | [ALWAYS_SAVE_AFTER_REQUEST]: 每一个request请求后都强制保存,无论是否检测到变化.
71 | 注意:对于更改一个已经存储在redis中的会话属性,该选项特别有用.
72 | 权衡:如果不是所有的request请求都要求改变会话属性的话不推荐使用,因为会增加并发竞争的情况。
73 | * **sentinelMaster** redis集群主节点名称(Redis集群是以分片(Sharding)加主从的方式搭建,满足可扩展性的要求)
74 | * **sentinels** redis集群列表配置(类似zookeeper,通过多个Sentinel来提高系统的可用性)
75 | * **connectionPoolMaxTotal**
76 | * **connectionPoolMaxIdle** jedis最大能够保持idel状态的连接数
77 | * **connectionPoolMinIdle** 与connectionPoolMaxIdle相反
78 | * **maxWaitMillis** jedis池没有对象返回时,最大等待时间
79 | * **minEvictableIdleTimeMillis**
80 | * **softMinEvictableIdleTimeMillis**
81 | * **numTestsPerEvictionRun**
82 | * **testOnCreate**
83 | * **testOnBorrow** jedis调用borrowObject方法时,是否进行有效检查
84 | * **testOnReturn** jedis调用returnObject方法时,是否进行有效检查
85 | * **testWhileIdle**
86 | * **timeBetweenEvictionRunsMillis**
87 | * **evictionPolicyClassName**
88 | * **blockWhenExhausted**
89 | * **jmxEnabled**
90 | * **jmxNameBase**
91 | * **jmxNamePrefix**
92 | * ****
93 |
94 | 3. 重启tomcat,session存储即可生效
95 |
--------------------------------------------------------------------------------
/jar/commons-pool2-2.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/izerui/tomcat-redis-session-manager/30c2a997b87392baec24e3cc1d274edb017c8657/jar/commons-pool2-2.2.jar
--------------------------------------------------------------------------------
/jar/jedis-2.5.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/izerui/tomcat-redis-session-manager/30c2a997b87392baec24e3cc1d274edb017c8657/jar/jedis-2.5.2.jar
--------------------------------------------------------------------------------
/jar/tomcat-redis-session-manager-2.0.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/izerui/tomcat-redis-session-manager/30c2a997b87392baec24e3cc1d274edb017c8657/jar/tomcat-redis-session-manager-2.0.0.jar
--------------------------------------------------------------------------------