Nginx + Tomcat负载均衡群集

news2025/7/28 10:13:42

目录

一、案例环境

二、部署 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.conf

http {
......

    #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.coloradmin.cn/o/2403264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式开发之STM32学习笔记day22

STM32F103C8T6 FLASH闪存 1 FLASH简介 STM32F1系列微控制器的FLASH存储器是一种非易失性存储器&#xff0c;它在微控制器中扮演着至关重要的角色。以下是对STM32F1系列FLASH存储器及其相关编程方式的扩展说明&#xff1a; 【FLASH存储器的组成部分】 程序存储器&#xff1a;这…

分词算法BBPE详解和Qwen的应用

一、TL&#xff1b;DR BPE有什么问题&#xff1a;依旧会遇到OOV问题&#xff0c;并且中文、日文这些大词汇表模型容易出现训练中未出现过的字符Byte-level BPE怎么解决&#xff1a;与BPE一样是高频字节进行合并&#xff0c;但BBPE是以UTF-8编码UTF-8编码字节序列而非字符序列B…

多线程下使用缓存+锁Lock, 出现“锁失效” + “缓存未命中竞争”的缓存击穿情况,双重检查缓存解决问题

多线程情况下&#xff0c;想通过缓存同步锁的机制去避免多次重复处理逻辑&#xff0c;尤其是I/0操作&#xff0c;但是在实际的操作过程中发现多次访问的日志 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服务器

昨天留了一个小尾巴~~就是在命令行或者代码调用命令&#xff0c;以TLS/SSL显式加密方式&#xff0c;访问FTP服务器&#xff0c;上传和下载文件。 有小伙伴可能说ftp命令不可以吗&#xff1f;不可以哦~~ ftp 命令本身不支持显式加密。要实现 FTP 的显式加密&#xff0c;可以使…

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…

LLaMA-Factory和python版本的兼容性问题解决

引言 笔者今天在电脑上安装下LLaMA-Factory做下本地的模型调优。 从github上拉取代码git clone https://github.com/hiyouga/LLaMA-Factory.git. pycharm建立工程,按照官网指导如下: LLaMA-Factory 安装 在安装 LLaMA-Factory 之前&#xff0c;请确保您安装了下列依赖: 运行以…

每日算法-250605

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

分布式锁-Redisson实现

目录 本地锁的局限性 Redisson解决分布式锁问题 在分布式环境下&#xff0c;分布式锁可以保证在多个节点上的并发操作时数据的一致性和互斥性。分布式锁有多种实现方案&#xff0c;最常用的两种方案是&#xff1a;zookeeper和redis&#xff0c;本文介绍redis实现分布式锁方案…

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_…

HarmonyOS运动语音开发:如何让运动开始时的语音播报更温暖

##鸿蒙核心技术##运动开发##Core Speech Kit&#xff08;基础语音服务&#xff09;# 前言 在运动类应用中&#xff0c;语音播报功能不仅可以提升用户体验&#xff0c;还能让运动过程更加生动有趣。想象一下&#xff0c;当你准备开始运动时&#xff0c;一个温暖的声音提醒你“…

vscode使用系列之快速生成html模板

一.欢迎来到我的酒馆 vscode&#xff0c;yyds! 目录 一.欢迎来到我的酒馆二.vscode下载安装1.关于vscode你需要知道2.开始下载安装 三.vscode快速创建html模板 二.vscode下载安装 1.关于vscode你需要知道 Q&#xff1a;为什么使用vscode? A&#xff1a;使用vscode写…

网页前端开发(基础进阶4--axios)

Ajax Ajax(异步的JavaScript和XML) 。 XML是可扩展标记语言&#xff0c;本质上是一种数据格式&#xff0c;可以用来存储复杂的数据结构。 可以通过Ajax给服务器发送请求&#xff0c;并获取服务器响应的数据。 Ajax采用异步交互&#xff1a;可以在不重新加载整个页面的情况下&am…

软件安全:漏洞利用与渗透测试剖析、流程、方法、案例

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

Haproxy的基础配置

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

考研系列—操作系统:冲刺笔记(1-3章)

目录 第一章 计算机系统概述 1.基本概念 2.内核态和用户态 3.中断(外中断)、异常(内中断-与当前执行的) 4.系统调用 5.操作系统引导程序 2021年真题: 6.操作系统结构 大纲新增 (1)分层结构 (2)模块化 (3)外核 7.虚拟机 第二章 进程管理 1.画作业运行的顺序和甘…

Java调用大模型API实战指南

文章目录 前言调用大模型的流程概述和基本原理获取 DeepSeek 的 API keyJava 实现调用大模型 API 的Demo进阶扩展建议 前言 随着大语言模型&#xff08;如 OpenAI、DeepSeek、通义千问等&#xff09;的发展&#xff0c;我们可以很方便地用 API 接口调用这些强大的智能助手。在…

单片机0-10V电压输出电路分享

一、原理图 二、芯片介绍 GP8101是一个PWM信号转模拟信号转换器&#xff0c;相当于一个PWM信号输入&#xff0c;模拟信号输出的DAC。此 芯片可以将占空比为0%到100%的PWM信号线性转换成0-5V或者0-10V的模拟电压&#xff0c;并且输出电压 精度小于1%。GP8101M可以处理高频调制的…

大模型模型部署和暴露接口

创建环境 激活案件 安装相关依赖 conda create -n fastApi python3.10 conda activate fastApi conda install -c conda-forge fastapi uvicorn transformers pytorch pip install safetensors sentencepiece protobuf 新建文件夹 mkdir App cd App touch main.py 复制代码…

2025服装收银系统推荐:智能管理助力服装商家高效经营

在服装批发零售行业&#xff0c;一套高效的收银系统不仅能简化日常经营流程&#xff0c;还能通过数据分析帮助商家优化库存、提升销售。随着AI技术的普及&#xff0c;现代收银系统已不再局限于简单的记账功能&#xff0c;而是能提供智能选品、库存预警、精准营销等进阶服务。 …