主题
健康检查与故障转移
在高可用架构中,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:备用服务器,当主服务器不可用时接管请求
二、故障转移机制
- 主服务器连续失败达到
max_fails,Nginx 自动切换到可用服务器 - 当备用服务器可用时,流量自动转发
- 可结合
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:请求超时自动切换
三、最佳实践
- 对关键服务配置多个后端,保证高可用
- 定期监控 upstream 服务器健康状态
- 将备用服务器设置为 backup,避免不必要负载
- 日志分析失败原因,优化负载均衡策略
通过健康检查与故障转移机制,Nginx 可以在后端服务器出现故障时自动切换,保障 Web 服务的高可用性和稳定性。