Nginx 实现负载均衡

目录

一:负载均衡介绍

二、负载均衡具备的功能

1.提高服务器性能

2.提高系统可用性

3.提高系统的可伸缩性

4.实现流量均衡

三、示例配置,如何使用nginx实现负载均衡

四、负载均衡策略配置

1.基于轮询的负载均衡(默认)

2.基于权重(weight)的负载均衡

[3.基于IP HASH的负载均衡](#3.基于IP HASH的负载均衡)

4.实现主备服务

五、后端配合

一:负载均衡介绍

nginx 是一个高性能的 Web 服务器和反向代理服务器,可以用来实现负载均衡。nginx 的负载均衡功能是通过配置upstream块来实现的。在upstream块中,可以配置多个后端服务器,并且可以通过各种算法来选择其中一个服务器来处理请求。

二、负载均衡具备的功能

1.提高服务器性能

负载均衡可以将请求分配到多个服务器上,从而提高服务器的处理能力和响应速度。

2.提高系统可用性

当一台服务器出现故障时,负载均衡可以将请求自动转移到其他正常的服务器上,从而避免系统停机。

3. 提高系统的可伸缩性

当系统负载增加时,可以通过添加更多的服务器来扩展系统的处理能力。

4. 实现流量均衡

负载均衡服务器通过某种调度算法将流量分配到不同的应用程序服务器,以确保每个服务器都能得到合理的工作量,避免过载。

三、 示例配置 , 如何 使用nginx实现负载均衡

XML 复制代码
​
http {

upstream backend {

server 192.168.116.12:8081;

server 192.168.116.12:8082;

 }

server {

listen 80;

 location / {

 proxy_pass http://backend;

 }

 }

​

在上面的配置中,我们定义了一个名为backend 的upstream 块,其中列出了三个后端服务器:backend1.example.com、backend2.example.com和backend3.example.com。然后,在server块中,我们将请求代理到backend,这样nginx就会从这三个后端服务器中选择一个来处理请求。

nginx提供了多种负载均衡算法,例如:权重(weight)、轮询(round-robin)、IP哈希(ip-hash)。可以通过在upstream块中使用相应的配置指令来实现不同的算法。

四、负载均衡策略配置

1. 基于轮询的负载均衡(默认)

每个请求,按时间顺序逐一分配到不同的后端应用服务器节点,如果后端服务出现故障,nginx能够自动剔除该节点,具体配置方式如上述demo示例配置;

2.基于权重( weight)的负载均衡

权重(weight )默认值为1,权重越高,被分配的请求数量越多。

例如:A节点权重=2,B节点权重=1,则请求会按照A:B=2:1的方式轮询。

配置参考如下:

3.基于 IP HASH的负载均衡

每个请求,按照访问IP的hash结果分配,由于hash值为不重复的唯一值,因此每个请求能够固定访问同一个后端服务器,这样可以做到会话保持,解决session同步问题。

配置参考如下:

XML 复制代码
​
http {

ip_hash;

upstream backend {

server 192.168.116.12:8080;

server 192.168.116.12:8081;

 }

server {

listen 80;

 location / {

 proxy_pass http://backend;

 }

 }

​

4.实现主备服务

通过 Nginx 实现在 192.168.116.12:8080 服务器挂掉的情况下自动切换到 192.168.12:8081 服务器,可以使用 Nginx 的代理模块和负载均衡功能。

XML 复制代码
​
http {

upstream backend {

server 192.168.116.12:8080 fail_timeout=10s;

server 192.168.116.12:8081 backup;

 }

server {

listen 80;

 location / {

 proxy_pass http://backend;
 proxy_set_header Host $host;

 }

 }

在上述示例中:

upstream 块定义了服务器组 backend,其中 192.168.116.12:8080 被指定为主服务器,并设置了 fail_timeout=10s,表示当服务器不可用时,Nginx 会在 10 秒后重新尝试连接。

192.168.116.12:8081 被指定为备用服务器,使用 backup 参数标记,表示只有在主服务器不可用时才会被使用。

location 块中的 proxy_pass 指令将请求转发到服务器组 backend,而 proxy_set_header Host $host; 则会将原始请求的 Host 头部信息传递给后端服务器。

当 192.168.116.12:8080 服务器不可用时,Nginx 会自动将请求转发到备用服务器 192.168.116.12:8081这样,用户在不知情的情况下可以继续访问可用的服务器。

请确保在每个服务器上的 Nginx 配置文件中进行正确的配置,并根据您的实际情况进行调整。

五、后端配合

对于后端来说,配合相对简单,只需要启动多个后端服务即可;

注意:后端启动的端口号要和上方配置nginx的端口保持一致。

相关推荐
杨杨杨大侠7 小时前
都能接模型、RAG 和 MCP,Java Agent 框架到底差在哪?
java
Thinker QAQ8 小时前
并发编程(九):BlockingQueue 与 Channel——语言层的原子性、可见性与有序性
java·python·go·并发编程·channel·blockingqueue·message passing
Gauss松鼠会9 小时前
高斯数据库(openGauss)的物理存储结构
运维·服务器·数据库·sql·opengauss·经验总结
Android系统攻城狮9 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_prepare_read调用流程与实战(七十四)
linux·运维·服务器·gstreamer音视频·音视频进阶
杨云龙UP9 小时前
PostgreSQL 18.4 数据库整库迁移实战:pg_dump 备份与 pg_restore 恢复完整操作手册
运维·服务器·数据库·postgresql·pg_dump·pg_restore
霸道流氓气质10 小时前
RAG 可观测性与生产监控实战:四层遥测模型、五大仪表盘与 OpenTelemetry 全链路追踪的 Java 生产级实现
java·人工智能·python
AOI小白新手上路10 小时前
autodl常用的tar 打包下载(数据集)命令手册:逐段拆解与套用模板
java·大数据·数据库
无人生还别怕11 小时前
如何安装任意版本docker
运维·docker·容器
T0uken11 小时前
Colab:SSH 访问免费 GPU Server
运维·ssh
Python大数据分析@11 小时前
通过 MCP 实现 AI Agent自动化数据采集
运维·人工智能·爬虫·自动化