利用nginx_upstream_check模块检查nginx代理后端存活
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用nginx_upstream_check模块检查nginx代理后端存活相关的知识,希望对你有一定的参考价值。
在日常nginx的使用中,经常会出现upstream代理的后端服务器失效的情况,这会导致请求经常会流向失效的后端,导致访问失败。若想剔除掉已失效的后端,必须手动注释或删除配置,很是麻烦。利用nginx_upstream_check模块,就可以避免这些问题。
nginx_upstream_check模块可以根据指定的检查周期与参数定期检查upstream后端的存活情况,若判定某一后端检查失败,则标记为"DOWN"状态,访问流量则不再流向该失败后端服务。
nginx添加nginx_upstream_check模块:
1:下载模块。git地址如下:https://github.com/yaoweibin/nginx_upstream_check_module
# unzip nginx_upstream_check_module-master.zip
2:根据nginx版本打补丁(我这里使用的是nginx-1.12.1版本)。
# cd nginx-1.12.1 # patch -p1 < /usr/local/src/nginx_upstream_check_module-master/check_1.12.1+.patch
3:编译、安装nginx,添加上nginx_upstrem_check模块。
# ./configure --prefix=/usr/local/nginx --user=nobody --group=nobody --add-module=/usr/local/src/nginx_upstream_check_module-master/ # make && make install
4:为一个upstream服务组配置后端检查。
upstream xxxxxx { server 172.17.1.164:8080; server 172.17.3.164:8080; check interval=2000 rise=2 fall=2 timeout=1000 type=http; check_http_send "HEAD / HTTP/1.0\r\n\r\n"; check_http_expect_alive http_2xx http_3xx http_4xx; }
其中参数的定义如下:
interval:检查的周期
fall:允许的检查失败次数,若失败次数超过该值,则后端被标记为"down"。
rise:检查的成功次数达到该值,则后端被标记为“up”。
timeout:检查的超时时间。
type:后端检查的协议类型。
5:在某一个请求路径下运用代理:
location / { root html; index index.html index.htm; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://xxxxxx; }
6:开启后端存活状态页面,便于查看后端状态。
location /status { check_status; access_log off; }
可以看到我现在的upstream服务组中,有一个后端是'up'状态,有一个后端是'down'不可用状态。
以上是关于利用nginx_upstream_check模块检查nginx代理后端存活的主要内容,如果未能解决你的问题,请参考以下文章