nginx对后端节点的健康检查

最近梳理了下手头的业务,发现nginx层配有几种健康检查方式,在这里做个总结,记录下nginx做负载均衡时对后端节点的健康检查方式:

1、ngx_http_proxy_module 模块中的下面三个指令(nginx自带模块)

proxy_connect_timeout 60s

设置与后端服务器建立连接的超时时间。应该注意这个超时一般不可能大于75秒

proxy_read_timeout 60s

定义从后端服务器读取响应的超时。此超时是指相邻两次读操作之间的最长时间间隔,而不是整个响应传输完成的最长时间。如果后端服务器在超时时间段内没有传输任何数据,连接将被关闭。

proxy_next_upstream error  timeout;

指定在何种情况下一个失败的请求应该被发送到下一台后端服务器

2、ngx_http_upstream_module模块中的server指令 (nginx自带模块)

采用这个方式需要注意的一点是,如果后端有不健康节点,负载均衡器依然会先把该请求转发给该不健康节点,然后再转发给别的节点,这样就会浪费一次转发。

范例:

upstream name {

server 10.0.0.1:80 max_fails=1 fail_timeout=10s;

server 10.0.0.2:80 max_fails=1 fail_timeout=10s;

}

PS:下面是每个指令的介绍:

max_fails=number  # 设定Nginx与服务器通信的尝试失败的次数。在fail_timeout参数定义的时间段内,如果失败的次数达到此值,Nginx就认为服务器不可用。在下一个fail_timeout时间段,服务器不会再被尝试。

fail_timeout=time   # 设定服务器被认为不可用的时间段以及统计失败尝试次数的时间段。在这段时间中,服务器失败次数达到指定的尝试次数,服务器就被认为不可用。默认情况下,该超时时间是10秒。

weight=number    #权重值

backup    #备份机的标志

down      #标明改节点不可用

ip_hash;    #会话保持功能,将客户端的多次请求定向到组内的同一台服务器,保障C/S之间建立稳定的会话

keepalive connections; #控制网络连接的保持功能

3、nginx_upstream_check_module模块(非nginx自带)

这个是淘宝技术团队开发的nginx_upstream_check_module,是一个专业提供负载均衡器内节点的健康检查的。如果后端节点不可用,则所以的请求就不会转发到该节点上。使用这种检查方式,通过补丁的方式来添加该模块到自己的 nginx 中。(添加方式此处忽略)

范例:

upstream name {

server 10.0.0.1:80;

server 10.0.0.2:80;

check interval=300 rise=2 fall=5 timeout=1000 type=tcp port81;

}

上面 配置的意思是,对name这个负载均衡条目中的所有节点,每个300毫秒检测一次,请求2次正常则标记 realserver状态为up,如果检测 5 次都失败,则标记 realserver的状态为down,超时时间为1秒。

健康检查包的类型是tcp类型,端口是81。

时间: 2024-11-05 12:31:57

nginx对后端节点的健康检查的相关文章

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

本文章收录做资料使用,非本人原创,特此说明. 公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查.目前,nginx对后端节点健康检查的方式主要有3种,这里列出: 1.ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带) 官网地址:http://nginx.org/cn/docs/http/ngx_http_proxy_module.html#proxy_next_upstream 2.nginx

如何利用nginx_upstream_check_module-master对nginx的后端机器进行健康状态检查

用nginx做前端反向代理,如果后端服务器宕掉的话,nginx是不会把这台realserver踢出upstream的,还会把请求转发到后端的这台realserver上面.所以当某台机器出现问题时,我们会看到nginx的日志会有一段转发失败然后转发正常的日志.这次借助与淘宝技术团队开发的nginx模快nginx_upstream_check_module来检测后方realserver的健康状态,如果后端服务器不可用,则会将其踢出upstream,所有的请求不转发到这台服务器.当期恢复正常时,将其加

openrestry 后端服务upstream 健康检查配置

openrestry 后端服务upstream 健康检查配置 http { # 在http模块中增加以下配置 lua_package_path "/usr/local/openresty/lualib/resty/?.lua;/usr/local/openresty/lualib/resty/upstream/?.lua;;"; lua_shared_dict healthcheck 1m; lua_socket_log_errors off; init_worker_by_lua_b

jetty 在请求URI里传入非法字符,jetty会断开连接,导致nginx认为该节点不健康

jetty 在请求URI里传入非法字符(如直接一个16进制字节A1,非%A1,用抓包TCP工具发送),jetty抛出如下错误 8.1.0.RC1. 8.1.18.v20150929. 9.3好的 如果前面代理用nginx的proxy_next_upstream,会认为该节点失效,如果请求刷的厉害,有可能所有节点都被刷成不健康状态:导致nginx返回给用户502: org.eclipse.jetty.util.Utf8Appendable$NotUtf8Exception: Not valid U

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

公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查.目前,nginx对后端节点健康检查的方式主要有3种,这里列出: 1.ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带)     官网地址:http://nginx.org/cn/docs/http/ngx_http_proxy_module.html#proxy_next_upstream 2.nginx_upstream_check_mod

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

公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查.目前,nginx对后端节点健康检查的方式主要有3种,这里列出:   1.ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带)    官网地址:http://nginx.org/cn/docs/http/ng ... proxy_next_upstream2.nginx_upstream_check_module模块    官网网址:https:

nginx backend 健康检查

ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带) 严格来说,nginx自带是没有针对负载均衡后端节点的健康检查的,但是可以通过默认自带的ngx_http_proxy_module 模块和ngx_http_upstream_module模块中的相关指令来完成当后端节点出现故障时,自动切换到健康节点来提供访问. 这里列出这两个模块中相关的指令:ngx_http_proxy_module 模块中的 proxy_connect_timeout

nginx自动检测后台服务器健康状态

转自http://www.iyunv.com/thread-38535-1-1.html 公司业务线上对后端节点的健康检查是通过nginx_upstream_check_module模块做的,这里我将分别介绍这三种实现方式以及之间的差异性. 一.ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带)       严格来说,nginx自带是没有针对负载均衡后端节点的健康检查的,但是可以通过默认自带的ngx_http_proxy_module

【转】nginx 主动式后端服务器健康检查

原文链接  http://tengine.taobao.org/document_cn/http_upstream_check_cn.html ngx_http_upstream_check_module 该模块可以为Tengine提供主动式后端服务器健康检查的功能. 该模块在Tengine-1.4.0版本以前没有默认开启,它可以在配置编译选项的时候开启:./configure --with-http_upstream_check_module Examples http { upstream