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

nginx+tomcat+redis集群部署环境的搭建(附环境包)

原文地址:https:blog.csdn.netbdqx_007articledetails819087581.原理介绍随着网站访问量的日益增大,传统的单一web应

1.原理介绍
随着网站访问量的日益增大,传统的单一web 应用实例部署方式,已完全无法满足高并发的需求,集群化部署势在必行。

集群部署即一个应用多实例部署,通过负载均衡将客户端高并发求情分散到集群部署的多个实例中去,实例处理完客户端请求,将结果返回个客户端;
集群部署的服务器对外提供统一访问接口,后端的部署对客户端来说是透明的。随之访问量的不断增大可灵活的增加实例的部署数量;

集群部署存在的问题:
session 共享问题,在单实例tomcat部署中,所有客户端访问的session由tomcat统一保存;但在多实例集群部署的环境中,各tomcat节点的保存的session是不能互相访问的,这会导致客户端在访问集群中不同节点的时候重复认证。

解决方案:

通过redis或memcache 将各tomcat实例中的session保存到公共区域。如图所示

 

 

本文主要介绍如果通过nginx+tomcat+redis实现tomcat集群化部署;

2.部署方案
操作系统:win10

tomcatA + tomcatB+ tomcatC 部署三个tomcat实例

nginx1.4.7 做负载均衡和反向代理

redis3.2 实现三个tomcat实例间的session共享

为了方便大家部署练习,文章中的部署环境我已经打包,下载地址:

https://download.csdn.net/download/bdqx_007/10618070

https://pan.baidu.com/s/1L1GpdYRsOMgEMxTmxMmxqg

3.安装配置
3.1 nginx的配置
版本:nginx-1.4.7

编辑 nginx 安装目录/conf/nginx.conf 配置文件,修改配置文件如下:

upstream local_tomcat{
        server localhost:8080 weight=10;   #tomcatA ip port  
        server localhost:8180 weight=1;    #tomcatB ip port  
        server localhost:8280 weight=1;    #tomcatC ip port  
    }
    server {
        listen       8888; 
        server_name  localhost;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location / {
            proxy_pass http://local_tomcat;
        }

#upstream local_tomat 为新增部分,分别对应三个tomcat实例的IP及端口,由于是本机部署所以ip部分配成了localhost,实际部署中将localhost 修改为具体IP地址

weight 默认为1.weight越大,负载的权重就越大。

proxy_pass属性表示代理路径,表示nginx可以将请求转发到该链接

nginx 不能正常启动解决方法:

a.安装目录不能有中文路径;

b.80端口被占用,修改配置文件为其他端口即可,我的80端口被占用了修改为8888

3.2 tomcat的安装配置
版本tomcat7

第一步:修改tomcat目录/conf/context.xml,修改配置如下:

WEB-INF/web.xml
  
      
      
         host="localhost"   
         port="6379"
         password="123456"
         database="0"   
         maxInactiveInterval="60" />

该配置的作用是将tomcat的session对象放到redis里面,host是安装redis服务器的ip,port是redis的端口,database是使用redis的哪个数据库。

第二步:修改tomcat目录/conf/server.xml

        
          namePrefix="HTTP-8088-exec-"    
          prestartminSpareThreads="true"  
          maxThreads="5000"               
          maxQueueSize="100"             
          minSpareThreads="50"            
          maxIdleTime="10000"            
    />
    
               connectionTimeout="5000"
               executor="tomcatThreadPool"
               proxyPort="443"
               redirectPort="443"
               URIEncoding="UTF-8" />

此处仅需修改tomcatA 监听端口为8080即可,线程池的配置及tomcat调优可参考我的另一篇文章

第三步: 将tomcat需要的redis jar包拷贝到 tomcat安装目录/lib  目录下:

本例使用的jar包如下三个,比较难找,大家不想费劲找的话,可以在我提供的链接中查找;

jedis-2.6.1.jar

commons-pool2-2.2.jar

tomcat-redis-session-manager1.2.jar

第四步:复制tomcatA目录,修改目录名为tomcatB 和tomcatC,修改tomcatB的监听端口为8180,tomcatC的监听端口为8280

至此tomcat配置完毕

3.3 redis的安装配置
版本:redis3.2

这个没什么特殊的,安装方法如下:

https://blog.csdn.net/gyshun/article/details/79297107

4 测试
依次启动tomcatA tomcatB tomatC  redis 及nginx 

编写测试用例session.jsp如下,将session.jsp 复制三份,分别放到三个tomcat实例的 \webapps\ROOT\ 目录下:

 

<%@ page language="java" cOntentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>







    
session id=<%=session.getId()%>
tomcat B

访问nginx服务器localhost/8888/session.jsp,刷新网页,可以看到服务器名称发生变化,而sessionId不变

说明配置成功;

 

 

 

 

 

 

至此nginx+tomcat+redis 集群化部署配置完毕!

为了方便大家部署练习,文章中的部署环境我已经打包,下载地址:

https://download.csdn.net/download/bdqx_007/10618070

https://pan.baidu.com/s/1L1GpdYRsOMgEMxTmxMmxqg

 


推荐阅读
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用
    深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用 ... [详细]
  • Node.js 教程第五讲:深入解析 EventEmitter(事件监听与发射机制)
    本文将深入探讨 Node.js 中的 EventEmitter 模块,详细介绍其在事件监听与发射机制中的应用。内容涵盖事件驱动的基本概念、如何在 Node.js 中注册和触发自定义事件,以及 EventEmitter 的核心 API 和使用方法。通过本教程,读者将能够全面理解并熟练运用 EventEmitter 进行高效的事件处理。 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • Go语言实现Redis客户端与服务器的交互机制深入解析
    在前文对Godis v1.0版本的基础功能进行了详细介绍后,本文将重点探讨如何实现客户端与服务器之间的交互机制。通过具体代码实现,使客户端与服务器能够顺利通信,赋予项目实际运行的能力。本文将详细解析Go语言在实现这一过程中的关键技术和实现细节,帮助读者深入了解Redis客户端与服务器的交互原理。 ... [详细]
  • 深入解析零拷贝技术(Zerocopy)及其应用优势
    零拷贝技术(Zero-copy)是Netty框架中的一个关键特性,其核心在于减少数据在操作系统内核与用户空间之间的传输次数。通过避免不必要的内存复制操作,零拷贝显著提高了数据传输的效率和性能。本文将深入探讨零拷贝的工作原理及其在实际应用中的优势,包括降低CPU负载、减少内存带宽消耗以及提高系统吞吐量等方面。 ... [详细]
  • NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ... [详细]
  • 开发笔记:校园商铺系统中店铺注册功能模块的Controller层优化与重构
    开发笔记:校园商铺系统中店铺注册功能模块的Controller层优化与重构 ... [详细]
  • 本文介绍了在 Android 平台上的图片上传工具类优化方案,重点讨论了如何通过设置 `MultipartEntity` 来实现图片的高效上传。具体实现中,通过自定义 `UserUploadServiceImpl` 类,详细展示了如何构建和发送包含图片数据的 HTTP 请求。此外,还探讨了如何处理上传过程中的常见问题,如网络异常和文件格式验证,以确保上传的稳定性和可靠性。 ... [详细]
  • Spring 中获取 Request 的多种方式及其线程安全性的深入解析
    本文深入探讨了在Spring MVC框架下获取HTTP请求对象的多种方法,详细分析了每种方法的实现原理及其线程安全性,为开发者提供了全面的技术参考。 ... [详细]
  • 一键将应用部署至远程服务器,体验超乎想象的便捷与高效
    该插件作为IDEA的内置功能,用户可以直接启用,无需额外安装。通过简单的配置,即可实现应用的一键部署至远程服务器,极大地提升了开发效率和便捷性。插件支持镜像管理和容器管理,允许用户与容器进行交互,并且兼容Docker Compose,适用于复杂的多容器应用部署。总结部分详细介绍了插件的使用方法和优势,附带的参考资料和项目源码地址为用户提供更多学习和实践资源。 ... [详细]
  • 本文深入探讨了IO复用技术的原理与实现,重点分析了其在解决C10K问题中的关键作用。IO复用技术允许单个进程同时管理多个IO对象,如文件、套接字和管道等,通过系统调用如`select`、`poll`和`epoll`,高效地处理大量并发连接。文章详细介绍了这些技术的工作机制,并结合实际案例,展示了它们在高并发场景下的应用效果。 ... [详细]
  • 微软发布紧急安全更新,所有Windows 10版本均面临影响!
    微软于周五紧急发布了两项安全更新,旨在解决Windows 10所有版本中Windows Codecs库和Visual Studio Code应用存在的安全隐患。此次更新是继本周初发布的月度例行安全补丁之外的额外措施,凸显了这些问题的紧迫性和重要性。这些漏洞可能被攻击者利用,导致系统权限提升或远程代码执行等严重后果。建议用户尽快安装更新,以确保系统的安全性。 ... [详细]
author-avatar
mobiledu2502859097
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有