当前位置:首页>Linux>Linux进阶 | Nginx 服务安装与配置(六):负载均衡与集群架构实战

Linux进阶 | Nginx 服务安装与配置(六):负载均衡与集群架构实战

  • 2026-09-02 20:12:12
Linux进阶 | Nginx 服务安装与配置(六):负载均衡与集群架构实战
前一篇我们实现了:
  • 反向代理
  • 前后端分离
  • 502 / 504 排错
但现在有一个问题:
如果后端只有一台服务器,一旦宕机怎么办?
这时就需要:负载均衡(Load Balancing)
这一篇,我们彻底讲清:
✔ upstream 的使用方法
✔ 常见负载均衡策略
✔ 三节点集群实战
✔ 常见问题排查

一、为什么需要负载均衡?

假设你的后端是这样:
Nginx → 8080
问题:
并发一高就扛不住
单点故障
无法横向扩展
改成这样:

Nginx→ → 8080

            → 8081

            → 8082

Nginx 负责把请求分发到不同服务器。
这就是负载均衡。

二、模拟三台后端服务

为了演示,我们在同一台机器启动三个端口:
python3 -m http.server 8080python3 -m http.server 8081python3 -m http.server 8082
(可以分别在不同目录运行,方便区分)
确认端口监听:
ss -lntp | grep 808

三、配置 upstream

编辑配置文件:
vim /etc/nginx/conf.d/loadbalance.conf
写入:
upstream backend {  server 127.0.0.1:8080;  server 127.0.0.1:8081;  server 127.0.0.1:8082;}server {  listen 80;  server_name lb.local;  location / {    proxy_pass http://backend;  }}
测试并重载:
nginx -tnginx -s reload
访问:
http://lb.local
刷新页面多次,你会发现:
内容在不同端口之间切换。
说明负载均衡生效。

四、负载均衡策略详解

默认策略是:轮询(Round Robin)
即:请求依次分配到各节点。

1️⃣ 权重模式

upstream backend {  server 127.0.0.1:8080 weight=3;  server 127.0.0.1:8081 weight=1;}
含义:
8080 承担 75% 流量
8081 承担 25%
适用于:
服务器性能不同

2️⃣ ip_hash(会话保持)

upstream backend {  ip_hash;  server 127.0.0.1:8080;  server 127.0.0.1:8081;}
作用:
同一个客户端 IP
永远访问同一台服务器
适用于:
需要会话保持的系统

3️⃣ least_conn(最少连接)

upstream backend {    least_conn;    server 127.0.0.1:8080;    server 127.0.0.1:8081;}
作用:
优先分配给当前连接数最少的节点
适用于:
请求处理时间不均衡场景

五、节点故障测试

停止一个后端:
kill8081对应进程
再刷新页面。
你会发现:
请求自动切换到其他节点。
Nginx 默认会临时剔除失败节点。
可以手动设置:
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
含义:
30 秒内失败 3 次
标记为不可用

六、生产架构升级思路

真实生产环境一般是:

用户

↓

公网负载均衡

↓

Nginx 集群

↓

应用服务器集群

↓

数据库

Nginx 只是流量调度层。
负载均衡是横向扩展的第一步。

七、常见问题排查

1️⃣ 所有请求只打到一台机器

检查:
是否开启 ip_hash
是否浏览器缓存

2️⃣ 后端偶发 502

检查:
后端服务是否崩溃
端口是否监听
日志是否有错误
查看日志:
tail -f /var/log/nginx/error.log

八、本篇核心能力升级

现在你已经具备:
✔ upstream 配置能力
✔ 三种负载策略认知
✔ 集群部署基础能力
✔ 节点故障排查能力
这已经是中级运维的核心技能。

最新文章

随机文章