ZBLOG

nginx转发地址有两个IP,默认转发给A IP,当A IP 挂掉后 转发给 B IP

在Nginx中,可以通过 负载均衡策略健康检查机制 实现:
默认优先转发到A IP,当A IP故障时自动切换到B IP。以下是具体配置方法:


1. 基础配置(权重 + 被动健康检查)

upstream backend {
    server 192.168.1.A:80 weight=10 max_fails=3 fail_timeout=30s;  # A节点高权重优先
    server 192.168.1.B:80 weight=5;                                # B节点备用
}
server {
    location / {
        proxy_pass http://backend;
    }
}
  • weight=10: A节点权重更高,正常情况下大部分请求会转发到A。
  • max_fails=3: A节点连续失败3次后,Nginx会在30秒内(fail_timeout)将其标记为不可用,流量自动切到B。

2. 增强方案(主动健康检查)

使用第三方模块 ngx_http_upstream_check_module(需手动编译安装):

upstream backend {
    server 192.168.1.A:80 weight=10;
    server 192.168.1.B:80 weight=5;
    
    check interval=3000 rise=2 fall=3 timeout=2000 type=http;
    check_http_send "HEAD /health HTTP/1.0\r\n\r\n";
    check_http_expect_alive http_2xx http_3xx;
}
  • 主动探测A/B节点的健康状态,无需等待真实请求失败即可剔除故障节点。

3. Nginx商业版(Nginx Plus)

若使用商业版,可直接内置健康检查:

upstream backend {
    zone backend 64k;
    server 192.168.1.A:80 resolve;
    server 192.168.1.B:80 resolve;

    health_check interval=5s fails=3 passes=2 uri=/health;
}

4. 验证方法

  • 查看当前活跃节点
    
    curl -v http://你的Nginx地址   # 观察响应头中的上游服务器IP
    
  • 强制触发故障转移: 手动停止A节点的服务,观察Nginx日志是否切换流量到B:
    
    tail -f /var/log/nginx/error.log | grep upstream
    

关键点总结

机制 优点 缺点
权重+被动检查 简单易用 A节点故障后可能有短暂错误
主动健康检查 实时感知故障 需额外安装模块
Nginx Plus 功能最完善 $$$

根据业务场景选择方案。如果是生产环境且对稳定性要求高,建议使用主动健康检查或Nginx Plus。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23591

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?