如何实现Nginx+Tomcat反向代理与负载均衡

news2024/12/23 8:35:46

目录

一、正向代理与反向代理

正向代理

反向代理

二、负载均衡

什么是负载均衡

代码仓库定义

分流策略

权重

least_conn(最少连接)

ip_hash(负载均衡模式)

fair(第三方负载均衡模式)

url_hash(第三方负载均衡模式)

三、Nginx+Tomcat反向代理与负载均衡部署

第一步 关闭防火墙和安全机制

第二步 安装依赖环境

第三步 编译安装

第四步 编译

第五步 添加系统识别

第六步 编辑配置文件

第七步 赋权并启动服务

第八步 查看指定端口服务

第九步 用浏览器测试Nginx

第十步 部署Tomcat服务器

第十一步 解包到指定目录并优化路径

第十二步 修改配置文件

第十三步 刷新文件

第十四步 重启Tomcat

第十五步 查看对应端口

第十六步 安装第三台虚拟机

第十七步 创建目录编辑动态页面

第十八步 修改配置文件

第十九步 重启Tomcat

第二十步 查看对应端口

第二十一步 用浏览器进行测试

第二十二步 第三台虚拟机配置Tomcat

第二十三步 修改动态页面内容

第二十四步 修改第一台静态页面

第二十五步 准备一个静态图片

第二十六步 配置Nginx文件

第二十七步 修改配置内容

第二十八步 用浏览器进行测试


一、正向代理与反向代理

正向代理

客户端想要直接与目标服务器连接,但是无法直接进行连接,就需要先去访问中间的代理服务器,让代理服务器代替客户端去访问目标服务器

反向代理

屏蔽掉服务器的信息,经常用在多台服务器的分布式部署上,像一些大型网站,由于访问人数很多,就需要多台服务器来解决,由一个反向代理服务器来代理,客户端发来请求,先由反向代理服务器,按一定的规则分发到明确的服务器,但客户端不知道是哪台服务器,常用Nginx做反向代理

二、负载均衡

什么是负载均衡

将工作任务或者访问请求进行平衡,然后分摊到多个单元、服务器或者组件上执行,解决高并发,高可用(单点故障)、扩展性(水平伸缩)的最高解决方案

代码仓库定义

开发人员分别将前段和后端代码都存入自己的代码仓库,由分支进行分类(分支、主分支、分分支)分类储存后,打包上传服务器

后端打包工具Maven(打包为War、jar包)

前段打包工具Npm、nodejs

一般前端打包后会放入/usr/local/nginx/html目录当中(nginx配置)

后端的打包回放入在Tomcat服务里的Webapps中

私有仓库  gitlab

公有仓库  github

分流策略

Nginx负载均衡模式(rr负载均衡模式)

每个请求按时间顺序逐一分配到不同的后端服务器,如果超过了最大失败次数后(max_fails)默认为1,在失效时间内(fail_timeout)默认为10秒,该节点失效权重变为0,超过失效时间后,则恢复正常,或者全部节点都为down后,那么将所有节点都恢复为有效,继续探测,一般来说rr可以根据权重进行均匀分配

权重

least_conn(最少连接)

优先将客户端请求调度到当前连接最少的服务器

ip_hash(负载均衡模式)

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端的服务器,可以解决session的问题,但是ip_hash会造成负载不均,有的服务请求接受多,有的请求接受少,所以不建议采用ip_hash模式,session共享问题可用后端服务的session共享代替nginx的ip_hash

fair(第三方负载均衡模式)

按后端的服务器响应时间来分配请求,响应时间短的有限分配

url_hash(第三方负载均衡模式)

基于用户请求的url做hash,和ip_hash算法类似,是对每个请求按url的hash结果分配,使每个URL定向到同一个后端服务器,但也会造成分配不均的问题,这种模式后端服务器为缓存时比较好

三、Nginx+Tomcat反向代理与负载均衡部署

第一步 关闭防火墙和安全机制

命令:systemctl stop firewalld

setenforce 0

第二步 安装依赖环境

命令:yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

第三步 编译安装

命令:./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module

第四步 编译

命令:make -j4 && make install

第五步 添加系统识别

命令:ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin

第六步 编辑配置文件

命令:vim /lib/systemd/system/nginx.service

第七步 赋权并启动服务

命令:chmod 777 /lib/systemd/system/nginx.service

systemctl start nginx

systemctl enable nginx

第八步 查看指定端口服务

命令:lsof -i:8080

第九步 用浏览器测试Nginx

第十步 部署Tomcat服务器

第十一步 解包到指定目录并优化路径

命令:tar xf [压缩包名] -C [指定路径]

第十二步 修改配置文件

命令:vim /etc/profile

第十三步 刷新文件

命令:source /etc/profile

第十四步 重启Tomcat

命令:/usr/local/tomcat/bin/shutdown.sh

/usr/local/tomcat/bin/startup.sh

第十五步 查看对应端口

命令:lsof -i:8080

第十六步 安装第三台虚拟机

第十七步 创建目录编辑动态页面

第十八步 修改配置文件

第十九步 重启Tomcat

第二十步 查看对应端口

第二十一步 用浏览器进行测试

第二十二步 第三台虚拟机配置Tomcat

第二十三步 修改动态页面内容

第二十四步 修改第一台静态页面

第二十五步 准备一个静态图片

第二十六步 配置Nginx文件

第二十七步 修改配置内容

第二十八步 用浏览器进行测试

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

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

相关文章

算法设计与分析 课程期末复习简记

目录 网络流 线性规划 回溯算法 分支限界 贪心算法 动态规划 分治算法 算法复杂度分析 相关概念 网络流 下面是本章需要掌握的知识 • 流量⽹络的相关概念 • 最⼤流的概念 • 最⼩割集合的概念 • Dinic有效算法的步骤 • 会⼿推⼀个流量⽹络的最⼤流 下面对此依次进行复…

基于AUTOSAR的ECU启动阶段哪些事儿

AUTOSAR实战篇:EcuM启动时序大总结 前言 小T出品,必是精品! EcuM启动时序大总结,你值得拥有! 正文 正如小T前文中《AUTOSAR基础篇之EcuM》中讲到的那样,AUTOSAR架构中将ECU的上下电过程统一由单一的模块来进行统一管理,即EcuM模块。 虽然不同硬件的初始化过程不一样,但…

Redis是什么

Redis是什么 https://blog.csdn.net/Little_Oranges/article/details/121870705 1.简介 基于字典格式的。基于内存,高性能的。键值对的方式进行存储。可以存储多种数据结构类型的数据。 2.应用场景 缓存排行榜计数器分布式会话分布式锁社交网络最新列表消息系统 …

华为OD机试真题 JavaScript 实现【查找充电设备组合】【2023Q1 100分】

目录 一、题目描述二、输入描述三、输出描述四、补充说明五、JavaScript算法源码六、效果展示1、输入2、输出3、说明一、题目描述 某个充电站,可提供n个充电设备,每个充电设备均有对应的输出功率。任意个充电设备组合的输出功率总和,均构成功率集合P的1个元素。功率集合P的…

Qt Quick系列(8)—Model-View—视图信号

🚀作者:CAccept 🎂专栏:Qt Quick 文章目录 前言代码示例源码关键知识点 总结 前言 在Qt Quick的Model-View中内置视图有很多,有Repeater、ListView、GridView…,而他们也有着自己的信号,比如…

WebDAV之派盘本地个人云+Documents

Documents是一款由Readdle开发的文档管理和编辑工具,支持PDF阅读、音频播放、图像浏览和标注、以及多种常见文档格式的编辑操作等。派盘是一款本地私有云产品,基于WebDAV、FTP、SMB等多种协议,提供文件存储、分享、同步、备份等服务&#xff…

【Squid一】Squid代理服务器应用

Squid代理服务器应用 1.Squid代理服务器1.1 正向代理的工作机制1.2 代理服务器的概念及其作用1.3 代理服务器主要作用1.4 Squid代理的类型 2.CDN2.1 CDN概述2.2 CDN优势2.3 CDN对网络的优化作用2.4 CDN访问过程2.5 CDN网络的组成要素 3.安装Squid服务3.1 使用脚本启动和关闭squ…

guest内核不响应导致磁盘卸载问题排查

用户问题 客户报障磁盘卸载不了,而且是经常出现卸载不了的情况,客户比较着急,同时PDD也是大客户。 排查过程 查看宿主机上虚拟机信息 1、用户虚拟机有14块磁盘,而且这14块都是以legacypci的方式插入虚拟机,我印象中…

MATLAB | 拉普拉斯分布/拉普拉斯噪声的生成

一、实验目标 生成拉普拉斯分布的噪声,并分析它的概率密度函数 二、解决思路 (1)拉普拉斯分布可以由指数分布生成 拉普拉斯的概率密度函数为 f ( x ; μ , λ ) 1 2 λ e − ∣ x − μ ∣ λ f(x;\mu,\lambda)\frac{1}{2 \lambda} e^{…

创建启动前端vue与后端python/flask,前后端分离,相互传递参数

创建启动vue 确保你已经安装了Node.js和npm 安装vue npm install -g vue/cli创建vue项目: vue create my-project cd my-project启动vue npm run serve如果安装vue报错:管理员权限模式打开powershell Windows PowerShell 版权所有(C&#…

windows怎么查看目标文件.o and windows - 如何使用/安装 GNU binutils (objdump)

GNU binutils-objdump工具 一、windows怎么查看目标文件.o二、安装GNU binutils (objdump)三、使用GNU binutils (objdump)参考资料 一、windows怎么查看目标文件.o 可以使用GNU binutils (objdump)进行查看编译生成的目标文件.o。 二、安装GNU binutils (objdump) 点击下载…

Apache Airflow 多个 Provider 存在漏洞

项目介绍 Airflow 是一个使用 python 语言编写的 data pipeline 调度和监控工作流的平台。 Airflow 是通过 DAG(Directed acyclic graph 有向无环图)来管理任务流程的任务调度工具, 不需要知道业务数据的具体内容,设置任务的依赖…

辅助驾驶功能开发-功能规范篇(21)-4-XP行泊一体方案功能规范

XPilot Parking 自动泊车系统 • 超级自动泊车辅助(Super AutoParking Assist)、语音控制泊车辅助(Autoparking with Speech) - 产品定义 超级自动泊车辅助是⼀个增强的自动泊车辅助系统。在超级自动泊车辅助系统中,识别车位将会变得实时可见, 并且不可泊入的⻋位也将…

zynq系列器件使用vivado配置国产内存

zynq系列器件使用vivado配置国产内存 一、镁光公司器件命名的含义二、紫光公司器件命名的含义二、国产ddr(SCB13H8G162BF-13KI)和镁光(MT41K512M8-125)ddr参数对比三、vivado参数填入 一、镁光公司器件命名的含义 以MT41K512M8-1…

代码随想录算法训练营第六天 | 哈希表系列2(两数之和--四数相加II--三数之和--四数之和)

哈希表系列2 1 两数之和本题思路代码随想录的代码力扣的示例代码 454 四数相加II本题思路代码随想录的代码力扣的示例代码 15 三数之和本题思路代码随想录的代码力扣的示例代码 18 四数之和代码随想录的代码力扣的示例代码 1 两数之和 给定一个整数数组 nums 和一个整数目标值…

DAY41——动态规划part3

整数拆分 dp[i]:分拆数字i,可以得到的最大乘积为dp[i]。 dp[i](i-j)*j或j * dp[i-j]两种可能,前者是拆成两个数的可能性,后者是拆成三个或更多的可能性 对于dp[i] j * dp[i-j] 对每个i遍历j(1->i-1) 事实上是把i拆成j和i-j两…

web安全php基础_搭建php环境

首先打开phpstudy的网站栏点击创建网站,新建一个网站(域名随便输反正是局域网)然后点击确认 如下,网站便创建好了 打开浏览器输入刚刚创建网站时输入的域名,即可看见我们的网站 然后网站好了,就可以新建项…

IDEA中MyBatiX插件的使用教程

MybatisX插件功能介绍 主要功能如下: 生成mapper xml文件 快速从代码跳转到mapper及从mapper返回代码 mybatis自动补全及语法错误提示 集成mybatis generator gui界面 根据数据库注解,生成swagger model注解 首先下载MybatisX插件 配置数据源 在idea中连…

【C语言】指针和数组笔试题解析

简单不先于复杂,而是在复杂之后。 注:题目会附在前面,大家可以先复制代码自己做一遍,再看答案。 目录 1. 一维数组 2. 字符数组 2.1 sizeof 相关 2.1.1 题一 2.1.2 题二 2.1.3 题三 2.2 strlen 相关 2.2.1 题一 2.2.…

面试之线程池(高级开发 必问)

今天被面试 问麻了。第一个问题是: 一个类有私有的变量,如果修改这个类的私有变量。使用setter方法除外。(后来才知道用反射) 算了,我还是太水了。回归主题。 线程池的优点: (1):降低资源消耗,通过重读…