在现代Web应用架构中,Nginx负载均衡是保障服务高可用和性能扩展的关键技术。当某台后端服务器宕机时,如何自动将流量切换到其他健康服务器?这就是故障转移(Failover)要解决的问题。本教程将从零开始,带你一步步配置Nginx实现负载均衡与自动故障转移,即使你是运维小白也能轻松上手!
什么是Nginx负载均衡与故障转移?
Nginx负载均衡是指Nginx作为反向代理,将客户端请求分发到多个后端服务器,以提升系统吞吐量和可靠性。故障转移则是指当其中一台后端服务器不可用时,Nginx能自动检测并停止向其转发请求,将流量全部导向健康的服务器,从而保证服务不中断。
准备工作
你需要:
- 一台安装了 Nginx 的服务器(作为负载均衡器)
- 两台或以上的 Web 应用服务器(例如运行 Apache 或 Node.js 的服务器)
- 基本的 Linux 命令行操作能力
步骤一:配置后端服务器
假设你有两台后端服务器,IP 分别为192.168.1.10和192.168.1.11,每台都运行着一个简单的 Web 服务(比如返回 "Server A" 或 "Server B")。
步骤二:编辑 Nginx 配置文件
打开 Nginx 主配置文件(通常位于/etc/nginx/nginx.conf)或在/etc/nginx/conf.d/下创建新配置文件,例如load-balancer.conf。
在配置文件中添加以下内容:
upstream backend { server 192.168.1.10:80 max_fails=3 fail_timeout=30s; server 192.168.1.11:80 max_fails=3 fail_timeout=30s;}server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }}
关键参数说明:
max_fails=3:允许 Nginx 在 30 秒内最多失败 3 次才判定该服务器不可用。fail_timeout=30s:失败超时时间为 30 秒。在此期间若连续失败达到max_fails次,则标记为宕机,并在接下来的 30 秒内不再向其转发请求。
步骤三:测试故障转移功能
1. 启动 Nginx:
sudo nginx -t && sudo systemctl reload nginx
2. 在浏览器或使用curl访问你的域名,应能看到请求被轮流分配到两台服务器(默认轮询策略)。
3. 手动关闭其中一台后端服务器(如192.168.1.10上的服务),再次访问。你会发现所有请求都被自动转发到另一台健康的服务器 —— 这就是 Nginx高可用 的体现!
进阶技巧:主动健康检查(可选)
上述配置使用的是被动健康检查(通过请求失败判断)。如果你使用的是 Nginx Plus(商业版),可以配置主动健康检查。开源版用户可通过第三方模块(如nginx_upstream_check_module)实现类似功能。
总结
通过合理配置 Nginx 的upstream模块,你可以轻松实现 反向代理配置、负载均衡和自动故障转移。这不仅提升了系统的稳定性,也为未来的横向扩展打下基础。记住,高可用不是“有没有”,而是“快不快”——Nginx 能在秒级内完成故障切换,极大减少服务中断时间。
现在,你已经掌握了 Nginx 负载均衡与故障转移的核心技能!快去你的服务器上试试吧~