nginx-healthcheck-module
- 博客链接
- GitHub链接
用于 Nginx 1.26+ 的主动 upstream 健康检查模块。
本项目由 Akvicor 维护,修改自
yaoweibin/nginx_upstream_check_module。
当前版本保留主动健康检查模型,适配新版 Nginx upstream 内部结构,并聚焦于http与streamupstream 的 TCP/UDP 检查。
因原项目无法适配新版本Nginx, 会导致检测异常,TIME_WAIT数量激增等各种问题, 因此这个版本中剔除了tcp/udp检查外的其他上游检查功能,增加了延迟统计,增加了TCP复用。
功能
- 支持 Nginx 1.26+,仓库内提供对应 upstream 补丁。
- 支持主动
type=tcp和type=udp健康检查。 - 支持
httpupstream 和streamupstream。 - 可在 Nginx upstream 负载均衡过程中跳过不健康后端。
- 状态接口支持
html、csv、json、prometheus输出。 - 状态输出中包含检查延迟统计:最后一次、平均、最小、最大延迟,单位毫秒。
- 支持 TCP 健康检查连接复用:
reuse=on。
原项目中的 HTTP、FastCGI、MySQL、AJP、SSL hello 等七层检查,在当前维护版本中不再支持。
兼容性
- 目标 Nginx 版本:1.26+。
- 模块必须通过
--add-module静态编译。 - 暂不支持动态模块加载。
stream健康检查要求 Nginx 编译时启用--with-stream。
仓库内补丁会为 Nginx 内置 HTTP 和 Stream upstream 负载均衡器添加主动健康检查过滤,
包括 round robin、hash、consistent hash、适用场景下的 ip_hash,以及 least_conn。
安装
gitclone https://github.com/nginx/nginx.gitgitclone https://github.com/Akvicor/nginx-healthcheck-module.gitcdnginxgitcheckout release-1.26.3gitapply../nginx-healthcheck-module/nginx_healthcheck_for_nginx_1.26+.patch ./auto/configure --with-stream --add-module=../nginx-healthcheck-modulemakemakeinstall请保留你当前 Nginx 构建所需的其他 configure 参数。如果需要stream {}健康检查,
需要保留--with-stream。
已编译好的debian源
先导入GPG密钥,用于验证包
curl-fsSLhttps://cdn.ksyaki.com/debian/nginx-team/public-key.asc\|gpg--dearmor--batch--yes-o/usr/share/keyrings/akvicor.gpgDebian 13
tee/etc/apt/preferences.d/99-akvicor-nginx.pref>/dev/null<<'EOF' Package: nginx nginx-* libnginx-mod-* Pin: origin cdn.ksyaki.com Pin-Priority: 1001 EOFecho"deb [signed-by=/usr/share/keyrings/akvicor.gpg] https://cdn.ksyaki.com/debian/nginx-team trixie main"\|tee/etc/apt/sources.list.d/akvicor-nginx.listaptupdateaptinstallnginxDebian 12
tee/etc/apt/preferences.d/99-akvicor-nginx.pref>/dev/null<<'EOF' Package: nginx nginx-* libnginx-mod-* Pin: origin cdn.ksyaki.com Pin-Priority: 1001 EOFecho"deb [signed-by=/usr/share/keyrings/akvicor.gpg] https://cdn.ksyaki.com/debian/nginx-team bookworm main"\|tee/etc/apt/sources.list.d/akvicor-nginx.listaptupdateaptinstallnginx