因在linux环境Nginx中配置了2个WEB应用地址作为高可用。现在其中一个应用地址IIS停止了。结果都不能标记down,都会连接到原来一台地址上,只有proxy_connect_timeout参数超时了才会访问另外一台地址,然而访问后还是会请求原先停止的应用。因此采用如下方案解决。
淘宝技术团队开发的nginx模快nginx_upstream_check_module来检测后服务的健康状态,如果后端服务器不可用,则所以的请求不转发到这台服务器
github项目地址:https://github.com/yaoweibin/nginx_upstream_check_module/
部署
部署目录在/opt/src/下
- 首先先从 GitHub 上下载 nginx_upstream_check_module 模块
1 2
| wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master unzip master
|
截止2020年8月该模块暂时支持1.16.1版本
1 2 3 4
| yum install -y patch cd nginx-1.16.1 patch -p1 < ../nginx_upstream_check_module-master/check_1.16.1.patch #因为我们nginx的版本是1.16.1补丁就选择1.16.1的,p1代表在nginx目录,p0是不在nginx目录
|
1 2
| 参数增加如下: --add-module=/opt/src/nginx_upstream_check_module-master/
|
1 2 3 4 5
| upstream test { server 10.0.0.1:8080; server 10.0.0.2:8080; check interval=3000 rise=2 fall=5 timeout=1000 type=http; }
|
1 2 3 4
| location /nstatus { check_status; access_log off; }
|
1 2 3 4 5 6 7
| interval 检测间隔时间,单位为毫秒 rsie 请求2次正常的话,标记此后端的状态为up type 类型为http fall 表示请求5次都失败的情况下,标记此后端的状态为down timeout 为超时时间,单位为毫秒
更多参数查看https://github.com/yaoweibin/nginx_upstream_check_module/
|