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;

 }

 }

​

在上面的配置中,我们定义了一个名为backendupstream 块,其中列出了三个后端服务器:backend1.example.combackend2.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的端口保持一致。

相关推荐
EverydayJoy^v^43 分钟前
RH134学习进程——十二.运行容器(1)
linux·运维·容器
b***25111 小时前
电池组PACK自动化生产线的关键流程与核心优势
运维·自动化
毕设源码-朱学姐1 小时前
【开题答辩全过程】以 基于JavaWeb的网上家具商城设计与实现为例,包含答辩的问题和答案
java
C雨后彩虹3 小时前
CAS与其他并发方案的对比及面试常见问题
java·面试·cas·同步·异步·
哲伦贼稳妥3 小时前
职场发展-遇到以下情况请直接准备后手吧
运维·经验分享·其他·职场和发展
Exquisite.3 小时前
企业高性能web服务器(4)
运维·服务器·前端·网络·mysql
北塔软件3 小时前
北塔方案 | 政府行业IT运维解决方案
运维·it运维·解决方案·政务
java1234_小锋4 小时前
Java高频面试题:SpringBoot为什么要禁止循环依赖?
java·开发语言·面试
2501_944525544 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 账户详情页面
android·java·开发语言·前端·javascript·flutter
计算机学姐4 小时前
基于SpringBoot的电影点评交流平台【协同过滤推荐算法+数据可视化统计】
java·vue.js·spring boot·spring·信息可视化·echarts·推荐算法