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的端口保持一致。

相关推荐
青槿吖4 分钟前
【保姆级教程】Spring事务控制通关指南:XML+注解双版本,避坑指南全奉上
xml·java·开发语言·数据库·sql·spring·mybatis
mygljx32 分钟前
spring-ai 下载不了依赖spring-ai-openai-spring-boot-starter
java·人工智能·spring
jaysee-sjc40 分钟前
【练习十二】Java实现年会红包雨小游戏
java·开发语言·算法·游戏·intellij-idea
indexsunny1 小时前
互联网大厂Java求职面试实战:核心技术与业务场景解析
java·spring boot·redis·微服务·kafka·互联网大厂·面试技巧
小涛不学习1 小时前
Java 后端核心框架面试题(Spring / SpringMVC / MyBatis / MyBatis-Plus)
java·spring·mybatis
程序猿大波1 小时前
基于java,SpringBoot和Vue餐饮公司食堂管理系统设计
java·vue.js·spring boot
艾莉丝努力练剑1 小时前
【脉脉】AI创作者崛起:掌握核心工具,在AMA互动中共同成长
运维·服务器·c++·人工智能·安全·企业·脉脉
似水明俊德1 小时前
01-C#.Net-泛型-学习笔记
java·笔记·学习·c#·.net
百锦再1 小时前
飞算 JavaAI:我的编程强力助推引擎
java·spring·ai·编程·idea·code·飞算
wuyaolong0072 小时前
Spring Boot 3.4 正式发布,结构化日志!
java·spring boot·后端