Nginx实战之--后端节点健康检查
2015-07-04 23:38
741 查看
公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查。目前,nginx对后端节点健康检查的方式主要有3种,这里列出:
一、ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带)
严格来说,nginx自带是没有针对负载均衡后端节点的健康检查的,但是可以通过默认自带的ngx_http_proxy_module 模块和ngx_http_upstream_module模块中的相关指令来完成当后端节点出现故障时,自动切换到健康节点来提供访问。
这里列出这两个模块中相关的指令:
ngx_http_proxy_module 模块中的 proxy_connect_timeout 指令、proxy_read_timeout指令和proxy_next_upstream指令
范例如下:
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_module模块 官网网址:https://github.com/yaoweibin/nginx_upstream_check_module 3、ngx_http_healthcheck_module模块 官网网址:http://wiki.nginx.org/NginxHttpHealthcheckModule公司业务线上对后端节点的健康检查是通过nginx_upstream_check_module模块做的,这里我将分别介绍这三种实现方式以及之间的差异性。
一、ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带)
严格来说,nginx自带是没有针对负载均衡后端节点的健康检查的,但是可以通过默认自带的ngx_http_proxy_module 模块和ngx_http_upstream_module模块中的相关指令来完成当后端节点出现故障时,自动切换到健康节点来提供访问。
这里列出这两个模块中相关的指令:
ngx_http_proxy_module 模块中的 proxy_connect_timeout 指令、proxy_read_timeout指令和proxy_next_upstream指令
语法: proxy_connect_timeout time; 默认值: proxy_connect_timeout 60s; 上下文: http, server, location设置与后端服务器建立连接的超时时间。应该注意这个超时一般不可能大于75秒。
语法: proxy_read_timeout time; 默认值: proxy_read_timeout 60s; 上下文: http, server, location定义从后端服务器读取响应的超时。此超时是指相邻两次读操作之间的最长时间间隔,而不是整个响应传输完成的最长时间。如果后端服务器在超时时间段内没有传输任何数据,连接将被关闭。
语法: proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 |http_404 | off ...; 默认值: proxy_next_upstream error timeout; 上下文: http, server, location指定在何种情况下一个失败的请求应该被发送到下一台后端服务器:
error # 和后端服务器建立连接时,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,出现错误 timeout # 和后端服务器建立连接时,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,出现超时 invalid_header # 后端服务器返回空响应或者非法响应头 http_500 # 后端服务器返回的响应状态码为500 http_502 # 后端服务器返回的响应状态码为502 http_503 # 后端服务器返回的响应状态码为503 http_504 # 后端服务器返回的响应状态码为504 http_404 # 后端服务器返回的响应状态码为404 off # 停止将请求发送给下一台后端服务器只有在没有向客户端发送任何数据以前,将请求转给下一台后端服务器才是可行的。也就是说,如果在传输响应到客户端时出现错误或者超时,这类错误是不可能恢复的。
范例如下:
http { proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header; }ngx_http_upstream_module模块中的server指令
语法: server address [parameters]; 默认值: — 上下文: upstream范例如下:
upstream name { server 10.1.1.110:8080 max_fails=1 fail_timeout=10s; server 10.1.1.122:8080 max_fails=1 fail_timeout=10s; }下面是每个指令的介绍:
相关文章推荐
- nginx-php
- nginx配置详解
- saltstack之nginx部署
- nginx事件 epoll
- nginx命令:启动,停止及命令参数详解
- nginx apache
- nginx 仅允许某个IP段访问
- Nginx+Keepalived实现Web服务器负载均衡
- ubuntu_14.04.2安装配置laravel+nginx
- Ubuntu nginx 配置404错误页面
- nginx虚拟目录(alias与root的区别)
- Nginx Upstream Keepalive 分析
- Nginx 与 Lua
- Nginx+lua_Nginx+GraphicsMagick来实现实时缩略图(已验证)
- NGINX + LUA实现复杂的控制
- nginx lua
- Nginx配置
- 503 Service Temporarily Unavailable 解决办法-nginx
- CentOS7.0安装Nginx 1.7.4
- nginx 配置详解