spring4+redis3+nginx1实现tomcat7集群实现session共享,我的操作系统为winodw7 64位系统
1.下载redis,我下载的是Redis-x64-3.2.100版本,下载后解压如下
通过cmd窗口启动redis 如下图所示,启动后默认端口号为6379,cmd窗口不能关闭
2.使用spring集成redis 我之前的项目是spring3开发的不支持spring-session,所以我把spring的相关jar包升级到了spring4版本,
首先保证用spring4以上版本搭建的web程序可以正常启动,然后添加spring-redis,spring-session等相关的jar。
配置web项目 web.xml文件,配置请求拦截器让spring来代理管理httpsession
spring配置文件 增加如下代码
3.下载nginx,我下载版本为nginx-1.13.1
配置nginx,配置文件路径 XXX\nginx\nginx-1.13.1\conf\nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 10;
proxy_connect_timeout 10;
# proxy_read_timeout 1;
# proxy_send_timeout 1;
#gzip on;
#服务器的集群
upstream WYing.com { #服务器集群名字
server 127.0.0.1:8180 ;
server 127.0.0.1:8181 ;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
#old
#location / {
# root html;
# index index.html index.htm;
# }
#new
location /test {
proxy_pass http://WYing.com;
proxy_redirect default;
}
#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;
}
}
}
我这里直接把我配置好的贴上,负载均衡我采用的默认的轮询方式,你们根据你们的实际部署的tomcat在我的基础上修改下就行,需要修改的地方如下
4.使用nginx配置文件里配置的负载均衡的tomcat部署你的web应用, 然后分别启动tomcat,我用的tomcat7+jdk1.7
tomcat启动完毕后使用cmd启动nginx
如果前面步骤的顺利的话,那么打开浏览器,试试效果吧
这里我通过nginx访问我的web项目,并且重复刷新了几次页面,可以看到我的2个tomcat都有输出信息,说明nginx会根据轮询机制指定本次请求哪个tomcat处理,然后浏览器测试页面每次输出的sessionID都是一样的,说明spring已经通过redis实现了session共享
spring就是这么神奇,通过spring的session共享我们不需要修改任何业务代码,程序里依然通过request.getSession()使用session,最大化的减少了程序的耦合
既然spring把session存到了redis里,那么我们不妨去redis看一下spring存储的session把
这里我在session存了一个属性name,我们通过redis自带的客户端查看
结束了,希望能对大家有所帮助,有不对的地方请指教。
附上我搭建环境用到的redis,nginx和我的web项目源码☺,下载地址https://download.csdn.net/download/qq445829096/10327902