1.准备
apache tomcat 7.0.55
nginx 1.7.2
redis 2.8.9
配置环境使用三个tomcat, 三台tomcat、redis和nginx都在一台机器上,为了方便测试和部署。
大致的整个配置的架构:
在这个图中,nginx做为反向代理,将客户请求根据权重随机分配给三台tomcat服务器,redis做为三台tomcat的共享session数据服务器。
2.规划
redis
localhost:6379
nginx
localhost:80
tomcat
localhost:8081
localhost:8082
localhost:8083
3.配置
tomcat:
修改tomcat文件夹中conf/context.xml文件,在context节点下添加如下配置:
<!-- 单点配置-->
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
host="192.168.1.249"
port="6379"
password="123456"
database="0"
maxInactiveInterval="60" />
host为redis所在服务的ip,port为redis的端口,password为redis密码,高版本的redis要设置密码,不然就会报连接池打开异常。
<!-- 集群配置-->
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
maxInactiveInterval="60"
password="123456"
sentinelMaster="mymaster"
sentinels="192.168.1.249:7000,192.168.1.249:7001,192.168.1.249:7002,192.168.1.248:7003,192.168.1.248:7004,192.168.1.248:7005"/>
conf/server.xml文件中的端口根据规划依次修改。
另外要在tomcat的lib文件夹下分别添加三个jar文件,这个地方jar文件的版本有可能会有冲突,配置的时候需要多尝试。我这里的版本如下,是验证过可以使用的,通过maven的库都可以下载到。
tomcat-redis-session-manager-1.2-tomcat-7.jar
jedis-2.2.0.jar
commons-pool-1.6.jar
nginx:
修改nginx文件目中的conf/nginx.conf文件为:
#user nobody;
worker_processes 1;
error_log logs/error.log;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream localhost {
server localhost:8081 weight=1;
server localhost:8082 weight=2;
server localhost:8083 weight=3;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://localhost;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 100m;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
redis:
vi /usr/local/redis-3.2.4/redis.conf
找到# requirepass foobared ,修改为 requirepass 123456
123456为redis密码
记录操作命令[ Append-only file(缩写aof)的方式](较安全持久化)
appendonly yes #启用aof 持久化方式
# appendfsync always //收到写命令就立即写入磁盘,最慢,但是保证完全的持久化
appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
# appendfsync no //完全依赖os,性能最好,持久化没保证
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 ###重定义命令,例如将CONFIG命令更名为一个很复杂的名字:
# rename-command CONFIG "" 取消这个命令;
以上两行,任意打开一个,即去掉前面的#
#daemonize no 默认情况下, redis 不是在后台运行的,生成模式时一般需要在后台运行,把该项的值更改为 yes
daemonize yes
4.运行
分别启动redis、nginx和三台tomcat。
5.测试
在三个tomcat的webapps/ROOT目录下,分别添加session.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>shared session</title>
</head>
<body>
<br>session id=<%=session.getId()%>
<br>tomcat 3
</body>
</html>
注:每个tomcat下的标示不同
tomcat1:
tomcat2:
tomcat3:
从截图中,可以看出,分别访问了不同的tomcat,但是得到的session却是相同的,说明达到了集群的目的。
- 大小: 19.7 KB
- 大小: 20.3 KB
- 大小: 19.8 KB
- 大小: 19.7 KB
- 大小: 4.8 KB
分享到:
相关推荐
redis缓存服务器Nginx+Tomcat+redis+MySQL实现session会话共享
nginx+tomcat7负载均衡+redis缓存session
主要是实现单点登录,session共享,利用redis缓存。使用的技术是nginx+redis。为了避免麻烦,未使用任何框架。
目录 一、部署启动多个tomcat 2 1、背景 2 2、部署多个tomcat 2 二、nginx配置及启用 3 1、nginx的下载和启动 3 2、nginx配置文件 4 3、使用nginx负载均衡 5 ...2、redis和spring整合实现二级缓存 20
Nginx+tomcat7+java1.7+redis进行共享session缓存必须的一些jar包,下载前注意版本。
redis:Nosql数据库,搭配shiro的会话管理功能将session存入redis中,实现tomcat多服务器集群的session共享 nginx:反向代理服务器,用来调度多台tomcat h2:内存数据库,用于测试 开发环境 ==== jdk...
基于redis缓存的session共享使用的jar包。 tomcat集群环境下(通常是借助于nginx),利用这个session共享策略可以共享同一个session。从而保证客户端iip发生变化时(session相同),不会重新登录。
分布式web server集群部署后需要实现session共享,针对 tomcat 服务器的实现方案多种多样,比如 tomcat cluster session 广播、nginx IP hash策略、nginx sticky module等方案,本文主要介绍了使用 redis 服务器进行...
本插件适用tomcat8集成redis缓存。用于tomcat集群共享session之用。
nginx+redis+tomcat 实现负载 && session共享需要的三个jar包,完全可用。
Maven Spring(IOC DI AOP 声明式事务处理) SpringMVC(支持Restful风格) Hibernate Validate(参数校验) Mybatis(最少配置方案) ...Tomcat集群(Redis共享Session) Sping Shiro权限控制(待完善)
基于redis缓存的session共享使用的jar包 tomcat-redis-session-manager-1.2 tomcat6 jdk6,包含整个
* 将用户登录信息不直接存入session,而是存入Redis缓存,以实现分布式session共享 * 3.提交Data数据的异步任务支持。通过线程池实现异步地将Redis中缓存队列添加到数据库,减少数据库的写入压力。 * 4.nginx与...
tomcat+nginx+redis实现均衡负载、session共享(二) 今天我们接着说上次还没完成session共享的部分,还没看过上一篇的朋友可以先看下上次内容,http://www.cnblogs.com/zhrxidian/p/5432886.html。 1.redis简介及...
项目说明 一个分布式Java Web Session。基于filter机制。 优点 支持多种序列化方式,默认使用Java自带的Serializable方式(兼容性最好);...因为后端的Session共享存储并不能锁住sessionId对应的ke
* 将用户登录信息不直接存入session,而是存入Redis缓存,以实现分布式session共享 * 3.提交Data数据的异步任务支持。通过线程池实现异步地将Redis中缓存队列添加到数据库,减少数据库的写入压力。 * 4.nginx与...
使用Redis进行资源缓存以及实现分布式Session;Druid连接池。 使用关系型数据库MySQL。 使用Tomcat服务器集群以及AWS提供的Application layer Load Balancer。 此外还使用了处于网络层第四层的Load Balancer,实现了...
使用SSM搭建的仿天猫电商网站,数据库采用MySql。包含用户管理,订单,品类,产品,购物车,地址,...项目的演进会逐步融合tomcat集群,nginx负载均衡,redis缓存分布式,redis分布式锁,单点登录,SpringSession,S…
采用SSM框架的电商网站,数据库采用的是MySql。...项目的演进会逐步融合tomcat集群,nginx负载均衡,redis缓存分布式,redis分布式锁,单点登录,Spring Session,Spring Schedule定时关单,Redisson等
* 使用solr实现搜索,内容列表使用redis缓存,使用zookeeper管理集群 ### shop-sso (单点登录系统) SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中, 用户只需要登录一次就可以访问所有相互信任的...