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站点进行切换。

查看日志 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/86027.shtml

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

相关文章

三、元器件的选型

前言&#xff1a;我们确立了题目的功能后&#xff0c;就可以开始元器件的选型&#xff0c;元器件的选型关乎到我们后面代码编写的一个难易。 一、主控的选择 主控的选择很大程度上决定我们后续使用的代码编译器&#xff0c;比如ESP32使用的是VScode&#xff0c;或者Arduino&a…

API是什么意思?如何实现开放API?

目录 一、API 是什么 &#xff08;一&#xff09;API 的定义 &#xff08;二&#xff09;API 的作用 二、API 的类型 &#xff08;一&#xff09;Web API 1. RESTful API 2. SOAP API &#xff08;二&#xff09;操作系统 API &#xff08;三&#xff09;数据库 API …

AI生成的基于html+marked.js实现的Markdown转html工具,离线使用,可实时预览 [

有一个markdown格式的文档&#xff0c;手头只有notepad的MarkdownPanel插件可以预览&#xff0c;但是只能预览&#xff0c;不能直接转换为html文件下载&#xff0c;直接复制预览的内效果又不太好&#xff0c;度娘也能找到很多工具&#xff0c;但是都需要在线使用。所以考虑用AI…

Java-前置基础

前言 基础基础 package org.example;public class Main {int a 10;String s1 "你好";public static void main(String[] args) {System.out.println(a);System.out.println(s1);} } 发现报错位置 public class Main {static int a 10;static String s1 "你好…

python字符串方法

1. capitalize&#xff1a; 是第一个字符大写&#xff0c;其余小写 2. encode&#xff1a; 将字符串转换为字节串&#xff08;bytes&#xff09;&#xff0c;默认使用 UTF-8 编码。 3. format&#xff1a; format是 Python 中字符串对象的内置方法&#xff0c;语法为S.form…

Java详解LeetCode 热题 100(24):LeetCode 234. 回文链表(Palindrome Linked List)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 回文链表的特征2.2 核心难点 3. 解法一&#xff1a;转换为数组法3.1 算法思路3.2 详细图解3.3 Java代码实现3.4 详细执行过程演示3.5 执行结果示例3.6 使用数组而非ArrayList的优化版本3.7 复杂度分析3.8 优缺点分析 4. 解…

平板电脑如何通过EN 18031认证

平板电脑若需通过 EN 18031 认证&#xff08;欧盟无线电设备网络安全标准&#xff0c;属于 CE RED 指令的一部分&#xff09;&#xff0c;需满足其针对互联网连接设备和数据处理设备的安全要求。以下是详细的认证流程、技术要求和操作指南&#xff1a; 一、认证背景与法规基础…

KaiwuDB在边缘计算领域的应用与优势

KaiwuDB 在边缘计算场景中主要应用于 工业物联网&#xff08;IIoT&#xff09;、智能电网、车联网 等领域&#xff0c;通过其分布式多模架构和轻量化设计&#xff0c;在边缘侧承担 数据实时处理、本地存储与协同分析 的核心作用。以下是具体案例和功能解析&#xff1a; 1. 典型…

MP4文件声音与视频分离

最近学习PR剪辑 要添加视频文件和音频文件 但是直接给MP4文件 得到的是一个整体 不管怎么切分 都是无法得到单独的整体 这就需要将视频文件和音频文件分离 我推荐使用ffmpeg工具进行分离 夸克链接&#xff1a;https://pan.quark.cn/s/8dbc3bfbc5d4 百度链接: https://pan.ba…

山洪径流过程及洪水淹没数值模拟

气候变化背景下&#xff0c;极端天气导致的洪水事件将更加频发。快速城市化对流域下垫面的改变&#xff0c;及人类活动向洪泛区的扩张。二者共同使得全世界多数人类活动高度聚集区的洪水风险增加。洪水淹没危险性&#xff08;各种年遇型洪水淹没&#xff09;是洪水损失评估、风…

Rust 通用代码生成器:莲花,红莲尝鲜版三十六,图片初始化功能介绍

Rust 通用代码生成器&#xff1a;莲花&#xff0c;红莲尝鲜版三十六&#xff0c;图片初始化功能介绍 Rust 通用代码生成器莲花&#xff0c;红莲尝鲜版三十六。支持全线支持图片预览&#xff0c;可以直接输出带图片的哑数据模式快速原型。哑数据模式和枚举支持图片。哑数据和枚…

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…

Acrobat DC v25.001 最新专业版已破,像word一样编辑PDF!

在数字化时代&#xff0c;PDF文件以其稳定性和通用性成为了文档交流和存储的热门选择。无论是阅读、编辑、转换还是转曲&#xff0c;大家对PDF文件的操作需求日益增加。因此&#xff0c;一款出色的PDF处理软件不仅要满足多样化的需求&#xff0c;还要通过简洁的界面和强大的功能…

CSS中justify-content: space-between首尾贴边中间等距(两端元素紧贴左右边缘,中间元素等距均匀分布)

justify-content: space-between; 是 CSS Flexbox 布局中的一个属性值&#xff0c;主要作用是在弹性容器的主轴方向上均匀分布子元素&#xff0c;具有以下核心特性&#xff1a; 作用效果&#xff1a; 首尾贴边 第一个子元素紧贴容器起始端 最后一个子元素紧贴容器结束端 中…

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…

全球知名具身智能/AI机器人实验室介绍之AI FACTORY基于慕尼黑工业大学

全球知名具身智能/AI机器人实验室介绍之AI FACTORY基于慕尼黑工业大学 TUM AI FACTORY&#xff0c;即KI.FABRIK&#xff0c;是德国慕尼黑工业大学&#xff08;TUM&#xff09;在巴伐利亚州推出的一个旗舰项目&#xff0c;旨在打造未来工厂&#xff0c;将传统工厂转变为由人工智…

DRV8833 电机控制芯片

引脚分配如图&#xff1a; 要让芯片运行需要将STBY拉高 IN1 IN2 分两组 对应 AO BO&#xff0c;同时拉高电平可以进行刹车&#xff08;慢速衰减。 芯片本身引脚定义&#xff1a; 控制真值表&#xff1a;

如何通过git命令查看项目连接的仓库地址?

要通过 Git 命令查看项目连接的仓库地址&#xff0c;您可以使用以下几种方法&#xff1a; 1. 查看所有远程仓库地址 使用 git remote -v 命令&#xff0c;它会显示项目中配置的所有远程仓库及其对应的 URL&#xff1a; git remote -v输出示例&#xff1a; origin https://…

区块链技术相关

区块链技术参考&#xff1a;区块链 多领域 一、区块链技术演进与2025年核心突破 2025年&#xff0c;区块链技术已从单一分布式账本演变为融合人工智能、物联网、隐私计算的多维技术栈。零知识证明&#xff08;ZKP&#xff09;在性能优化上取得关键进展&#xff0c;以太坊等主流…

C语言字符数组输入输出方法大全(附带实例)

在 C语言中&#xff0c;字符数组是一种特殊的数组&#xff0c;用于存储和处理字符串。理解字符数组的输入和输出操作对于初学者来说至关重要&#xff0c;因为这是处理文本数据的基础。 字符数组的定义与初始化 在讨论输入输出之前&#xff0c;我们先来回顾一下字符数组的定义…