码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx负载均衡监测节点状态

时间:2015-12-31 07:17:26      阅读:3396      评论:0      收藏:0      [点我收藏+]

标签:ngx_http_upstream_check_module

Nginx负载均衡监测节点状态

v插件(ngx_http_upstream_check_module

  • upstream_check_module介绍:

该模块可以为Tengine提供主动式后端服务器健康检查的功能。

该模块在Tengine-1.4.0版本以前没有默认开启,它可以在配置编译选项的时候开启:./configure--with-http_upstream_check_module

  • upstream_check_module官方文档

http://tengine.taobao.org/document_cn/http_upstream_check_cn.html

  • upstream_check_module下载地址

https://github.com/yaoweibin/nginx_upstream_check_module

  •  nginx打上补丁的安装

unzip nginx_upstream_check_module-master.zip
useradd nginx -s /sbin/nologin -M
tar xf nginx-1.9.2.tar.gz
cd nginx-1.9.2
patch  -p0</root/nginx_upstream_check_module-master/check_1.9.2+.patch
./configure \
--prefix=/application/nginx-1.9.2 \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_stub_status_module \
--add-module=/root/nginx_upstream_check_module-master
make
make install
ln -s /application/nginx-1.9.2//application/nginx
  • patch参数说明

-p0 选项要从当前目录查找目的文件(夹)

-p1 选项要忽略掉第一层目录,从当前目录开始查找。

在这里以实例说明:

old/modules/pcitable

如果使用参数-p0,那就表示从当前目录找一个叫做old的文件夹,在它下面寻找modules下的pcitable文件来执行patch操作。

如果使用参数-p1,那就表示忽略第一层目录(即不管old),从当前目录寻找modules的文件夹,在它下面找pcitable。这样的前提是当前目录必须为modules所在的目录。

  • upstream_check_module语法

Syntax: checkinterval=milliseconds [fall=count] [rise=count] [timeout=milliseconds][default_down=true|false] [type=tcp|http|ssl_hello|mysql|ajp] [port=check_port]

Default: 如果没有配置参数,默认值是:interval=30000 fall=5rise=2 timeout=1000 default_down=true type=tcp

Context: upstream

指令后面的参数意义是:

interval:向后端发送的健康检查包的间隔。单位是毫秒。

fall(fall_count): 如果连续失败次数达到fall_count,服务器就被认为是down。

rise(rise_count): 如果连续成功次数达到rise_count,服务器就被认为是up。

timeout: 后端健康请求的超时时间。单位是毫秒。

default_down: 设定初始时服务器的状态,如果是true,就说明默认是down的,如果是false,就是up的。默认值是true,也就是一开始服务器认为是不可用,要等健康检查包达到一定成功次数以后才会被认为是健康的。

type:健康检查包的类型,现在支持以下多种类型

tcp:简单的tcp连接,如果连接成功,就说明后端正常。

ssl_hello:发送一个初始的SSL hello包并接受服务器的SSL hello包。

http:发送HTTP请求,通过后端的回复包的状态来判断后端是否存活。

mysql: 向mysql服务器连接,通过接收服务器的greeting包来判断后端是否存活。

ajp:向后端发送AJP协议的Cping包,通过接收Cpong包来判断后端是否存活。

port: 指定后端服务器的检查端口。你可以指定不同于真实服务的后端服务器的端口,比如后端提供的是443端口的应用,你可以去检查80端口的状态来判断后端健康状况。默认是0,表示跟后端server提供真实服务的端口一样。该选项出现于Tengine-1.4.0。

例:

http {
    upstream cluster1 {
        # simple round-robin
        server 192.168.0.1:80;
        server 192.168.0.2:80;
 
        check interval=3000 rise=2 fall=5timeout=1000 type=http;
        check_http_send "HEAD /HTTP/1.0\r\n\r\n";
        check_http_expect_alive http_2xxhttp_3xx;
    }
 
    upstream cluster2 {
        # simple round-robin
        server 192.168.0.3:80;
        server 192.168.0.4:80;
 
        check interval=3000 rise=2 fall=5timeout=1000 type=http;
        check_keepalive_requests 100;
        check_http_send "HEAD /HTTP/1.1\r\nConnection: keep-alive\r\n\r\n";
        check_http_expect_alive http_2xxhttp_3xx;
    }
 
    server {
        listen 80;
 
        location /1 {
            proxy_pass http://cluster1;
        }
 
        location /2 {
            proxy_pass http://cluster2;
        }
 
        location /status {
            check_status;
 
            access_log   off;
            allow SOME.IP.ADD.RESS;
            deny all;
        }
    }
}


  • 配置

http {
    upstream dynamic_pools {
       server192.168.10.30;
       server192.168.10.31;
       check interval=3000 rise=2 fall=5timeout=1000;
# interval检测间隔时间,单位为毫秒,rsie请求2次正常的话,标记此realserver的状态为up,fall表示请求5次都失败的情况下,标记此realserver的状态为down,timeout为超时时间,单位为毫秒。
    }
    server {
        listen       80;
        server_name  www.etiantian.org;
        location / {
           proxy_pass http://dynamic_pools;
            includeproxy.conf;
        }
        location /nstatus {
            check_status;
            access_log off;  #不记录访问日志
            allow192.168.10.0/24;  #允许的ip地址(段)
            deny all;  #除过允许的ip地址(段)拒绝所有ip访问
       }
    }
}


  • 浏览器访问

技术分享



本文出自 “半夏、紫苏” 博客,请务必保留此出处http://shmilyjinian.blog.51cto.com/8279182/1730196

Nginx负载均衡监测节点状态

标签:ngx_http_upstream_check_module

原文地址:http://shmilyjinian.blog.51cto.com/8279182/1730196

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!