Nginx中web服务健康状态检查

在我们使用Nginx作为负载均衡服务器时,后端服务一般会有2+个节点。默认负载策略是轮询, 如果不做特殊的配置,当一个服务出问题之后,它依然会转发请求到该服务上。这时候,我就需要使用一些策略来实现节点自动下线

Nginx自带的ngx_http_proxy_module模块中,有默认的配置方式

1
2
3
4
5
upstream http_balance {
#20s内出现3次错误,该节点下线20s,这20s内不会将请求转发到下线节点上。
server 192.168.0.6:80 max_fails=3 fails_timeout=20s;
server 192.168.0.7:80 max_fails=3 fails_timeout=20s;
}
nginx_upstream_check_module

该组件为淘宝技术团队开发,我们可以编译到Nginx中,首先,到Github下载wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/v0.3.0.tar.gz,在编译时添加模块--add-module=/xxx。编译成功后,即可在location中配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
upstream http_balance {
zone http_balance 64k;
server 192.168.0.6:80;
server 192.168.0.7:80;
check interval=3000 rise=2 fall=3 timeout=3000 type=http;
#interval检测间隔时间,默认毫秒,当前3秒
#rise表示请求2次,正常认为节点正常
#fall表示请求失败3次,则认为节点失败
#timout超时时间,默认毫秒,当前3秒
#type,类型,当前http类型

check_http_send "GET /status.html HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
#分发节点轮询检测后端节点的url/status.html ,如果返回2xx或者3xx认为正常,否则认为失败一次
}

Nginx中web服务健康状态检查

https://blogs.52fx.biz/posts/1125548503.html

作者

eyiadmin

发布于

2022-10-14

更新于

2024-05-31

许可协议

评论