Tomcat集群与Nginx负载均衡:实训项目改进,Tomcat+Nginx实现负载均衡

本文介绍了Tomcat集群的优势,包括性能提升和高可用性,并详细阐述了如何通过Nginx进行负载均衡,解决Session共享问题。文中提到在实训项目中遇到的Session丢失和服务器定时任务并发冲突,提出使用Redis作为Session服务器以实现分布式锁,防止数据错乱。同时,还讲解了Windows下单机部署多应用的步骤,以及Nginx与Tomcat搭建集群的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tomcat集群入门

一、Tomcat集群的优点
  • 提高服务的性能,并发能力,以及高可用性
  • 提高项目架构的横向扩展能力

二、Tomcat集群实现、架构转换图、问题、解决方法
2.1 通过Nginx负载均衡进行请求转发
2.2 实训项目初步架构图

在这里插入图片描述

2.3 实训项目Tomcat集群架构图

在这里插入图片描述

2.4 Session的问题

Session登录信息存储即读取的问题,Session没有共享,例如在Tomcat1中保留了登录信息Session,下订单的时候负载均衡到Tomcat2中,则电商平台会提示请登录的情况

2.5 服务器定时任务并发的问题

例如在电商平台下订单的时候,如果长期没有付款会自动关闭,并把库存释放,假设设置了1分钟定时器后,每1分钟后鉴定这1分钟需要关闭的订单,那么多台Tomcat都会启动,它们去读取SQL,然后判断订单,容易导致数据错乱

2.6 解决Session登录问题

可以采用nginx ip hash policy,可以不改变现有技术架构,直接实现横向扩展,但在实际中不会常用,有因为会导致服务器负载不平均,完全依赖ip hash,并且在客户IP变化的环境下无法服务

2.7 针对以上问题,实训项目Tomcat集训架构图修改如下

多台tomcat请求session的时候,都会请求到redis session server中,例如user1无论负载到哪台Tomcat中,,都会将session信息存储到redis session server中,利用分布式redis还可以实现分布式锁,来解决多台Tomcat一起同时启动定点任务的问题,如果不实现分布式锁,则会造成CPU资源浪费,因为只需要一台Tomcat启动定时问题即可

在这里插入图片描述

三、Windows下Tomcat单机部署多应用
3.1 添加新增的Tomcat相关环境变量

在这里插入图片描述

3.2 修改catalina.bat和startup.bat配置文件

第一个tomcat不变,打开第二个tomcat目录bin下catalina.bat与startup.bat,将文件里面内的CATALINA_BASE替换成CATALINA_2_BASE,将文件里面内的CATALINA_HOME替换成CATALINA_2_HOME

3.3 修改serverxml
  • Serverport节点端口号修改

在这里插入图片描述

  • Connector port节点端口修改

在这里插入图片描述

3.4 启动tomcat

CMD分别进入两个Tomcat的bin目录,启动Tomcat,即进入${tomcat}/bin/,然后执行startup.bat

在这里插入图片描述

访问http://localhost:8080 与http://localhost:9080,可以打开tomcat部署的webapps的ROOT项目首页

在这里插入图片描述

四、Nginx与Tomcat搭建集群
4.1 修改系统host

C:\Windows\System32\drivers\etc\hosts,加入127.0.0.1 www.imooc.com,打开cmd窗口,用ping命令进行验证

在这里插入图片描述在这里插入图片描述

4.2 启动Nginx后,在浏览器输入www.imooc.com,访问到nginx首页,增加nginx配置文件,重启nginx

在这里插入图片描述

4.3 访问www.ioomc.com就会负载在tomcat1与tomcat2中

在这里插入图片描述

链接:Nginx学习笔记:负载均衡配置、常用策略等基础知识,结合实训项目搭建图片服务器

目的:搭建高可用、高性能的jsp集群 二、初始化系统 #init system 系统环境: CentOS 5.5(定制安装) 组件: Base Development Libraries Development Tools Editors Text-based Internet ./init_system.sh #此脚本参见http://kerry.blog.51cto.com/172631/555535 三、LVS+keeplived #关于LVS+keeplived的配置请参考我的另一篇博文《CentOS5.5环境下布署LVS+keepalived 》http://kerry.blog.51cto.com/172631/401253 四、nginxtomcat整合 #config web_1、web_2 #download software cd /opt wget http://labs.renren.com/apache-mirror/tomcat/tomcat-6/v6.0.32/bin/apache-tomcat-6.0.32.tar.gz wget http://download.oracle.com/otn-pub/java/jdk/6u25-b06/jdk-6u25-linux-i586.bin wget http://nginx.org/download/nginx-1.0.0.tar.gz wget http://ftp.exim.llorien.org/pcre/pcre-8.12.tar.gz wget http://apache.etoak.com//tomcat/tomcat-connectors/native/1.1.20/source/tomcat-native-1.1.20-src.tar.gz wget http://archive.apache.org/dist/apr/apr-1.4.2.tar.gz wget http://archive.apache.org/dist/apr/apr-util-1.3.9.tar.gz #================================ 1、安装tomcat、JDK ================================= mv apache-tomcat-6.0.32.tar.gz jdk-6u25-linux-i586.bin /usr/local/ tar -zxvf apache-tomcat-6.0.32.tar.gz mv apache-tomcat-6.0.32 tomcat chmod +x jdk-6u25-linux-i586.bin ./jdk-6u25-linux-i586.bin #apr tomcat-native 提供更好的伸缩性、性能集成到本地服务器技术,如果没有apr技术,启动tomcat 时出现如下提示 #INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/local/jdk1.6.0_25/jre/lib/i386/client:/usr/local/jdk1.6.0_25/jre/lib/i386:/usr/local/jdk1.6.0_25/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib rpm -e --nodeps apr-1.2.7-11.el5_3.1 rpm -e --nodeps apr-1.2.7-11.el5_3.1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值