Nginx + Tomcat负载均衡群集

article/2025/6/10 10:29:08

目录

一、案例环境

二、部署 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站点进行切换。

查看日志 

 


http://www.hkcw.cn/article/iMUpjnRciJ.shtml

相关文章

每日算法-250603

每日算法学习 今天学习了两道关于子数组和的 LeetCode 题目。 1524. 和为奇数的子数组数目 题目 思路 &#x1f4a1; 前缀和 核心思想&#xff1a;子数组 arr[i..j] 的和可以表示为两个前缀和之差&#xff0c;即 prefixSum[j1] - prefixSum[i] (假设 prefixSum[k] 表示 arr[0…

【T2I】InteractDiffusion: Interaction Control in Text-to-Image Diffusion Models

CODE: CVPR 2024 https://jiuntian.github.io/interactdiffusion Abstract 大规模文本到图像(t2i)扩散模型在基于文本描述生成连贯图像方面展示了令人难以置信的能力&#xff0c;从而在内容生成方面实现了广泛的应用。虽然最近的进步已经引入了对物体定位、姿态和图像轮廓等因…

今日行情明日机会——20250603

上证指数放量收阳线&#xff0c;阳包阴&#xff0c;量能超过5天均量&#xff0c;个股涨多跌少&#xff0c;行情有所回暖。 深证指数缩量收阳线&#xff0c;再次回打支撑位。 2025年6月3日涨停股主要行业方向分析&#xff08;基于图片数据&#xff09; 1. 医药&#xff08;政策…

Foundation Models for Generalist Geospatial Artificial Intelligence论文阅读

文章目录 摘要1. 引言2. 研究背景3. 预训练数据3.1 HLS-2数据3.2 高效数据采样3.3 预处理程序 4. 模型结构和预训练4.1 时空数据考虑4.2 预训练4.3 预训练结果 5. 下游任务5.1 任务微调数据集5.2 微调模型设置5.3 微调任务结果5.3.1 云插补任务5.3.2 洪水映射任务5.3.3 火灾痕迹…

C++实现汉诺塔游戏用户交互

目录 一、模型调整(一)模型定义(二)模型实现1.电脑自动完成部分2.SDL图形显示2.1拿起放下盘子的函数2.2左右移动手指的函数 二、处理用户输入&#xff0c;进行人机分流三、总结四、源码下载 上篇文章使用C语言实现汉诺塔游戏电脑自动完成的步骤&#xff0c;还没有实现用户交互&…

嵌入式学习 D32:系统编程--进程间通信IPC

引言--进程间通信管道的概念管道相关操作有名管道及其相关操作信号通信 一、引言--进程间通信 1&#xff09;因为空间是独立和隔绝的&#xff0c;数据发不过去&#xff0c;需要进程间的通信来交互&#xff0c;所以需要通信。 2&#xff09;linux进程间通信的常用几种方式&…

黑马Java面试笔记之 消息中间件篇(Kafka)

一. Kafka保证消息不丢失 Kafka如何保证消息不丢失 使用Kafka在消息的收发过程中都会出现消息丢失&#xff0c;Kafka分别给出了解决方案 生产者发送消息到Brocker丢失消息在Brocker中存储丢失消费者从Brocker接收消息丢失 1.1 生产者发送消息到Brocker丢失 设置异步发送 消息…

java的SPI机制

SPI&#xff08;Service Provider Interface&#xff09;是java提供的一种服务发现机制。允许你定义一个接口或抽象类&#xff0c;然后由第三方实现这个接口&#xff0c;并在运行时动态加载这些实现类 核心思想是&#xff1a;面向接口编程&#xff0c;解耦接口与实现 核心组件…

SpringCloud 分布式锁Redisson锁的重入性 高并发 获取锁

介绍 Redisson 的锁支持 可重入性&#xff0c;这意味着同一个线程在获取锁后&#xff0c;如果再次尝试获取该锁&#xff0c;它可以成功地获得锁&#xff0c;而不会被阻塞。 每次一个线程成功获取锁后&#xff0c;它的持有次数会增加。当线程再次获取该锁时&#xff0c;Rediss…

PyTorch--池化层(4)

池化层&#xff08;Pooling Layer&#xff09; 用于降低特征图的空间维度&#xff0c;减少计算量和参数数量&#xff0c;同时保留最重要的特征信息。 池化作用&#xff1a;比如1080p视频——720p 池化层的步长默认是卷积核的大小 ceil 允许有出界部分&#xff1b;floor 不允许…

【自动思考记忆系统】demo (Java版)

背景&#xff1a;看了《人工智能》中的一段文章&#xff0c;于是有了想法。想从另一种观点&#xff08;⭕️&#xff09;出发&#xff0c;尝试编码&#xff0c;告别传统程序员一段代码解决一个问题的方式。下图是文章原文和我的思考涂鸦✍️&#xff0c;于是想写一个自动思考记…

小白的进阶之路系列之十二----人工智能从初步到精通pytorch综合运用的讲解第五部分

在本笔记本中,我们将针对Fashion-MNIST数据集训练LeNet-5的变体。Fashion-MNIST是一组描绘各种服装的图像瓦片,有十个类别标签表明所描绘的服装类型。 # PyTorch model and training necessities import torch import torch.nn as nn import torch.nn.functional as F impor…

pytorch3d+pytorch1.10+MinkowskiEngine安装

1、配置pytorch1.10cuda11.0 pip install torch1.10.1cu111 torchvision0.11.2cu111 torchaudio0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html 2、配置 MinkowskiEngine库 不按下面步骤&#xff0c;出现错误 1、下载MinkowskiEngine0.5.4到本地 2、查看…

ORACLE 缺失 OracleDBConsoleorcl服务导致https://xxx:port/em 不能访问

这个原因是&#xff0c;操作过一下 ORCL的服务配置变更导致的。 再PATH中添加个环境变量&#xff0c;路径如下 管理员权限运行cmd 等待创建完成 大概3分钟 查看服务 点击第一个访问&#xff0c;下图登录后的截图

分布式流处理与消息传递——向量时钟 (Vector Clocks) 算法详解

Java 实现向量时钟 (Vector Clocks) 算法详解 一、向量时钟核心原理 #mermaid-svg-JcZ1GT0r1ZNSy6W7 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-JcZ1GT0r1ZNSy6W7 .error-icon{fill:#552222;}#mermaid-svg-JcZ…

深入浅出:Oracle 数据库 SQL 执行计划查看详解(1)——基础概念与查看方式

背景 在当今的软件开发领域&#xff0c;尽管主流开发模式往往倾向于采用单表模式&#xff0c;力图尽可能地减少表之间的连接操作&#xff0c;以期达到提高数据处理效率、简化应用逻辑等目的。然而&#xff0c;对于那些已经上线运行多年的运维老系统而言&#xff0c;它们内部往…

多模态大语言模型arxiv论文略读(104)

Talk Less, Interact Better: Evaluating In-context Conversational Adaptation in Multimodal LLMs ➡️ 论文标题&#xff1a;Talk Less, Interact Better: Evaluating In-context Conversational Adaptation in Multimodal LLMs ➡️ 论文作者&#xff1a;Yilun Hua, Yoav…

【Oracle】游标

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 游标基础概述1.1 游标的概念与作用1.2 游标的生命周期1.3 游标的分类 2. 显式游标2.1 显式游标的基本语法2.1.1 声明游标2.1.2 带参数的游标 2.2 游标的基本操作2.2.1 完整的游标操作示例 2.3 游标属性2.3.1…

Ethernet/IP转DeviceNet网关:驱动大型矿山自动化升级的核心纽带

在大型矿山自动化系统中&#xff0c;如何高效整合新老设备、打通数据孤岛、实现统一控制&#xff0c;是提升效率与安全的关键挑战。JH-EIP-DVN疆鸿智能EtherNet/IP转DeviceNet网关&#xff0c;正是解决这一难题的核心桥梁&#xff0c;为矿山各环节注入强劲连接力&#xff1a; …

Nginx + Tomcat 负载均衡、动静分离群集

一、 nginx 简介 Nginx 是一款轻量级的高性能 Web 服务器、反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器&#xff0c;在 BSD-like 协议下发行。其特点是占有内存少&#xff0c;并发能力强&#xff0c;在同类型的网页服务器中表现优异&#xff0c;常用…