【Nginx <三>⭐️⭐️⭐️】Nginx 负载均衡使用

目录

👋前言

[👀一、 负载均衡概述](#👀一、 负载均衡概述)

🌱二、项目模拟

[2.1 环境准备](#2.1 环境准备)

[2.2 启动多个服务器](#2.2 启动多个服务器)

[2.3 配置 Nginx](#2.3 配置 Nginx)

[2.4 测试配置](#2.4 测试配置)

💞️三、章末


👋前言

小伙伴们大家好,前不久开始学习了 Nginx 的使用,在本地安装并且调试了服务器,以及初步学习了 Nginx 的代理功能,接着再来看下 Nginx 的另一大功能-负载均衡,之前的文章连接如下:

【Nginx <二>⭐️⭐️】Nginx 的反向代理使用-CSDN博客

👀一、 负载均衡概述

负载均衡是指将流量分散到多个服务器上的技术,使得每台服务器都能够有效的处理负载,避免某台服务器过载导致不可用。

如下简单的例子,比如某网站每天都会有大量用户访问,为了应对这种高流量的情况,可以使用负载均衡技术确保网站的稳定运行,设置一个负载均衡器,位于用户和后端服务器之间,当用户发送请求时,首先到达负载均衡器,负载均衡器根据指定的策略将用户请求分发给后端服务器集群中的某一台,后端服务器处理请求后生成相应数据返回给负载均衡器,负载均衡器将响应返回给用户,大概的流程如下(手拙,见谅):

🌱二、项目模拟

2.1 环境准备

需要提前准备好一个可以运行的 Springboot 项目,简单写个接口用来测试请求即可

本地使用的是上篇文章中创建过的用于反向代理测试的项目,测试接口如下:服务器收到请求后会在控制台打印出当前启动占用的端口号,然后返回成功信息提示

2.2 启动多个服务器

本地需要部署多个服务器来模拟集群,通过简单的修改下已有项目启动占用的端口号实现即可

2.2.1 启动第一台服务器

比较简单,在配置文件中指定端口号以后,直接启动项目即可,占用的端口号即为配置文件中的端口号,启动后的控制台也会打印出使用的端口号,如下

2.2.2 配置第二台服务器

还是使用相同的项目,只不过指定另外一个端口号,步骤如下:

注:指定端口号的命令如下:端口号可以自定义,但是不能是已经被占用的

复制代码
-Dserver.port=8082

2.2.3 启动第二台服务器

快捷启动栏上选中为刚刚创建的启动类,点击运行即可,结果如下:

注:本地使用的 services 快捷工具栏配置步骤可以参考这个 up 的文章,这里不做过多赘述,步骤很简单

IDEA显示service服务_idea service-CSDN博客

2.3 配置 Nginx

修改 nginx 配置文件,使用 upstream 属性定义负载均衡的后端服务器

注:修改配置文件保存后需要重新启动 Nginx 服务器

这里的配置内容如下:

使用了 location 指令来处理所有匹配的请求。通过 proxy_pass 指令,将请求转发给名为 "httpds" 的 upstream 属性,Nginx 将根据其负载均衡策略将请求分发给其中的一台服务器。

2.4 测试配置

访问我们暴露出来的接口,多刷新几次,模拟多流量,看下控制台,发现 Nginx 服务器确实将请求打到不同的服务器上了

💞️三、章末

从最后的结果来看,Nginx 默认的配置下,会将请求均衡的分配到每台服务器上,不止如此,还可以通过修改配置指定 分配优先级,涉及的服务器不可用的话相应的处理方法,备份服务器等等,当然这些就看后面有时间的话再更了。

文章到这里就结束了~

相关推荐
JAVA学习通6 分钟前
北京明光云振铎数据科技Java面经
java·开发语言·科技
贫民窟的勇敢爷们6 小时前
SpringBoot整合AOP切面编程实战,实现日志统一记录+接口权限校验
java·spring boot·spring
AC赳赳老秦7 小时前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
迈巴赫车主7 小时前
Java基础:list、set、map一遍过
java·开发语言
灵犀学长7 小时前
基于 Spring ThreadPoolTaskScheduler + CronTrigger 实现的动态定时任务调度系统
java·数据库·spring
好家伙VCC9 小时前
【无标题】
java
小碗羊肉10 小时前
【JavaWeb | 第十一篇】文件上传(本地&阿里云OSS)
java·阿里云·servlet
吾疾唯君医10 小时前
Java SpringBoot集成积木报表实操记录
java·spring boot·spring·导出excel·积木报表·数据文件下载
Byron Loong10 小时前
【c++】为什么有了dll和.h,还需要包含lib
java·开发语言·c++
hexu_blog11 小时前
vue+java实现图片批量压缩
java·前端·vue.js