基于nginx的健康检查模块

nginx是系统部署时常常用来当做代理,负载均衡的服务。尤其对于后端服务,部署的服务可能会有多个节点,对于出现问题的节点,如何快速的踢出,并在可用的时候加进来呢。

1,nginx自带的模块ngx_http_proxy_module和ngx_http_upstream_module

使用示例如图所示

基于nginx的健康检查模块_第1张图片

参数说明

proxy_next_upstream 指定出现何种错误或异常,将请求转到下一个节点

max_fails fail_timeout 在fail_timeout时间内节点出现失败的次数大于等于max_fails设置的值,该节点将会被踢出,下个fail_timeout再去请求一次,如果成功,该节点将会被假如正常节点。

2,淘宝技术团队开发的nginx_upstream_check_module

nginx自带的check模块相对来说比较粗糙,推荐使用淘宝技术团队开发的nginx_upstream_check_module

GitHub地址:https://github.com/yaoweibin/nginx_upstream_check_module 可参考编译安装模块

使用示例如下图所示:

基于nginx的健康检查模块_第2张图片

interval 监测间隔,每隔interval毫秒,将会发送一次请求到所有节点 

fail 失败的次数达到fail,该节点将会标为不可用

rise 被踢出的节点,成功的次数达到rise,该节点将会标为可用

timeout 监测请求的超时时间

type 请求方式,支持tcp, ssl_hello,http,mysql,ajp,fastcgi

check_http_send 发送监测的接口配置,如示例为/api/monitor/ping http请求

check_http_expect_alive 接口成功的标识 例如http_2xx,http_3xx

可以配置对于当前nginx的upstream的节点状况,如下图所示

基于nginx的健康检查模块_第3张图片

curl 'http://127.0.0.1:30030/status' 可以获取节点状况,方便监控节点健康状态,进行预警处理。

 

你可能感兴趣的:(Linux,nginx,nginx,健康检查,集群,容灾,后端)