热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Redis+Nginx+TomcatSession共享

今天整合了一些资源,做了一个Nginx+Tomcat+Redis的案例,使部署的web项目能够承载较大的访问压力,Nginx实现负载均衡,并使用Redis实现session共享;如

今天整合了一些资源,做了一个Nginx+Tomcat+Redis的案例,使部署的web项目能够承载较大的访问压力,Nginx实现负载均衡,并使用Redis实现session共享;

如下拓扑图:

各版本如图所示

========================================

开启项目说明:

操作系统:win7_64

反向代理:Nginx_1.4.7

Tomcat:apache-tomcat-7.0.42 

复制三份:

apache-tomcat-7.0.42_A; 

apache-tomcat-7.0.42_B;

apache-tomcat-7.0.42_C

Redis:redis-64.3.0.503

JDK:1.8

重要:

Redis实现session共享时,需要的三个重要jar包:

tomcat-redis-session-manager1.2.jar

commons-pool2-2.2.jar

jedis-2.6.1.jar

步骤一:

安装Nginx:

我使用的Nginx为绿色版本,双击即可开启

(命令启动,重新加载等请参考:http://blog.csdn.net/qq_16216221/article/details/72597388)

修改 nginx.conf 配置文件,多个Tomcat服务器都是在这里配置:

upstream中的localhost前面不能加:http://,  location中proxy_pass里的:http://    不能省略

weight为访问权重,数值越高,访问的机会也越高。

以上Nginx配置只是简单配置,请根据自己的项目情况,做详细配置。

步骤二:

部署Tomcat服务器:

apache-tomcat-7.0.42_A; 

apache-tomcat-7.0.42_B;

apache-tomcat-7.0.42_C

1:apache-tomcat-7.0.42_A 部署:

server.xml注意三个地方,本服务器使用默认配置:


               cOnnectionTimeout="20000"

               redirectPort="8443" />

 

context.xml添加session共享的配置,去注释,全贴出来,方便观看和黏贴:

其中的password="123456"是redis的访问密码,很多帖子都没有提到,让我耽误很多时间,怎么设置redis的访问密码呢?请继续往下看。。。

当然,访问路径和端口号也需要配置正确。



 

    WEB-INF/web.xml

    

     

     

   
         host="localhost"   

         port="6379"

         password="123456"

         database="0"   

         maxInactiveInterval="60" />

2:apache-tomcat-7.0.42_B 部署:

server.xml修改三个地方的端口号:


               cOnnectionTimeout="20000"

               redirectPort="8443" />

 

context.xml添加session共享的配置同apache-tomcat-7.0.42_A服务器的配置:

3:apache-tomcat-7.0.42_C 部署:

server.xml修改三个地方的端口号:


               cOnnectionTimeout="20000"

               redirectPort="8443" />

 



context.xml添加session共享的配置同apache-tomcat-7.0.42_A服务器的配置:

步骤三:

部署测试web项目,编写首页测试代码:index.jsp

apache-tomcat-7.0.42_A服务器中web项目的代码:

相信大家都能明白代码中意思,第一次访问,不管是访问哪一个Tomcat,都会输出:new session:AAA111

刷新请求,理论上就应该输出:old session:AAA111,如果不是,那就是你的会话不是一个session。

为了有所区分,能够知道我们访问了哪一台服务器,我们添加标注信息。当然,保存和访问的session信息是一致的。



  <%

  HttpSession mySession = request.getSession(false);

 

  if(mySession.getAttribute("appname") == null){

      mySession = request.getSession(true);

      mySession.setAttribute("appname", "AAA111");

      out.println("new session:"+mySession.getAttribute("appname"));

  }else{

        out.println("old session:"+mySession.getAttribute("appname"));

  }

  %>

 


    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA标注是:A tomcat


 

apache-tomcat-7.0.42_B服务器中web项目的代码:



  <%

  HttpSession mySession = request.getSession(false);

 

  if(mySession.getAttribute("appname") == null){

      mySession = request.getSession(true);

      mySession.setAttribute("appname", "AAA111");

      out.println("new session:"+mySession.getAttribute("appname"));

  }else{

        out.println("old session:"+mySession.getAttribute("appname"));

  }

  %>

 


    BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB标注是:B tomcat


 

apache-tomcat-7.0.42_C服务器中web项目的代码:



  <%

  HttpSession mySession = request.getSession(false);

 

  if(mySession.getAttribute("appname") == null){

      mySession = request.getSession(true);

      mySession.setAttribute("appname", "AAA111");

      out.println("new session:"+mySession.getAttribute("appname"));

  }else{

        out.println("old session:"+mySession.getAttribute("appname"));

  }

  %>

 


    CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC标注是:C tomcat


 

将web项目打成war包,放到tomcat的webapps目录下即可。

步骤四:

redis安装和配置:

下载:redis-64.3.0.503版本的解压包,我的是绿色版,解压即可用,如下所示:

修改redis.windows.conf配置文件:

添加访问密码:行前不能有空格,否则报错。

# requirepass foobared

requirepass 123456

启动Redis即可,session的保存不需要我们处理。



ok,准备工作到此结束,下面就是见证奇迹的时刻:

启动Nginx,三个tomcat,redis

阿弥陀佛保佑。。。

打开浏览器:输入:http://localhost/TestDemo/;localhost 访问的是我们的Nginx,它会随机分配到具体的tomcat上  ;TestDemo为我的web项目名称。

第一次访问:Nginx为我分配到apache-tomcat-7.0.42_C服务器,并输出:new ...,说明之前没有这个session,创建后并输出。

再刷新几次浏览器,看效果:

本文来源https://blog.csdn.net/qq_16216221/article/details/72599016,如果不当请告知删除



推荐阅读
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 护墙_搭建LVS负载均衡NAT和DR模式
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了搭建LVS负载均衡NAT和DR模式相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
author-avatar
137381372_e57647
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有