Nginx对上游服务的心跳检测健康检查
nginx对上游服务器的健康检查默认采用惰性策略,可以集成
nginx_upstream_check_module模块来进行主动健康检查
nginx_upstream_check_module支持tcp心跳和http心跳检测
TCP心跳检查
upstream backend{ server 192.168.61.1:9080 weight=1; server 192.168.61.1:9090 weight=2; check interval=3000 rise=1 fail=3 timeout=2000 type=tcp; }
配置使用TCP进行心跳检测
1.interval 检测间隔时间,此处配置了每间隔三秒检查一次
2.fail 检测失败多少次后,上游服务器被标识为不存货
3.rise 检测成功多少次后,上游服务器被标识为存活,并可以处理请求
4.timeout 检测请求超时时间配置
HTTP心跳检查
upstream backend{ server 192.168.61.1:9080 weight=1; server 192.168.61.1:9090 weight=2; check interval=3000 rise=1 fail=3 timeout=2000 type=http; check_http_send "HEAD /status HTTP/1.0\r\n\r\n"; check_http_expect_alive http_2xx http_3xx; }
HTTP心跳检查需要额外两个配置
1.check_http_send 检查时发送的HTTP请求内容
2.check_http_expect_alive 当上游服务器返回匹配的响应状态时,认为上游服务器存活
需要注意的是,间隔时间不能太短,否则可能因为心跳检查包太多造成上游服务器挂掉,同时要设置合理的超时时间