如何通过Nginx的Upstream-Check机制监控并实现微服务节点的平稳下线?
- 内容介绍
- 文章标签
- 相关推荐
本文共计948个文字,预计阅读时间需要4分钟。
在默认编译的Nginx中,使用如`check`、`check_http_send`等指令将会报错:
验证方式很简单:
nginx -V 2>&1 | grep -o 'upstream_check'
没输出就说明没启用。临时补救只有两个选择:自己编译带模块的 Nginx,或改用官方健康检查(health_check 指令,仅限 Plus 版本)或基于 proxy_next_upstream 的简易探测(无主动探活能力)。
配置 Upstream-Check 时必须关闭 keepalive 冲突
常见错误是把 keepalive 和 check 放在同一 upstream 块里,例如:
upstream backend { server 10.0.1.10:8080; check interval=3 rise=2 fall=3 timeout=1; keepalive 32; }
这会导致 Nginx 启动失败,报错:keepalive cannot be used with health check。原因是 upstream_check_module 自己维护连接池,与官方 keepalive 机制不兼容。
本文共计948个文字,预计阅读时间需要4分钟。
在默认编译的Nginx中,使用如`check`、`check_http_send`等指令将会报错:
验证方式很简单:
nginx -V 2>&1 | grep -o 'upstream_check'
没输出就说明没启用。临时补救只有两个选择:自己编译带模块的 Nginx,或改用官方健康检查(health_check 指令,仅限 Plus 版本)或基于 proxy_next_upstream 的简易探测(无主动探活能力)。
配置 Upstream-Check 时必须关闭 keepalive 冲突
常见错误是把 keepalive 和 check 放在同一 upstream 块里,例如:
upstream backend { server 10.0.1.10:8080; check interval=3 rise=2 fall=3 timeout=1; keepalive 32; }
这会导致 Nginx 启动失败,报错:keepalive cannot be used with health check。原因是 upstream_check_module 自己维护连接池,与官方 keepalive 机制不兼容。

