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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

   }




以上是关于Nginx 负载均衡 后端 监控检测 nginx_upstream_check_module 模块的使用的主要内容,如果未能解决你的问题,请参考以下文章

Keepalived+Nginx实现负载均衡高可用

NGINX 负载均衡监测节点状态 之 十一

配置 Nginx 负载均衡监测节点状态

戏说Nginx

4keepalived高可用nginx负载均衡

Nginx+Tomcat——配置负载均衡和动静分离(实战!)