Nginx作为一款强大的反向代理服务和负载均衡服务,具有高并发、低消耗、配置简单等特点,而健康检查,则是为了保障nginx能够准确的转发到后端的可用服务。
Nginx健康检查分为被动探测与主动探测两种,顾名思义,被动探测指nginx被动的发起探测;而主动探测则是在固定时间(可配置)主动发起探测,更具灵活性。
被动健康检查关键参数max_fails与fail_timeout,官方描述如下:
max_fails:在配置的fail_timeout期间,最大的连接错误数,默认配置为1,如配置为0则表示不启用探测,不管后端服务是否异常仍然会转发,单位次数
fail_timeout:服务被认为不可用的的时间,单位为s
如下配置:在3s内中如果有1次连接失败,则表示该节点不可用,将该节点下线3s后才会再次探测
upstream personal_1 { server ip:port max_fails=1 fail_timeout=3; server ip:port max_fails=1 fail_timeout=3;} server { listen 80 ; server_name _; location ~ / { proxy_pass http:// personal_1; } }
模拟每秒1次请求,可以发现192.168.125.133服务在17:42探测异常,此时同步转发至IP1服务,同时17:43-17:46将IP2剔除下线,17:47开始重新探测。
主动探测关键参数interval、rise、fall、timeout、type、check_http_send、check_http_expect_alive:
interval:健康检查时间,单位ms
rise:检查成功次数,达到该值则认为服务正常,加入负载
fall:检查失败次数,达到该值则认为服务异常,剔除下线
timeout:检查超时时间,单位ms
type:检查类型,支持tcp/http等多种协议类型
check_http_send:http探测发送的请求,支持自定义接口,默认:"GET / HTTP/1.0rnrn"
check_http_expect_alive:http探测状态码,除了该配置上的其他状态码均认为服务不可用
如下配置:每1s发起主动探测,如出现1次失败,则认为该节点不可用,剔除下线,检验返回码2xx/3xx则认为服务可用。
upstream personal { server IP1; server IP2; check interval=1000 rise=1 fall=1 timeout=1000 type=http default_down=false; check_http_send "GET / HTTP/1.0rnrn"; check_http_expect_alive http_2xx http_3xx; } server { listen 80 ; server_name _; location ~ / { proxy_pass http:// personal; } }
如下每秒探测1次,返回非2xx或3xx,服务异常,剔除下线,多次均未向该服务转发。
转自
Nginx健康检查 - 知乎
https://zhuanlan.zhihu.com/p/652813977
相关知识
nginx配置后端服务健康检查 nginx健康检查模块
nginx之健康检查
Nginx被动健康检查和主动健康检查
nginx中健康检查(health
Nginx
Pod的健康检查机制
docker容器的health健康状态检查【转】
负载均衡SLB四层(TCP/UDP)健康检查出现异常的解决方法
[云原生] Kubernetes(k8s)健康检查详解与实战演示(就绪性探针 和 存活性探针)
Docker健康检查与状态监控怎么实现
网址: Nginx健康检查【转】 https://m.trfsz.com/newsview1144093.html