前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx利用第三方模块检查后端服务器

nginx利用第三方模块检查后端服务器

作者头像
BUG弄潮儿
发布2022-06-30 15:18:01
4080
发布2022-06-30 15:18:01
举报
文章被收录于专栏:JAVA乐园

大家都知道前端使用nginx做反向代理,如果后端服务器宕掉的话,nginx是不能把这台real server剔出upstream的,所以还会有请求转发到后端的这台real server上面去,虽然nginx可以在localtion中启用proxy_next_upstream来解决返回给用户的错误页面,但这个还是会把请求转发给这台服务器的,然后再转发给别的服务器,这样就浪费了一次转发,这次借助与淘宝技术团队开发的nginx模快nginx_upstream_check_module来检测后方realserver的健康状态,如果后端服务器不可用,则所以的请求不转发到这台服务器。

首先去这里下载nginx的模块https://github.com/yaoweibin/nginx_upstream_check_module

下面是nginx打上模块补丁的安装

$ wget http://nginx.org/download/nginx-1.10.3.tar.gz

$ tar -xzvf nginx-1.10.3.tar.gz

$ cd nginx-1.10.3/

$ patch -p1 < /path/to/nginx_http_upstream_check_module/check.patch

注:因nginx版本更新,1.7.2以上版本的nginx,补丁为check_1.7.2+.patch

$ ./configure –add-module=/path/to/nginx_http_upstream_check_module

$ make

$ make install

之后在nginx.conf配置文件里面的upstream加入健康检查,如下:

upstream linuxyan {

server 192.168.0.21:80;

server 192.168.0.22:80;

check interval=3000 rise=2 fall=5 timeout=1000;

}

这里下面加的这句话我解释下,interval检测间隔时间,单位为毫秒;rsie请求2次正常的话,标记此realserver的状态为up,fall表示请求5次都失败的情况下,标记此realserver的状态为down;timeout为超时时间,单位为毫秒。在server段里面可以加入查看realserver状态的页面

location /nstatus {

check_status;

access_log off;

#allow SOME.IP.ADD.RESS;

#deny all;

}

这个时候打开nstatus这个页面就可以看到当前realserver的状态了,

如下图:

1、两台realserver都正常的情况下

2、一台realserver故障的情况下

有关于此模块的信息请查阅:https://github.com/yaoweibin/nginx_upstream_check_module

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BUG弄潮儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档