nginx 实现后端节点健康检查
nginx 有自带模块针对后端节点的健康检查,那就是nginx_upstream_check_module
如图:
安装和使用
1.下载
https://github.com/yaoweibin/nginx_upstream_check_module/archive/master.zip
2.解压安装包
unzip nginx_upstream_check_module-master.zip
3.解压至源码
cd ./nginx-1.6.2
patch -p1 < ../nginx_upstream_check_module-master/check_1.5.12+.patch
成功后提示
patching file src/http/modules/ngx_http_upstream_ip_hash_module.c
patching file src/http/modules/ngx_http_upstream_least_conn_module.c
patching file src/http/ngx_http_upstream_round_robin.c
patching file src/http/ngx_http_upstream_round_robin.h
4.重新编译安装nginx,使用add-module 将这个第三方模块安装进去
./configure --prefix=/usr/nginx-1.6.2/ --add-module=../nginx_upstream_check_module-master/
make && make install
安装完成,开始配置使用
check部分就是check模块的语法
check interval=milliseconds [fall=count] [rise=count]
[timeout=milliseconds] [default_down=true|false]
[type=tcp|http|ssl_hello|mysql|ajp|fastcgi]
interval:必要参数,检查请求的间隔时间。
fall:当检查失败次数超过了fall,这个服务节点就变成down状态。
rise:当检查成功的次数超过了rise,这个服务节点又会变成up状态。
timeout:请求超时时间,超过等待时间后,这次检查就算失败。
default_down:后端服务器的初始状态。默认情况下,检查功能在Nginx启动的时候将会把所有后端节点的状态置为down,检查成功后,在置为up。
type:这是检查通信的协议类型,默认为http
check_http_send http_packet
http_packet的默认格式为:"GET / HTTP/1.0\r\n\r\n"
check_http_send设置,这个设置描述了检查模块在每次检查时,向后端节点发送什么样的信息
check_http_expect_alive [ http_2xx | http_3xx | http_4xx | http_5xx ]
配置完成后
nginx -t 检查配置文件是否可用
检查完成后reload
nginx -s reload