严格来说,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实战-后端应用健康检查的更多相关文章

  1. Nginx实战系列之功能篇----后端节点健康检查(转)

    公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查.目前,nginx对后端节点健康检查的方式主要有3种,这里列出:   1.ngx_http_proxy_m ...

  2. Nginx实战系列之功能篇----后端节点健康检查

    目前,nginx对后端节点健康检查的方式主要有3种,这里列出:   1.ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带)    官网地址: ...

  3. nginx高性能WEB服务器系列之六--nginx负载均衡配置+健康检查

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  4. 23、nginx动态添加nginx_upstream_check_module健康检查模块

    nginx_upstream_check_module模块地址:https://github.com/yaoweibin/nginx_upstream_check_module 23.1.说明: 1. ...

  5. nginx后端节点健康检查

    一.nginx健康检查的三种方式 .ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带) 官网地址:http://nginx.org/en/d ...

  6. Nginx负载均衡之健康检查

    负载均衡实例 http{ upstream myserver { server 10.10.10.1 weight=3 max_fails=3 fail_timeout=20s; server 10. ...

  7. nginx下后端节点realserverweb健康检测模块ngx_http_upstream_check_module

    本文章收录做资料使用,非本人原创,特此说明. 公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查.目前,nginx对后端节点健康检查的方式主要有3种,这里列 ...

  8. Nginx负载均衡中后端节点服务器健康检查的操作梳理

    正常情况下,nginx做反向代理,如果后端节点服务器宕掉的话,nginx默认是不能把这台realserver踢出upstream负载集群的,所以还会有请求转发到后端的这台realserver上面,这样 ...

  9. nginx之健康检查

    正常情况下,nginx做反向代理,如果后端节点服务器宕掉的话,nginx默认是不能把这台realserver踢出upstream负载集群的,所以还会有请求转发到后端的这台realserver上面,这样 ...

随机推荐

  1. 选择困难症的福音——团队Scrum冲刺阶段-Day 1领航

    选择困难症的福音--团队Scrum冲刺阶段-Day 1领航 各个成员在 Alpha 阶段认领的任务 小组成员 分工 任务量 严域俊 完成小游戏接口部分.小游戏编写部分 21 吴恒佚 决策判断部分.小游 ...

  2. AutoCAD开发1---获取块属性

    Private Sub CommandButton1_Click() Dim pEntity As AcadObject Dim pBlock As AcadBlockReference Dim pP ...

  3. Effective C++ 笔记:条款 30 inline

    30 : Understand the ins and outs of inlining 1 inline申请书 1.1 类内部实现函数包含隐藏的inline申请 class Human { publ ...

  4. 使用itext生成pdf的,各种布局

    代码如下,jar包为itext.jar,itextAsia.jar,最好都是最新的 :2张图片也在最后贴出,把图片放到D盘可以直接生成制定格式的pdf. 最后生成的pdf如下: 代码如下: packa ...

  5. uva1673(后缀自动机)

    后缀自动机还是只会打板子,已经知道它是个什么东西了,但还是和它的构造联系不起来..先背板子吧. 后缀自动机有一个很好的特性就是可以涵盖所有不重复的子串,我们利用这一点在它上面dp就行了: 代码参考:h ...

  6. java 基础--理论知识

    变量分:局部变量全局变量-----------------------------------------------------变量三大特性[标识符,初始值,作用域]定义变量:语法:[访问修饰符] ...

  7. noip第19课资料

  8. java基础-三元运算符

    1.三元运算符的格式 /* 三元运算符 (条件表达式)?表达式1:表达式2; 如果条件为true,整个表达式结果是表达式1: 如果条件为false,整个表达式结果是表达式2: 注意:三元运算符不能单独 ...

  9. 你应该掌握的C++ RAII手法:Scopegaurd

    C++作为一门Native Langueages,在C++98/03时代,资源管理是个大问题.而内存管理又是其中最大的问题.申请的堆内存需要手动分配和释放,为了确保内存正确释放,一般原则是" ...

  10. WCF双工通信单工通信

    1.单工模式 单向通信,指通信只有一个方向进行,即从客户端流向服务,服务不会发送响应,而客户端也不会期望会有响应.这种情况下,客户端发送消息,然后继续执行 运行后报错: 2.双工模式 双工模式的特点是 ...