• 技术文章 >后端开发 >php教程

    nginx利用第三方模块nginx_upstream_check_module来检查后端服务器的健康情况

    2016-07-28 08:28:37原创449
    大家都知道,前段nginx做反代,如果后端服务器宕掉的话,nginx是不能把这台realserver提出upstream的,所以还会有请求转发到后端的这台realserver上面去,虽然nginx可以在localtion中启用proxy_next_upstream来解决返回给用户的错误页面,方法在:http://www.linuxyan.com/web-server/67.html,大家可以参考一下,但这个还是会把请求转发给这台服务器的,然后再转发给别的服务器,这样就浪费了一次转发,这次借助与淘宝技术团队开发的nginx模快nginx_upstream_check_module来检测后方realserver的健康状态,如果后端服务器不可用,则所以的请求不转发到这台服务器。
    首先去这里下载nginx的模块https://github.com/yaoweibin/nginx_upstream_check_module
    下面是nginx打上模块补丁的安装

    $ wget ‘http://nginx.org/download/nginx-1.0.14.tar.gz’
    $ tar -xzvf nginx-1.0.14.tar.gz
    $ cd nginx-1.0.14/
    $ patch -p1 < /path/to/nginx_http_upstream_check_module/check.patch
    注:因nginx版本更新,1.2以上版本的nginx,补丁为check_1.2.1+.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.2台realserver都正常的情况下

    2.一台realserver故障的情况下


    以上就介绍了 nginx利用第三方模块nginx_upstream_check_module来检查后端服务器的健康情况,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:php个人博客 谈谈PHP继承的那些事,我的个人见解 下一篇:Think PHPTP框架的基本使用 二
    大前端线上培训班

    相关文章推荐

    • 怎样去搞定PHP类的继承?(总结分享)• 带你分清类中的构造函数与析构函数• 你知道这个PHP命令行选项解析库(pflag)吗?• PHP中如何才能将时间日期格式化?怎么计算时间差?• 一定搞得懂PHP中如何添加图片水印

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网