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

文章到这里就结束了~

相关推荐
m0_5719575838 分钟前
Java | Leetcode Java题解之第543题二叉树的直径
java·leetcode·题解
魔道不误砍柴功3 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
NiNg_1_2343 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
闲晨3 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
测开小菜鸟4 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
P.H. Infinity5 小时前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq
生命几十年3万天5 小时前
java的threadlocal为何内存泄漏
java
caridle5 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
^velpro^6 小时前
数据库连接池的创建
java·开发语言·数据库
苹果醋36 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx