Nginx + Tomcat负载均衡群集
目录
一、案例环境
二、部署 Tomcat(102/103)
1、准备环境
(1)关闭firewalld 防火墙
(2)安装JDK
2、安装配置 Tomcat
(1)Tomcat 的安装和配置
(2)移动并改名
(3)启动并查看监听
(4)打开浏览器测试
3、建立Java的Web站点
(1)建立目录
(2)在webapp1目录下建立一个index.jsp 的测试页面
(3)修改Tomcat 的server.xml 文件
(4)关闭Tomcat,再重新启动
(5)确认Web 站点
4、Tomcat 配置相关说明
(1)主要目录说明
(2)配置文件说明
三、配置Nginx,实现负载均衡、动静分离群集(101)
1、Nginx 服务器配置
(1)关闭防火墙
(2)安装相关软件包
(3)解压并安装Nginx
(4)配置nginx.conf
2、测试效果
一、案例环境
机 | IP | 操作系统 | 应用 |
Nginx服务器(101) | 192.168.10.101 | OpenEuler24 | nginx-1.26.3 |
Tomcat1服务器(102) | 192.168.10.102 | OpenEuler24 | apache-tomcat-9.0.8 |
Tomcat2服务器(103) | 192.168.10.103 | OpenEuler24 | apache-tomcat-9.0.8 |
二、部署 Tomcat(102/103)
1、准备环境
(1)关闭firewalld 防火墙
systemctl stop firewalld
setenforce 0
(2)安装JDK
dnf -y install java
2、安装配置 Tomcat
(1)Tomcat 的安装和配置
解压本文使用的安装包
tar zxvf apache-tomcat-9.0.8.tar.gz
(2)移动并改名
mv apache-tomcat-9.0.8 /usr/local/tomcat
(3)启动并查看监听
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
Tomcat 默认运行在8080 端口,运行netstat 命令查看8080 端口监听的信息。
[root@localhost bin]# netstat -anpt | grep java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1955/java
tcp6 0 0 :::8009 :::* LISTEN 1955/java
tcp6 0 0 :::8080 :::* LISTEN 1955/java
(4)打开浏览器测试
在浏览器访问http://192.168.10.102:8080和http://192.168.10.103:8080即可查看Tomcat的默认界面。
3、建立Java的Web站点
(1)建立目录
mkdir -p /web/webapp1
(2)在webapp1目录下建立一个index.jsp 的测试页面
102
vim /web/webapp1/index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head><title>JSP test1 page</title> </head><body><% out.println("动态页面 1,http://www.test1.com");%></body><body><div>动态页面的图片 1</div><br><img src="logo.png"></body>
</html>
103
vim /web/webapp1/index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head><title>JSP test2 page</title> </head><body><% out.println("动态页面 2,http://www.test2.com");%></body><body><div>动态页面的图片 2</div><br><img src="logo.png"></body>
</html>
(3)修改Tomcat 的server.xml 文件
定义一个虚拟主机,并将网站文件路径指向已经建立的/web/webapp1,在 host 段增加context 段。
vim /usr/local/tomcat/conf/server.xml <Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"><Context docBase="/web/webapp1" path="" /> #150,添加
(4)关闭Tomcat,再重新启动
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
(5)确认Web 站点
然后将准备好的logo.png图片放到/web/webapp1/目录下,访问192.168.10.102:8080和192.168.10.103:8080
4、Tomcat 配置相关说明
Tomcat 的主目录为/usr/local/tomcat/
(1)主要目录说明
- bin/:存放 Windows 或 Linux 平台上启动和关闭 Tomcat 的脚本文件。
- conf/:存放 Tomcat 服务器的各种全局配置文件,其中最重要的是 server.xml 和web.xml。
- lib/:存放 Tomcat 运行需要的库文件(JARS)。
- logs:存放 Tomcat 执行时的 LOG 文件。
- webapps:Tomcat 的主要 Web 发布目录(包括应用程序示例)。
- work:存放 JSP 编译后产生的 class 文件。
(2)配置文件说明
- catalina.policy:权限控制配置文件。
- catalina.properties:Tomcat 属性配置文件。
- context.xml:上下文配置文件。
- logging.properties:日志 log 相关配置文件。
- server.xml:主配置文件。
- tomcat-users.xml:manager-gui管理用户配置文件(Tomcat安装后提供一个manager-gui 的管理界面,通过配置该文件可以开启访问)
- web.xml:Tomcat 的 servlet、servlet-mapping、filter、MIME 等相关配置。
三、配置Nginx,实现负载均衡、动静分离群集(101)
通常情况下,一台 Tomcat 站点由于可能出现单点故障及无法应付过多客户复杂多样的 请求等问题,不能单独应用于生产环境下,所以需要一套更可靠的解决方案来完善 Web 站点 架构。
Nginx 是一款非常优秀的 http 服务器软件,它能够支持高达 50000 个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、CPU 等系统资源消耗非常低。 目 前很多大型网站都应用 Nginx 服务器作为后端网站程序的反向代理及负载均衡器,来提升整个站点的负载并发能力。
Nginx 是一个非常强大的静态 web 服务,Tomcat 处理动态请求效率不高,而一般网站大 多数的内容都是静态文件(如图片、html、css、js 等),经过 Nginx 前端的反向代理加速 和过滤,后端Tomcat 处理请求的压力便可大大减少,只需负责处理动态内容就可以了。在 性能与稳定性的权衡下,使用 Nginx+Tomcat 搭配便可让它们在各自擅长的领域大展拳脚。
1、Nginx 服务器配置
在 Nginx 服务器 192.168.10.101 上安装 Nginx,反向代理到两个 Tomcat 站点,并实现负载均衡。
(1)关闭防火墙
systemctl stop firewalld
setenforce 0
(2)安装相关软件包
dnf -y install gcc make pcre-devel zlib-devel openssl-devel perl-ExtUtils-MakeMaker
(3)解压并安装Nginx
useradd -M -s /sbin/nologin nginx
tar zxf nginx-1.26.3.tar.gz
cd nginx-1.26.3
./configuer --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-pcre
(4)配置nginx.conf
在 http{…}中加入以下代码,设定负载均衡的服务器列表,weight 参数表示权重,权重越高,被分配到的概率越大。
vim /usr/local/nginx/conf/nginx.conf#gzip on;upstream my_tomcat {server 192.168.10.102:8080 weight=1;server 192.168.10.103:8080 weight=2;}
把 Nginx 的默认站点通过 proxy_pass 方法代理到了设定好的 tomcat_server 负载均衡服务器组上。配置完整的 nginx.conf 文件内容如下。
vim /usr/local/nginx/conf/nginx.confhttp {
......#gzip on;upstream my_tomcat {server 192.168.10.102:8080 weight=1;server 192.168.10.103:8080 weight=2;}server {listen 80;server_name localhost;charset utf-8;#access_log logs/host.access.log main;location / {root html;index index.html index.htm;}location ~ .*\.jsp$ {proxy_set_header HOST $host;proxy_set_header Client-IP $remote_addr;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;proxy_pass http://my_tomcat;}location ~ .*\.(png|gif|jpeg|jpg)$ {root /usr/local/nginx/html/img;expires 30d;}
......}
......
}
下面再 Nginx 上准备静态图片
mkdir /usr/local/nginx/html/img
将图片放到img/目录下
cp /root/logo.jpg /usr/local/nginx/html/img/
测试Nginx 配置文件是否正确
[root@bogon html]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
启动Nginx 服务
systemctl start nginx
Nginx查看端口号及PID进程号
[root@bogon ~]# netstat -anpt | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1907/nginx: master
2、测试效果
多次访问192.168.10.101/index.jsp,会发现下图会以1:2的比例轮流出现,就说明负载均衡群集搭建成功,已经可以再两个Tomcat server站点进行切换。
查看日志
相关文章:

Nginx + Tomcat负载均衡群集
目录 一、案例环境 二、部署 Tomcat(102/103) 1、准备环境 (1)关闭firewalld 防火墙 (2)安装JDK 2、安装配置 Tomcat (1)Tomcat 的安装和配置 (2)移动…...

嵌入式开发之STM32学习笔记day22
STM32F103C8T6 FLASH闪存 1 FLASH简介 STM32F1系列微控制器的FLASH存储器是一种非易失性存储器,它在微控制器中扮演着至关重要的角色。以下是对STM32F1系列FLASH存储器及其相关编程方式的扩展说明: 【FLASH存储器的组成部分】 程序存储器:这…...

分词算法BBPE详解和Qwen的应用
一、TL;DR BPE有什么问题:依旧会遇到OOV问题,并且中文、日文这些大词汇表模型容易出现训练中未出现过的字符Byte-level BPE怎么解决:与BPE一样是高频字节进行合并,但BBPE是以UTF-8编码UTF-8编码字节序列而非字符序列B…...
关于ETL的BackgroundScheduler同步方案和misfire_grace_time
如果做ETL避免脏数据,那么不可以允许同一个job有并行允许的情况,也就是说max_instance参数始终设置成1。 这时候执行ETL任务,会有以下情况。 1 任务不超时。正常执行 2 任务超时。如果下一个时间点上一次任务还没有执行完,那么…...

多线程下使用缓存+锁Lock, 出现“锁失效” + “缓存未命中竞争”的缓存击穿情况,双重检查缓存解决问题
多线程情况下,想通过缓存同步锁的机制去避免多次重复处理逻辑,尤其是I/0操作,但是在实际的操作过程中发现多次访问的日志 2025-06-05 17:30:27.683 [ForkJoinPool.commonPool-worker-3] INFO Rule - [vagueNameMilvusReacll,285] - embeddin…...

Playwright 测试框架 - .NET
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】...

命令行以TLS/SSL显式加密方式访问FTP服务器
昨天留了一个小尾巴~~就是在命令行或者代码调用命令,以TLS/SSL显式加密方式,访问FTP服务器,上传和下载文件。 有小伙伴可能说ftp命令不可以吗?不可以哦~~ ftp 命令本身不支持显式加密。要实现 FTP 的显式加密,可以使…...
Mac 双系统
准备——Windows10 ISO文件下载 下载地址:https://msdn.itellyou.cn 操作系统 Win10-1903镜像 复制链接迅雷下载 第一步——查看系统磁盘剩余空间 打开“启动台”找到“其他”文件夹,打开“磁盘工具”(剩余空间要大于40GB) 第二…...

Linux配置yum 时间同步服务 关闭防火墙 关闭ESlinux
1、配置yum 1.1、Could not resolve host: mirrorlist.centos.org; 未知的错误 https://blog.csdn.net/fansfi/article/details/146369946?fromshareblogdetail&sharetypeblogdetail&sharerId146369946&sharereferPC&sharesourceRockandrollman&sharefr…...
SpringBoot 系列之集成 RabbitMQ 实现高效流量控制
系列博客专栏: JVM系列博客专栏SpringBoot系列博客 Spring Boot 2.2.1 集成 RabbitMQ 实现高效流量控制 在分布式系统中,消息队列是实现异步通信、解耦服务的重要组件。RabbitMQ 作为一款成熟的开源消息队列,广泛应用于各类项目中。本文将…...

LLaMA-Factory和python版本的兼容性问题解决
引言 笔者今天在电脑上安装下LLaMA-Factory做下本地的模型调优。 从github上拉取代码git clone https://github.com/hiyouga/LLaMA-Factory.git. pycharm建立工程,按照官网指导如下: LLaMA-Factory 安装 在安装 LLaMA-Factory 之前,请确保您安装了下列依赖: 运行以…...
掌握子网划分:优化IP分配与管理
子网划分是通过调整子网掩码,将单一IP网络划分为多个逻辑子网的过程,其核心原理是借用主机位作为子网位以优化地址分配和管理。具体方法与原理如下: 一、子网划分基本原理 核心目的: 减少IP浪费:避免大块地址闲置&…...
Linux中shell编程表达式和数组讲解
一、表达式 1.1 测试表达式 样式1: test 条件表达式 样式2: [ 条件表达式 ] 注意:以上两种方法的作用完全一样,后者为常用。但后者需要注意方括号[、]与条件表达式之间至少有一个空格。test跟 [] 的意思一样条件成立,状态返回值是0条件不成…...

每日算法-250605
每日算法 - 20240605 525. 连续数组 题目描述 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。 思路 前缀和 哈希表 解题过程 核心思想是将问题巧妙地转换为寻找和为特定值的子数组问题。 转换问题:我…...

分布式锁-Redisson实现
目录 本地锁的局限性 Redisson解决分布式锁问题 在分布式环境下,分布式锁可以保证在多个节点上的并发操作时数据的一致性和互斥性。分布式锁有多种实现方案,最常用的两种方案是:zookeeper和redis,本文介绍redis实现分布式锁方案…...
HTTP 请求协议简单介绍
目录 常见的 HTTP 响应头字段 Java 示例代码:发送 HTTP 请求并处理响应 代码解释: 运行结果: 文件名: 总结: HTTP(HyperText Transfer Protocol)是用于客户端与服务器之间通信的协议。它定…...

C++学习-入门到精通【14】标准库算法
C学习-入门到精通【14】标准库算法 目录 C学习-入门到精通【14】标准库算法一、对迭代器的最低要求迭代器无效 二、算法1.fill、fill_n、generate和generate_n2.equal、mismatch和lexicographical_compare3.remove、remove_if、remove_copy和remove_copy_if4.replace、replace_…...
银行用户评分规则 深度学习
思考模型的实际应用场景。用户的核心疑问在于:在银行真实的评级系统中,基于规则的评级和基于模型的预测评级哪个更有价值?ta担心自己写的代码只是学术练习而没有实际意义。 从用户提到的银行评级规则来看(AAAA到E的划分ÿ…...

HarmonyOS运动语音开发:如何让运动开始时的语音播报更温暖
##鸿蒙核心技术##运动开发##Core Speech Kit(基础语音服务)# 前言 在运动类应用中,语音播报功能不仅可以提升用户体验,还能让运动过程更加生动有趣。想象一下,当你准备开始运动时,一个温暖的声音提醒你“…...
# 从底层架构到应用实践:为何部分大模型在越狱攻击下失守?
从底层架构到应用实践:为何部分大模型在越狱攻击下失守? 引言 近期,我们对多个主流大语言模型(LLM)进行了安全性测试,使用了极具诱导性的越狱提示词,试图绕过其内容安全机制。测试结果显示&am…...

vscode使用系列之快速生成html模板
一.欢迎来到我的酒馆 vscode,yyds! 目录 一.欢迎来到我的酒馆二.vscode下载安装1.关于vscode你需要知道2.开始下载安装 三.vscode快速创建html模板 二.vscode下载安装 1.关于vscode你需要知道 Q:为什么使用vscode? A:使用vscode写…...
Thinkphp6软删除
方法一 从控制器层直接操作 删除 此操作不会直接删除数据 而是在delete_time字段更新删除时间 ->useSoftDelete(delete_time,get_datetime())->delete() 查询 这里的数据库字段需要设置为默认NULL 查询的时候仅查询未更新删除时间的数据 ->whereNull("dele…...

网页前端开发(基础进阶4--axios)
Ajax Ajax(异步的JavaScript和XML) 。 XML是可扩展标记语言,本质上是一种数据格式,可以用来存储复杂的数据结构。 可以通过Ajax给服务器发送请求,并获取服务器响应的数据。 Ajax采用异步交互:可以在不重新加载整个页面的情况下&am…...

软件安全:漏洞利用与渗透测试剖析、流程、方法、案例
在数字时代,软件已深度融入生活与工作的方方面面,从手机应用到企业核心系统,软件安全至关重要。而漏洞利用与渗透测试,作为软件安全领域中相互关联的两个关键环节,一个是黑客攻击的手段,一个是安全防护的方…...

Haproxy的基础配置
1、参考文档 官方文档:HAProxy version 2.2.22 - Configuration Manual 运维派配置手册:Haproxy-基础配置详解 - 运维派 Haproxy 的配置文件haproxy.cfg由两大部分组成,分别是global和proxies部分。 2、haproxy global 配置 global&…...

考研系列—操作系统:冲刺笔记(1-3章)
目录 第一章 计算机系统概述 1.基本概念 2.内核态和用户态 3.中断(外中断)、异常(内中断-与当前执行的) 4.系统调用 5.操作系统引导程序 2021年真题: 6.操作系统结构 大纲新增 (1)分层结构 (2)模块化 (3)外核 7.虚拟机 第二章 进程管理 1.画作业运行的顺序和甘…...
使用 Docker Compose 部署 Jenkins(LTS 版)持续集成环境
一、前言 Jenkins 是目前最流行的开源持续集成工具之一。本教程将手把手带你使用 Docker Compose 快速部署 Jenkins LTS(长期支持版本),同时保留数据持久化、Docker 命令转发等功能,适合用于生产或本地开发测试环境。 二、环境准…...

Java调用大模型API实战指南
文章目录 前言调用大模型的流程概述和基本原理获取 DeepSeek 的 API keyJava 实现调用大模型 API 的Demo进阶扩展建议 前言 随着大语言模型(如 OpenAI、DeepSeek、通义千问等)的发展,我们可以很方便地用 API 接口调用这些强大的智能助手。在…...
C#中的路由事件(Routed Events)
路由事件的基本概念 路由事件是WPF中特有的事件系统,它允许事件在可视化树中"路由"传递,具有以下特点: 事件路由方向: 冒泡(Tunneling):从事件源向根元素传递 隧道(Bubbling):从根元素向事件源…...
[蓝桥杯]通电
通电 题目描述 2015 年,全中国实现了户户通电。作为一名电力建设者,小明正在帮助一带一路上的国家通电。 这一次,小明要帮助 nn 个村庄通电,其中 1 号村庄正好可以建立一个发电站,所发的电足够所有村庄使用。 现在…...