Nginx upstream 模块如何配置备用服务器 backup 参数

文章导读
在 Nginx 的 upstream 模块中,配置 backup 参数主要用于实现故障转移,适合主服务器宕机时自动切换到备用服务器的场景,而不是用来分担日常流量。
📋 目录
  1. 配置示例
  2. 工作原理
  3. 配置步骤
  4. 验证方法
  5. 注意事项
  6. 参考来源
A A

在 Nginx 的 upstream 模块中,配置 backup 参数主要用于实现故障转移,适合主服务器宕机时自动切换到备用服务器的场景,而不是用来分担日常流量。

先说结论:backup 参数专为容灾设计,主节点正常时备用节点不接收流量,配置前需确认负载均衡算法兼容性。

  • 适合:主从架构、高可用容灾、临时维护切换
  • 先准备:确认主备服务器服务状态一致、端口可达
  • 验收:模拟主节点故障,观察日志是否切换至备用节点

配置示例

upstream backend {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080 backup;
}

server {
    location / {
        proxy_pass http://backend;
    }
}

工作原理

Nginx 开源版本的 upstream 模块默认采用被动健康检查机制。只有当主服务器在请求处理过程中返回错误(如连接拒绝、超时)时,Nginx 才会将其标记为不可用,并将后续请求转发给标记为 backup 的服务器。这意味着备用服务器在平时处于空闲状态,不会参与负载均衡轮询。

配置步骤

1. 编辑 Nginx 配置文件,通常位于/etc/nginx/nginx.conf 或/etc/nginx/conf.d/下的站点配置文件中。

2. 在 upstream 块中找到 server 指令,在备用服务器地址后添加 backup 参数。

3. 执行 nginx -t 检查配置语法是否正确,确保没有拼写错误。

4. 执行 nginx -s reload 重载配置,使更改生效而不中断现有连接。

验证方法

1. 查看访问日志:正常情况下,access.log 中只应记录主服务器的 IP 或 upstream 名称对应的主节点响应。

Nginx upstream 模块如何配置备用服务器 backup 参数

2. 模拟故障:暂时停止主服务器上的应用服务进程(如 systemctl stop tomcat 或 kill 进程),确保端口 8080 无法连接。

3. 确认切换:观察 access.log,确认请求是否由备用服务器处理,同时检查 error.log 是否有 upstream 连接失败的记录。

4. 恢复测试:重新启动主服务器应用,再次发起请求,确认流量是否回切到主节点。

注意事项

1. 与 ip_hash 冲突:如果使用 ip_hash 负载均衡算法,backup 参数会被忽略,所有请求仍会哈希到主服务器,直到主服务器被手动标记为 down。

2. 被动检查局限:开源版 Nginx 不会主动探测服务器健康状态,如果主服务器进程僵死但端口仍通,流量可能不会切换到备用节点。

3. 会话保持:切换至备用服务器时,原有会话数据可能丢失,需确保主备服务器共享 Session 或采用无状态设计。

参考来源

1. Nginx 官方文档 - ngx_http_upstream_module
URL: http://nginx.org/en/docs/http/ngx_http_upstream_module.html#server