全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Nginx高可用配置实战教程之负载均衡 + 健康检查 + 动态扩展

目录
  • Nginx高可用配置实战:负载均衡 + 健康检查 + 动态扩展
    • 一、背景与目标
    • ️ 二、项目架构设计
    • ⚙️ 三、负载均衡基础配置
      • 1️⃣ 安装 Nginx
      • 2️⃣ 配置 upstream 实现负载均衡
    • 四、加入健康检查模块
      • 实战方案(使用 openresty)
    • ♻️ 五、实现动态扩展与热更新
      • 六、日志分析与请求分布监控
        • 七、实战验证
          • 模拟异常场景:
        • 八、性能与高可用总结
          • 九、项目实战结构目录
            • 十、总结与思考

            Nginx高可用配置实战:负载均衡 + 健康检查 + 动态扩展

            一篇从零搭建到实测上线的高可用 Nginx 负载均衡案例教程。

            一、背景与目标

            在现代业务中,单台应用服务器往往无法承载高并发请求。
            Nginx 作为轻量级高性能的反向代理服务器,能同时实现:

            • 负载均衡(分担后端压力)
            • 健康检查(自动移除异常节点)
            • 动态扩展(不重启即更新配置)

            本文通过一个电商商品服务集群的实战项目,带你从零实现高可用 Nginx 架构。

            ️ 二、项目架构设计

            我们模拟一个商品服务集群(product service):

            节点名称IP说明
            app1192.168.10.101主节点
            app2192.168.10.102副节点
            app3192.168.10.103扩容节点
            nginx-lb192.168.10.10负载均衡代理服务器

            请求流程如下:

            Client → Nginx (负载均衡+健康检查)
                      ↓
               ┌───────────────┬───────────────┬───────────────┐
               │ App1          │ App2          │ App3          │
               │ 商品服务节点1 │ 商品服务节点2 │ 商品服务节点3 │
               └───────────────┴───────────────┴───────────────┘

            ⚙️ 三、负载均衡基础配置

            1️⃣ 安装 Nginx

            sudo apt update
            sudo apt install nginx -y

            查看版本:

            nginx -v
            

            2️⃣ 配置 upstream 实现负载均衡

            编辑 /etc/nginx/conf.d/loadbalance.conf

            upstream product_cluster {
                # 轮询策略(默认)
                server 192.168.10.101:8080 max_fails=3 fail_timeout=10s;
                server 192.168.10.102:8080 max_fails=3 fail_timeout=10s;
                server 192.168.10.103:8080 max_fails=3 fail_timeout=10s backup;
            }
            server {
                listen 80;
                server_name product.demo.local;
                location / {
                    proxy_pass http://product_cluster;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                }
            }

            轮询模式默认自动分配请求
            max_fails:健康检查失败次数阈值
            backup:备用节点,仅主节点失效时启用

            保存后测试:

            nginx -t
            systemctl reload nginx
            

            四、加入健康检查模块

            Nginx 开源版不自带健康检查模块,我们可通过 ngx_http_upstream_check_modulenginx-plus 实现。

            实战方案(使用 openresty)

            如果使用 OpenResty (推荐)

            sudo apt install openresty -y
            

            配置文件 /usr/local/openresty/nginx/conf/nginx.conf

            http {
                upstream product_cluster {
                    server 192.168.10.101:8080;
                    server 192.168.10.102:8080;
                    check interval=5000 rise=2 fall=5 timeout=3000 type=http;
                    check_http_send "HEAD /health HTTP/1.0\r\n\r\n";
                    check_http_expect_alive http_2xx http_3xx;
                }
                server {
                    listen 80;
                    location / {
                        proxy_pass http://product_cluster;
                    }
                    location /status {
                        check_status;
                        access_log off;
                        allow 192.168.10.0/24;
                        deny all;
                    }
                }
            }

            访问 http://nginx-lb/status 可以实时看到健康状态:

            IP状态延迟
            192.168.10.101up12ms
            192.168.10.102down-
            192.168.10.103up8ms

            ♻️ 五、实现动态扩展与热更新

            当新增一台应用服务器时,只需修改 upstream 段:

            upstream product_cluster {
                include /etc/nginx/upstreams/*.conf;
            }

            然后在 /etc/nginx/upstreams/ 目录中增加或删除节点配置文件:

            echo "server 192.168.10.104:8080;" > /etc/nginx/upstreams/node4.conf
            

            无需重启,仅需平滑加载:

            nginx -s reload
            

            这样 Nginx 就能动态感知新节点加入!

            六、日志分析与请求分布监控

            打开访问日志:

            /var/log/nginx/access.log
            

            内容示例:

            192.168.10.201 - - [05/Nov/2025:14:32:01 +0800] "GET /api/product/1001 HTTP/1.1" 200 524 "-" "Mozilla" upstream_addr=192.168.10.101:8080
            192.168.10.201 - - [05/Nov/2025:14:32:02 +0800] "GET /api/product/1002 HTTP/1.1" 200 530 "-" "Mozilla" upstream_addr=192.168.10.102:8080

            我们可以统计各节点命中率:

            awk '{print $NF}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
            

            输出:

            240 192.168.10.101:8080
            235 192.168.10.102:8080
            225 192.168.10.103:8080

            通过 Grafana + Loki,还能将这些日志实时可视化。

            七、实战验证

            模拟异常场景:

            sudo systemctl stop product-service@192.168.10.102
            

            访问 /status 页面:

            节点状态
            app1up
            app2❌ down
            app3up

            Nginx 自动将 app2 从负载池中移除,保持服务不中断。
            恢复服务后再次上线:

            sudo systemctl start product-service@192.168.10.102
            

            状态自动恢复为 “up”。

            八、性能与高可用总结

            功能技术点说明
            负载均衡upstream 轮询均衡分配请求
            健康检查openresty check 模块自动移除异常节点
            动态扩展include + reload实现节点热更新
            监控分析日志统计 + Grafana实时监控请求分布

            九、项目实战结构目录

            /etc/nginx/
             ├── conf.d/
             │    └── loadbalance.conf
             ├── upstreams/
             │    ├── node1.conf
             │    ├── node2.conf
             │    └── node3.conf
             ├── logs/
             │    └── access.log
             └── nginx.conf

            十、总结与思考

            通过本次实战,我们实现了:

            • ✅ 从零搭建 Nginx 负载均衡集群
            • ✅ 健康检测与节点自动剔除
            • ✅ 动态扩展不影响业务
            • ✅ 日志实时分析请求命中率

            这套方案非常适合中小企业、内部微服务架构、测试环境或生产高可用场景。


            # Nginx高可用配置  # Nginx负载均衡  # Nginx+Keepalive实现高可用负载均衡  # Nginx+keepalived实现七层的负载均衡的高可用(最新解决方案)  # keepalived+lvs 对nginx做负载均衡和高可用的操作方法  # 使用Nginx + Keepalived 实现高可用 Web 负载均衡笔记(虚拟机)  # Keepalived实现Nginx负载均衡高可用的示例代码  # 负载均衡  # 移除  # 重启  # 代理服务器  # 配置文件  # 就能  # 只需  # 一台  # 我们可以  # 或删除  # 这套  # 自带  # 能将  # 可通过  # 高性能  # 带你  # 开源  # 仅需  # 池中  # 实时监控 


            相关文章: 如何快速查询网址的建站时间与历史轨迹?  如何高效完成独享虚拟主机建站?  如何通过山东自助建站平台快速注册域名?  如何在宝塔面板创建新站点?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  如何快速搭建个人网站并优化SEO?  网站制作壁纸教程视频,电脑壁纸网站?  如何在Ubuntu系统下快速搭建WordPress个人网站?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  常州企业网站制作公司,全国继续教育网怎么登录?  建站之星导航配置指南:自助建站与SEO优化全解析  南京网站制作费用,南京远驱官方网站?  建站之星代理如何优化在线客服效率?  专业公司网站制作公司,用什么语言做企业网站比较好?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何选择高效稳定的ISP建站解决方案?  建站之星北京办公室:智能建站系统与小程序生成方案解析  网站制作说明怎么写,简述网页设计的流程并说明原因?  建站之星会员如何解锁更多建站功能?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  怎么将XML数据可视化 D3.js加载XML  想学网站制作怎么学,建立一个网站要花费多少?  如何选择服务器才能高效搭建专属网站?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  网站制作的步骤包括,正确网址格式怎么写?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  开源网站制作软件,开源网站什么意思?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  济南专业网站制作公司,济南信息工程学校怎么样?  如何在Windows 2008云服务器安全搭建网站?  常州企业建站如何选择最佳模板?  C#怎么使用委托和事件 C# delegate与event编程方法  做企业网站制作流程,企业网站制作基本流程有哪些?  如何快速使用云服务器搭建个人网站?  公司网站制作价格怎么算,公司办个官网需要多少钱?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何做网站制作流程,*游戏网站怎么搭建?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  如何安全更换建站之星模板并保留数据?  简历在线制作网站免费,免费下载个人简历的网站是哪些?  如何确保FTP站点访问权限与数据传输安全?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  电商网站制作价格怎么算,网上拍卖流程以及规则?  如何在万网开始建站?分步指南解析  TestNG的testng.xml配置文件怎么写 

            您的项目需求

            *请认真填写需求信息,我们会在24小时内与您取得联系。