Nginx 负载均衡 后端 监控检测 nginx_upstream_check_module 模块的使用

在使用nginx 的负载均衡 中,我们通常会使用到 Nginx 自带的 ngx_http_proxy_module 健康检测模块。

ngx_http_proxy_module 自带的 健康检测模块参数如下:

weight   : 轮询权值也是可以用在ip_hash的,默认值为1

max_fails : 允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。

fail_timeout : 有两层含义,一是在 30s 时间内最多容许 2 次失败;二是在经历了 2 次失败以后,30s时间内不分配请求到这台服务器。

backup : 预留的备份机器。当其他所有的非backup机器出现故障的时候,才会请求backup机器,因此这台机器的压力最轻。

max_conns: 限制同时连接到某台后端服务器的连接数,默认为0即无限制。因为queue指令是commercial,所以还是保持默认吧。

proxy_next_upstream : 这个指令属于 http_proxy 模块的,指定后端返回什么样的异常响应时,使用另一个realserver

例子如下:

upstream login {

server 172.16.0.1:8081 max_fails=3 fail_timeout=30s;

nginx_upstream_check_module 是专门提供负载均衡器内节点的健康检查的外部模块,由淘宝的姚伟斌大神开发。tengine 默认自带了这个模块。

check 模块的参数只能出现在upstream中,参数如下:

interval : 向后端发送的健康检查包的间隔。

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

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

timeout : 后端健康请求的超时时间。

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

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

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

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

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

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

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

fastcgi:发送一个fastcgi请求,通过接受解析fastcgi响应来判断后端是否存活

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

check_http_expect_alive 指定HTTP回复的成功状态,默认认为 2XX 和 3XX 的状态是健康的。

这里我们也可以设置其他的。比如 404 403 等。

例子如下:(我们可以两个模块一起使用)

upstream login {

server 172.16.0.1:8081 max_fails=3 fail_timeout=30s;

check interval=5000 rise=2 fall=3 timeout=1000 type=http;

check_http_send "HEAD / HTTP/1.0\r\n\r\n";

check_http_expect_alive http_2xx http_3xx http_4xx;

}

设置好 upstream 以后我们可以在 server 里面设置 status 来查看状态。

location /status {

check_status;

access_log off;

allow 172.16.0.0/16;

deny all;

}

上一篇:POJ- 1094 Sorting It All Out---拓扑排序是否唯一的判断


下一篇:cocos2dx-3.0(21) 移植android平台 说多了都是泪