Nginx---后端节点健康检查2种方式
1、ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带)
官网地址: http://nginx.org/cn/docs/http/ngx_http_proxy_module.html#proxy_next_upstream
2、nginx_upstream_check_module模块
官网网址:https://github.com/yaoweibin/nginx_upstream_check_module
3、ngx_http_healthcheck_module模块
官网网址:http://wiki.nginx.org/NginxHttpHealthcheckModule
一、 ngx_http_proxy_module 模块 和ngx_http_upstream_module模块 (自带)
严格来说,nginx自带是没有针对负载均衡后端节点的健康检查的,但是可以通过默认自带的 ngx_http_proxy_module 模块 和ngx_http_upstream_module模块中的相关指令来完成当后端节点出现故障时,自动切换到健康节点来提供访问。
- ngx_http_proxy_module 模块中的 proxy_connect_timeout 指令、proxy_read_timeout指令和proxy_next_upstream指令设置与后端服务器建立连接的超时时间,定义从后端服务器读取响应的超时,指定在何种情况下一个失败的请求应该被发送到下一台后端服务器。
-
ngx_http_upstream_module 模块认定一些指令,max_fails=1 fail_timeout=10s;。
二、nginx_upstream_check_module模块
除了自带的上述模块,还有一个更专业的模块,来专门提供负载均衡器内节点的健康检查的。这个就是淘宝技术团队开发的 nginx 模块 nginx_upstream_check_module,通过它可以用来检测后端 realserver 的健康状态。如果后端 realserver 不可用,则所以的请求就不会转发到该节点上。
三、 ngx_http_healthcheck_module模块
除了上面两个模块,nginx官方在早期的时候还提供了一个ngx_http_healthcheck_module 模块用来进行 nginx后端节点的健康检查。nginx_upstream_check_module模块就是参照 该模块的设计理念进行开发的,因此在使用和效果上都大同小异。但是需要注意的是, ngx_http_healthcheck_module 模块仅仅支持nginx的1.0.0版本,1.1.0版本以后都不支持了推荐大家用nginx做代理时候使用nginx_upstream_check_module模块对后端增加健康检查。