Nginx 和 Tomcat 实现负载均衡
Nginx 和 tomcat 实现负载均衡
🏆荣誉认证:51CTO博客专家博主、TOP红人、明日之星;阿里云开发者社区专家博主、技术博主、星级博主。
💻微信公众号:微笑的段嘉许
📌本文由微笑的段嘉许原创!
🎉欢迎关注🔎点赞👍收藏⭐留言📝
📆CSDN首发时间:🌴2023年2月日25🌴
✉️坚持和努力一定能换来诗与远方!
🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!
⭐本文介绍⭐
在上一篇文章中已经介绍了Nginx服务器的安装配置,感兴趣的小伙伴可以点击连接阅读配置Nginx虚拟主机,本文主要介绍Tomcat及Nginx + Tomcat负载均衡群集。
📌导航小助手📌
文章目录
- Nginx 和 tomcat 实现负载均衡
- 📝理论讲解:
- Tomcat简介
- 应用场景
- Tomcat Server的组成部分说明
- 📖实验配置与实现:
- 一、Nginx 服务器开启路由转发功能,客户端和 tomcat 服务器配置 IP 地址设置正确
- 1、配置 Nginx 服务 IP 地址和路由转发功能
- 2、第一台 tomcat 服务器配置 IP 地址
- 3、第二台 tomcat 服务器配置 IP 地址
- 4、客户端配置 IP 地址和 DNS
- 二、安装 tomcat 服务器配置网站
- 1、安装第一台 tomcat 服务器
- 2、配置第一台 tomcat 服务器
- 3、安装第二台 tomcat 服务器
- 4、配置第二台 tomcat 服务器
- 三、安装 Nginx 代理和负载均衡功能配置 DNS 服务器域名解析,客户端使用域名 www.nlb.com 负载均衡访问网站
- 1、安装 Nginx 反向代理依赖软件和 DNS 服务
- 2、配置 Nginx 代理服务器
- 3、修改 Nginx 主配置配置支持负载均衡群集
- 4、配置 DNS 服务器
- 5、客户端访问验证
📝理论讲解:
Tomcat简介
名称由来:Tomcat最初是Sun的软件架构师詹姆斯 · 邓肯 · 戴维森开发的。后来他帮助将其变为开源项目,并由Sun贡献给APache软件基金会。由于大部分开源项目O’Reilly都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为Tomcat(公猫)。而O’Reilly出版的介绍Tomcat的书籍的封面也被设计成了一个公猫的形象。而Tomcat的Logo兼吉祥物也被设计成了一只公猫。
其实Tomcat最早在开始研发的时候并不叫这个名字,早期Tomcat项目的名字叫Cataline,所以当我们安装完Tomcat后会法相安装路径下面有很多和Cataline有光的目录和文件,而这些文件通常也是我们使用或配置Tomcat的重要文件。
应用场景
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。一般来说,Tomo cat虽然和Apache或者Nginx这些Web服务器一样,具有处理HTML页面的功能,然而由于其处理静态HTML的能力远不及Apache或者Nginx,所以Tomcat通常是作为一个Servlet和JSP容器,单独运行在后端。

Tomcat Server的组成部分说明
-
Server元素代表了整个Catalina的server容器
-
Service是这样一个集合:它由一个或多个Connector,以及一个Engine(负责处理所有Connector所获得的客户请求)组成。
-
Connector:一个Connector在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回给客户。
Tomcat有两个典型的Connector,一个直接侦听来自browser的http请求,一个侦听来自其他WebServer的请求。
Coyote Http/1.1 Conector在端口8080处侦听来自客户browse的http请求。
Coyote JK2 Connector在端口8009 处侦听来自其他WebServer(Apache)的servlet/jsp代理请求。
-
Engine:Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名。
当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给Host来处理。
Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给默认Host来处理。
-
Host:Host代表一个Virtual Host,即虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配。
每个虚拟主机下都可以部署(deploy)一个后者多个Web App,每个Web App对应一个Context,有一个Context path。
当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理,匹配的方法是"最长匹配",所以一个path==" "的Context将成为该Host的默认Context匹配
-
Context:一个Context对应一个Web Application,一个Web Application由一个或者多个Servlet组成。
📖实验配置与实现:
拓扑图:

推荐步骤:
-
Nginx 服务器开启路由转发功能,客户端和 tomcat 服务器配置 IP 地址设置正确
-
安装 tomcat 服务器配置网站
-
安装 Nginx 代理和负载均衡功能配置 DNS 服务器域名解析,客户端使用域名www.nlb.com 负载均衡访问站
实验步骤:
一、Nginx 服务器开启路由转发功能,客户端和 tomcat 服务器配置 IP 地址设置正确
1、配置 Nginx 服务 IP 地址和路由转发功能
1)Nginx 服务器生成网卡配置文件

2)配置内网网卡 IP 地址


3)配置外网网卡 IP 地址


4)重新启动服务查看 IP 地址

5)配置路由转发功能开启路由功能



2、第一台 tomcat 服务器配置 IP 地址
1)第一台 tomcat 服务器配置 IP 地址


2)重新启动网卡服务查看配置的网关

3、第二台 tomcat 服务器配置 IP 地址
1)修改网卡置文件


2)重启网卡服务查看配置的网关

4、客户端配置 IP 地址和 DNS
1)客户端配置 IP 地址和 DNS

2)查看配置的 IP 地址

二、安装 tomcat 服务器配置网站
1、安装第一台 tomcat 服务器
1)切换到程序光盘

2)挂载程序光盘到/mnt

3)解压 tomcat 移动 tomcat 安装位置

2、配置第一台 tomcat 服务器
1)创建网站服务器根目录设置网站主页 
2)修改 tomcat 主配置文件加载网站根目录


3)启动 tomcat 服务查看服务运行状态

3、安装第二台 tomcat 服务器
1)切换到程序光盘

2)挂载程序光盘到/mnt

3)解压 tomcat 移动 tomcat 安装位置

4、配置第二台 tomcat 服务器
1)创建网站服务器根目录设置网站主页 
2)修改 tomcat 主配置文件加载网站根目录

3)启动 tomcat 服务查看服务运行状态

三、安装 Nginx 代理和负载均衡功能配置 DNS 服务器域名解析,客户端使用域名 www.nlb.com 负载均衡访问网站
1、安装 Nginx 反向代理依赖软件和 DNS 服务
1)切换到系统光盘

2)挂载系统盘到/mnt 目录

3)删除系统自带 yum 源配置本地 yum 源

4)安装依赖程序 
5)创建管理 nginx 服务用户

2、配置 Nginx 代理服务器
1) 切换到程序光盘 
2)挂载程序光盘到/mnt 目录

3)配置 nginx

4)编译安装 Nginx

5)优化 Nginx 服务命令

3、修改 Nginx 主配置配置支持负载均衡群集
1)修改 Nginx 主配置文件

2)检查 Nginx 主配置文件是否错误

3)启动服务查看端口

4、配置 DNS 服务器
1)修改 DNS 服务器主配置文件检查是否错误



2)配置 DNS 服务于数据库文件



3)启动服务设置开机自动启动


5、客户端访问验证
1)客户端第一次访问网站服务器

2)客户端第二次访问网站服务器

🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

相关文章:
Nginx 和 Tomcat 实现负载均衡
Nginx 和 tomcat 实现负载均衡 🏆荣誉认证:51CTO博客专家博主、TOP红人、明日之星;阿里云开发者社区专家博主、技术博主、星级博主。 💻微信公众号:微笑的段嘉许 📌本文由微笑的段嘉许原创! &am…...
【万能排序之qsort、b_sort 、s_sort】
文章目录前言:star:qsort函数函数参数qsort函数的使用:star:模拟实现万冒泡排序函数参数模拟实现b_sort注意点:star:模拟实现万能选择排序函数参数模拟实现s_sort最后前言 我们所熟悉的冒泡排序,选择排序,插入排序,二分排序等都是基于给定的一…...
利用InceptionV3实现图像分类
最近在做一个机审的项目,初步希望实现图像的四分类,即:正常(neutral)、涉政(political)、涉黄(porn)、涉恐(terrorism)。有朋友给推荐了个github上…...
【Java】CAS锁
一、什么是CAS机制(compare and swap) 1.概述 CAS的全称为Compare-And-Swap,直译就是对比交换。是一条CPU的原子指令,其作用是让CPU先进行比较两个值是否相等,然后原子地更新某个位置的值。经过调查发现,…...
Linux服务器配置系统安全加固方法
1. SSH空闲超时时间建议为: 600-900 解决方案: 在【/etc/ssh/sshd_config】文件中设置【ClientAliveInterval】设置为600到900之间 vim /etc/ssh/sshd_config #将 ClientAliveInterval 参数值设置为 900 2. 修改检查SSH密码修改最小间隔 解决方案: 在【/etc/login.defs】文件…...
Codeforces Round #850 (Div. 2, based on VK Cup 2022 - Final Round)(A~E)
t宝酱紫喜欢出这种分类讨论的题?!A1. Non-alternating Deck (easy version)给出n张牌,按照题目给的顺序分给两人,问最后两人手中各有几张牌。思路:模拟。AC Code:#include <bits/stdc.h>typedef long…...
qt源码--信号槽
本篇主要从Qt信号槽的连接、断开、调用、对象释放等方面展开; 1.信号建立连接过程 connect有多个重载函数,主要是为了方便使用者,比较常用的有2种方式: a. QObject::connect(&timer, &QTimer::timeout, &loop, &am…...
RecycleView详解
listview缓存请看: listview优化和详解RecycleView 和 ListView对比:使用方法上ListView:继承重写 BaseAdapter,自定义 ViewHolder 与 converView优化。RecyclerView: 继承重写 RecyclerView.Adapter 与 RecyclerView.ViewHolder。设置 Layou…...
【算法】最短路算法
😀大家好,我是白晨,一个不是很能熬夜😫,但是也想日更的人✈。如果喜欢这篇文章,点个赞👍,关注一下👀白晨吧!你的支持就是我最大的动力!Ǵ…...
< Linux > 进程间通信
目录 1、进程间通信介绍 进程间通信的概念 进程间通信的本质 进程间通信的分类 2、管道 2.1、什么是管道 2.2、匿名管道 匿名管道的原理 pipe函数 匿名管道使用步骤 2.3、管道的读写规则 2.4、管道的特点 2.5、命名管道 命名管道的原理 使用命令创建命名管道 mkfifo创建命名管…...
学习 Python 之 Pygame 开发魂斗罗(二)
学习 Python 之 Pygame 开发魂斗罗(二)魂斗罗的需求开始编写魂斗罗1. 搭建主类框架2. 设置游戏运行遍历和创建窗口3. 获取窗口中的事件4. 创建角色5. 完成角色更新函数魂斗罗的需求 魂斗罗游戏中包含很多个物体,现在要对这些物体进行总结 类…...
户籍管理系统测试用例
目录 一、根据页面的不同分别设计测试用例 登录页面 用户信息列表 用户编辑页面 用户更新页面 二、根据目的不同分别设计测试用例 一、根据页面的不同分别设计测试用例 上图是针对一个网站的测试,按照页面的不同分别来设计对应的测试用例。 登录页面 用户信息列…...
(三)代表性物质点邻域的变形分析
本文主要内容如下:1. 伸长张量与Cauchy-Green 张量2. 线元长度的改变2.1. 初始/当前构型下的长度比2.2. 主长度比与 Lagrange/Euler 主方向2.3. 初始/当前构型下任意方向的长度比3. 线元夹角的改变4. 面元的改变5. 体元的改变1. 伸长张量与Cauchy-Green 张量 由于变…...
Stream操作流 练习
基础数据:Data AllArgsConstructor NoArgsConstructor public class User {private String name;private int age;private String sex;private String city;private Integer money; static List<User> users new ArrayList<>();public static void m…...
【模拟集成电路】宽摆幅压控振荡器(VCO)设计
鉴频鉴相器设计(Phase Frequency Detector,PFD)前言一、VCO工作原理二、VCO电路设计VCO原理图三、压控振荡器(VCO)测试VCO测试电路图瞬态测试(1)瞬态输出(2)局部放大图&a…...
《英雄编程体验课》第 13 课 | 双指针
文章目录 零、写在前面一、最长不重复子串1、初步分析2、朴素算法3、优化算法二、双指针1、算法定义2、算法描述3、条件1)单调性2)时效性三、双指针的应用1、前缀和问题2、哈希问题3、K 大数问题零、写在前面 该章节节选自 《夜深人静写算法》,主要讲解最基础的枚举算法 ——…...
DS期末复习卷(十)
一、选择题(24分) 1.下列程序段的时间复杂度为( A )。 i0,s0; while (s<n) {ssi;i;} (A) O(n^1/2) (B) O(n ^1/3) © O(n) (D) O(n ^2) 12…xn xn^1/2 2.设某链表中最常用的…...
QT+OpenGL模板测试和混合
QTOpenGL模板测试和混合 本篇完整工程见gitee:QtOpenGL 对应点的tag,由turbolove提供技术支持,您可以关注博主或者私信博主 模板测试 当片段着色器处理完一个片段之后,模板测试会开始执行。和深度测试一样,它可能会丢弃片段&am…...
《英雄编程体验课》第 11 课 | 前缀和
文章目录 零、写在前面一、概念定义1、部分和2、朴素做法3、前缀和4、前缀和的边界值5、边界处理6、再看部分和二、题目描述1、定义2、求解三、算法详解四、源码剖析五、推荐专栏六、习题练习零、写在前面 该章节节选自 《算法零基础100讲》,主要讲解最基础的算法 —— 前缀和…...
Java学习--多线程2
2.线程同步 2.1卖票【应用】 案例需求 某电影院目前正在上映国产大片,共有100张票,而它有3个窗口卖票,请设计一个程序模拟该电影院卖票 实现步骤 定义一个类SellTicket实现Runnable接口,里面定义一个成员变量:privat…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
