博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
win7:基于nginx tomcat redis分布式web应用的session共享配置实验
阅读量:6406 次
发布时间:2019-06-23

本文共 3396 字,大约阅读时间需要 11 分钟。

hot3.png

一、前言

        由于session占用内存过大,会造成服务器负担,并且基于高并发环境,需要进行负载均衡以及前后端分离,所以在本机进行了基于nginx+多tomcat+redis分布式web应用的session共享配置测试。另外,项目里有一个小需求,就是一个账户只能登陆一个客户端,将session存储到noSql中,对session进行校验拦截既能实现该需求,也能减少服务器压力,使tomcat无状态,即使单机tomcat宕机,也不会影响服务的正常运行。

        基本架构:

          redis可做集群配置。

二、测试环境

os win7 64
nginx nginx-1.10.2
tomcat apache-tomcat-7.0.75-windows-x64
jdk jdk1.7_64
redis redis2.8

          注:redis和nginx最好还是要在linux上使用,win7只是用来测试!后续有时间会将linux的测试结果总结出来!

 jdk环境配置,在此不赘述!

redis安装,略!官方下载地址:,不过官方没有64位的Windows下的可执行程序,目前有个开源的托管在github上, 地址: 点击这个地方,下载文件并解压到自己的电脑目录下。

安装教程可参考

在此安利一个redis桌面管理工具:redis desktop manager  

 三、tomcat配置

      所需jar包

     174200_RnYG_196698.png

   jar包下载地址:

  下载最新的tomcat7: 

095635_8V79_196698.png

解压至文件夹,准备两个tomcat。

1、修改tomcat111   conf\server.xml  端口号 为8081 其他端口默认

095807_bfm4_196698.png

2、为避免tomcat222冲突   修改conf\server.xml  

server port="8006"和port="8082" 以及AJP port="8010"

100252_GQQW_196698.png

100311_btyi_196698.png

各自启动tomcat,测试是否正常运行。如若还是冲突,请为每个tomcat设置不同的jdk运行环境。

 

3、将上面所有的Jar包分别拷到两个Tomcat7安装目录下面的Lib目录下

4、在两个Tomcat 的conf/context.xml 文件里分别增加如下内容(或者在server.xml的context块中添加)

     

6379是redis默认的对外访问端口号,maxInactiveInterval是session有效时间,单位s。

四、编写测试war包

eclipse编译好分别放置到两个tomcat的部署目录下

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ page import="java.io.*,java.util.*" %><%   // 获取session创建时间   Date createTime = new Date(session.getCreationTime());   // 获取最后访问页面的时间   Date lastAccessTime = new Date(session.getLastAccessedTime());   String title = "Tomcat1";   Integer visitCount = new Integer(0);   String visitCountKey = new String("visitCount");   String userIDKey = new String("userID");   String userID = new String("ABCD");   // 检测网页是否由新的访问用户   if (session.isNew()){      title = "Tomcat1";      session.setAttribute(userIDKey, userID);      session.setAttribute(visitCountKey,  visitCount);   } else {	   visitCount = (Integer)session.getAttribute(visitCountKey);	   visitCount += 1;	   userID = (String)session.getAttribute(userIDKey);	   session.setAttribute(visitCountKey,  visitCount);   }%>Session 跟踪

Session 跟踪

Session 信息
id <% out.print( session.getId()); %>
创建时间 <% out.print(createTime); %>
最后访问时间 <% out.print(lastAccessTime); %>
用户 ID <% out.print(userID); %>
访问次数 <% out.print(visitCount); %>

分别启动tomcat,各自访问不同端口号项目,可看到页面已经生成seesion,两个端口的值不相同。

102406_vc4y_196698.png

查看redis,发现session已成功存储到redis

102623_1acn_196698.png

102650_9kIP_196698.png

 

五、nginx集群配置

nginx的安装教程:

tomcat session manager 配置

修改D:\items\server\nginx-1.10.2\conf\nginx.conf ,启用 upstream 负载均衡 tomcat Cluster,默认使用轮询方式。

在#gzip  on;后添加

upstream tomcat  {          server localhost:8081;          server localhost:8082;        ip_hash;		    }

修改

server {        listen       80;        server_name  localhost;        #charset koi8-r;        #access_log  logs/host.access.log  main;        location / {            #root   html;            index  index.jsp index.html index.htm;            add_header Cache-Control 'no-store';			 client_max_body_size 100m;			 proxy_set_header Host $http_host;			 proxy_set_header X-Real-IP $remote_addr;			 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;			# proxy_cache Z;			 proxy_cache_valid 200 1m;			 proxy_pass   http://tomcat;        }

重启nginx:    net start/stop nginx 

六、测试

访问:http://localhost/testSession/  发现session进行了共享

104004_FQhz_196698.png

ok! 

参考资料:http://www.cnblogs.com/weixiaole/p/4431679.html

转载于:https://my.oschina.net/swchenml/blog/858458

你可能感兴趣的文章
小程序开发注意事项
查看>>
ECMAScript7规范中的instanceof操作符
查看>>
Hadoop HDFS原理分析
查看>>
【webpack4】基本配置和入门api
查看>>
Mac使用ssh公钥登录Linux
查看>>
【366天】跃迁之路——程序员高效学习方法论探索系列(实验阶段124-2018.02.06)...
查看>>
POJ3070-Fibonacci(矩阵快速幂)
查看>>
[vue插件]基于vue2.x的电商图片放大镜插件
查看>>
标准的组件结构
查看>>
vue——一个页面实现音乐播放器
查看>>
SVG 扬帆起航
查看>>
NET Core-学习笔记(二)
查看>>
职业生涯上的点点滴滴
查看>>
Linux下添加新硬盘,分区及挂载
查看>>
一起来将vscode变成私人定制笔记本
查看>>
Flutter 云音乐
查看>>
RecyclerView实现多type页面
查看>>
个人的web商城网站
查看>>
debian fcitx
查看>>
排中律与实无穷问题的性质分析
查看>>