Nginx实战-后端应用健康检查
严格来说,nginx是没有针对负载均衡后端节点的健康检查的,但是可以通过proxy_next_upstream来间接实现,但这个还是会把请求转发给故障服务器的,然后再转发给别的服务器,这样就浪费了一次转发。
nginx_upstream_check_module为淘宝技术团队开发的nginx模快,用来检测后方server的健康状态,如果后端服务器不可用,则所以的请求不转发到这台服务器。
1. 安装nginx_upstream_check_module
- 地址:https://github.com/yaoweibin/nginx_upstream_check_module, 下载完毕后解压
进入nginx源码目录,进行打该模块的补丁(这一步千万不能遗漏)
patch -p1 < ../nginx_upstream_check_module-master/check_1.5.12+.patch
然后通过./configure --add-module来增加模块
./configure –add-module=../ nginx_upstream_check_module-master/
注意:如果之前安装过nginx,需要将之前的configure参数保留
make
make之后的操作需要注意
如果nginx第一次安装,直接执行make install即可
make install
如果单纯添加模块,不需要install,而是执行以下操作,将打过补丁的nginx二进制文件覆盖/usr/local/nginx/sbin/目录中的文件即可
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp /nginx源码目录/objs/nginx /usr/local/nginx/sbin/
2. 配置nginx upstream参数
增加建议配置,后端有8181两个节点
location /{
proxy_pass http://cluster;
}
upstream cluster {
server 127.0.0.1:8181;
server 127.0.0.1:8182;
#http健康检查相关配置
check interval=3000 rise=2 fall=3 timeout=3000 type=http;
#/health/status为后端健康检查接口
check_http_send "HEAD /health/status HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}
interval: 向后端发送的健康检查包的间隔,单位为毫秒
rsie: 如果连续成功次数达到rise_count,服务器就被认为是up
fall: 如果连续失败次数达到fall_count,服务器就被认为是down
timeout: 后端健康请求的超时时间,单位为毫秒
type: 健康检查包的类型,支持tcp、ssl_hello、http、mysql、ajp如果想查看后端服务器实时的健康状态,可以在对应server中增加以下location配置
location /nstatus {
check_status;
access_log off;
#allow SOME.IP.ADD.RESS;
#deny all;
}
3. 查看健康检查状态
通过http://localhost:8080/nstatus 查看,如下图所示,刚开始后端两个节点都处于停止状态,status为down

server number为后端服务器数量,generation为nginx reload的次数
此时,启动其中一台8181,查看nginx的error.log日志,出现如下日志,说明8181这台应用已经处于可检查状态
2018/09/07 14:07:48 [error] 85860#0: enable check peer: 127.0.0.1:8181
刷新nstatus页面,如下图所示,发现8181这台状态变为了up,表示已连接成功

启动8182,与8181过程相同,最终页面状态变为如下,此时两台状态均为up:

Nginx实战-后端应用健康检查的更多相关文章
- Nginx实战系列之功能篇----后端节点健康检查(转)
公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查.目前,nginx对后端节点健康检查的方式主要有3种,这里列出: 1.ngx_http_proxy_m ...
- Nginx实战系列之功能篇----后端节点健康检查
目前,nginx对后端节点健康检查的方式主要有3种,这里列出: 1.ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带) 官网地址: ...
- nginx高性能WEB服务器系列之六--nginx负载均衡配置+健康检查
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
- 23、nginx动态添加nginx_upstream_check_module健康检查模块
nginx_upstream_check_module模块地址:https://github.com/yaoweibin/nginx_upstream_check_module 23.1.说明: 1. ...
- nginx后端节点健康检查
一.nginx健康检查的三种方式 .ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带) 官网地址:http://nginx.org/en/d ...
- Nginx负载均衡之健康检查
负载均衡实例 http{ upstream myserver { server 10.10.10.1 weight=3 max_fails=3 fail_timeout=20s; server 10. ...
- nginx下后端节点realserverweb健康检测模块ngx_http_upstream_check_module
本文章收录做资料使用,非本人原创,特此说明. 公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查.目前,nginx对后端节点健康检查的方式主要有3种,这里列 ...
- Nginx负载均衡中后端节点服务器健康检查的操作梳理
正常情况下,nginx做反向代理,如果后端节点服务器宕掉的话,nginx默认是不能把这台realserver踢出upstream负载集群的,所以还会有请求转发到后端的这台realserver上面,这样 ...
- nginx之健康检查
正常情况下,nginx做反向代理,如果后端节点服务器宕掉的话,nginx默认是不能把这台realserver踢出upstream负载集群的,所以还会有请求转发到后端的这台realserver上面,这样 ...
随机推荐
- 【Spark2.0源码学习】-7.Driver与DriverRunner
承接上一节内容,Client向Master发起RequestSubmitDriver请求,Master将DriverInfo添加待调度列表中(waitingDrivers),下面针对于Dri ...
- JavaScript 数组
JavaScript的Array可以包含任意数据类型,并通过索引来访问每个元素. 要取得Array的长度,直接访问length属性: var arr = [1, 2, 3.14, 'Hello', n ...
- x64 assembler fun-facts(转载)
原文地址 While implementing the x64 built-in assembler for Delphi 64bit, I got to “know” the AMD64/EM64T ...
- Hibernate 基础入门
概述: JDBC:将java和数据库连接的驱动程序加载到项目中,在代码里面,注册驱动,创建链接,创建satement对象,发送并执行sql之类,关闭连接. hibernate :数据持久化一个框架,对 ...
- 使用netstat命令查看端口的使用情况
Windows如何查看端口占用情况操作步骤如下: 开始--运行--cmd 进入命令提示符,输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管 ...
- 调用redis的时候二维码不断刷新的排查
一.背景和现象. 项目是PHP开发的,点击登录的时候就根据随机数生成了二维码,缓存在了redis.用户用微信扫描了二维码分析出需要请求的链接,然后微信浏览器就请求了服务器,服务器通过了随机数认证.正当 ...
- navicat连接linux系统中mysql-错误:10038
输入 命令 netstat -anp(查看所有的进程和端口使用情况) (注:Local Address一列中: 0.0.0.0 表示监听本地所有ip地址,其他电脑是可以访问的,并且修改ip不受影响. ...
- Powershell渗透测试系列–进阶篇
原文来自:https://bbs.ichunqiu.com/thread-41561-1-1.html i春秋作家:anyedt 0×00 引言 经过基础篇的学习我们已经对powershell有了一个 ...
- RSA实现JS前端加密,PHP后端解密
web前端,用户注册与登录,不能直接以明文形式提交用户密码,容易被截获,这时就引入RSA. 前端加密 需引入4个JS扩展文件,jsbn.js.prng4.js.rng.js和rsa.js. <h ...
- OC学习2——C语言特性之函数
1.OC是在C语言的基础上进行扩展的,在OC中直接用C语言进行coding也是可以通过编译的.因此,函数定义的语法格式如下: 函数返回值类型 函数名(形参列表) { //由零条或多条可执行性语句组成的 ...