oauth2认证服务采用nginx负载均衡,nginx不自动剔除失败的后台服务。
nginx的负载均衡配置值如下 ,负载均衡策略用ip_hash,访问到12服务器,关停12服务器,访问不会到13,报错404。
采取轮询策略,当12、13服务器都正常时,访问正常,当12/13只有一台正常的时候,页面访问时,第一次正常,第二次404,三次正常,第四次404,如此反复、 、 等于nginx会一直访问到宕机的服务


oauth2认证服务采用nginx负载均衡,nginx不自动剔除失败的后台服务。
nginx的负载均衡配置值如下 ,负载均衡策略用ip_hash,访问到12服务器,关停12服务器,访问不会到13,报错404。
采取轮询策略,当12、13服务器都正常时,访问正常,当12/13只有一台正常的时候,页面访问时,第一次正常,第二次404,三次正常,第四次404,如此反复、 、 等于nginx会一直访问到宕机的服务


关注引自强大而免费的微信小程序:皆我百晓生。
Nginx负载均衡失效的原因和解决方法
主要原因:负载均衡失效是由于nginx的健康检查机制没有将故障的后台服务自动剔除造成的。
解决方法:
使用upstream的down属性
可以在配置upstream的时候为每台服务器设置一个down属性,并将其设置为true来标记宕机的服务。配置示例如下:
upstream auth.com {
ip_hash;
server 10.4.128.12:8001 down;
server 10.4.128.13:8001;
}
max_fails和fail_timeout属性来调整探测的精度和频率,例如:upstream auth.com {
ip_hash;
server 10.4.128.12:8001 down max_fails=3 fail_timeout=10s;
server 10.4.128.13:8001;
}
max_fails表示最大失败次数,如果达到这个次数则认为服务宕机;fail_timeout表示宕机判定的超时时间,如果在该时间内无法恢复则认为服务宕机。使用Nginx Plus或第三方模块
Nginx Plus是官方提供的商业版本,在原生的Nginx负载均衡中已经内置了健康检查和自动剔除的功能。而对于开源版本的Nginx,则可以通过第三方模块实现类似的功能,如Nginx Upstream Check Module。
Nginx Plus:使用官方提供的Nginx Plus版,并配置健康检查机制。
第三方模块Nginx Upstream Check Module:该模块需要编译Nginx时加入,基本的使用示例如下:
upstream auth.com {
ip_hash;
server 10.4.128.12:8001 check interval=3000 rise=2 fall=3;
server 10.4.128.13:8001;
}
check表示启用健康检查;interval表示检查的时间间隔;rise表示成功多少次认为服务恢复;fall表示失败多少次认为服务宕机。使用外部的健康检查工具
不依赖Nginx自身的健康检查方法,而是使用独立的健康检查工具来进行服务状态的监控和通知。例如使用Keepalived等工具进行健康检查,并根据检查结果动态修改Nginx的配置文件。
以上是解决Nginx负载均衡失效的几种常见方法,请根据实际需求选择其中一种或多种方式来解决问题。