教程 nginx tutorial

健康检查与故障转移

在高可用架构中,Nginx 可以通过健康检查和故障转移保证请求始终路由到可用后端,提高服务稳定性。

一、upstream 健康检查

Nginx 原生 ngx_http_upstream_module 提供基本健康检测,通过 max_fails 和 fail_timeout 控制失败重试:

nginx
upstream backend {
    server 192.168.1.101 max_fails=3 fail_timeout=30s;
    server 192.168.1.102 max_fails=3 fail_timeout=30s;
    server 192.168.1.103 backup;
}

`

参数说明

  • max_fails:最大失败次数
  • fail_timeout:超过次数后,服务器在该时间段内标记为不可用
  • backup:备用服务器,当主服务器不可用时接管请求

二、故障转移机制

  1. 主服务器连续失败达到 max_fails,Nginx 自动切换到可用服务器
  2. 当备用服务器可用时,流量自动转发
  3. 可结合 proxy_next_upstream 配置进一步控制失败重试策略
nginx
location / {
    proxy_pass http://backend;
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}

常用参数说明

  • proxy_next_upstream:指定何种错误情况下尝试下一个后端
  • timeout:请求超时自动切换

三、最佳实践

  1. 对关键服务配置多个后端,保证高可用
  2. 定期监控 upstream 服务器健康状态
  3. 将备用服务器设置为 backup,避免不必要负载
  4. 日志分析失败原因,优化负载均衡策略

通过健康检查与故障转移机制,Nginx 可以在后端服务器出现故障时自动切换,保障 Web 服务的高可用性和稳定性。