HAProxy 有一个非常好的状态页面,向我显示后端哪些 Web 服务器处于启动状态,哪些处于关闭状态。我正在尝试调试一些问题,需要知道 nginx 认为哪些服务器处于启动状态,哪些服务器处于关闭状态。是否有一个网页或其他可以为 nginx 配置的东西,以便我在需要此类信息时只需点击一个 URL 即可?
谢谢,Dean
答案1
您可能需要查看以下几个模块:
- https://github.com/anomalizer/ngx_upstream_status(显示服务状态页面的工作人员看到的状态)
- https://github.com/yaoweibin/nginx_upstream_check_module(主动检查上游服务器的状态)
- https://github.com/cep21/healthcheck_nginx_upstreams(与前一个类似,但仅支持 HTTP 1.0 进行状态检查)
- http://nginx.localdomain.pl/wiki/UpstreamFair(带有内置状态页面的负载均衡器)
- ...
答案2
不幸的是,这几乎是不可能的。vanila nginx 在设计上没有上游的全局状态,因此这些信息对于每个工作进程来说都是本地的。
看看这个模块似乎对你有用http://wiki.nginx.org/NginxHttpHealthcheckModule
答案3
虽然这个回复晚了一年,但是 nginx 的 ustats 模块看起来相当令人印象深刻:
https://code.google.com/p/ustats/
移至 githubhttps://github.com/0xc0dec/ustats
不幸的是,1.2 之后似乎没有维护,但可能仍然有效。
找到一个维护良好的叉子https://github.com/nginx-modules/ngx_ustats_module
1.7.2 补丁仍可完美兼容 1.7.4
答案4
我正在寻找 Amazon ELB 提供的简单健康检查。能够在 LB 中添加实例,并具有健康检查机制来删除故障实例。
这就是我的选择。
- https://github.com/yaoweibin/nginx_upstream_check_module
- https://github.com/openresty/lua-resty-upstream-healthcheck
Nginx 还免费提供被动健康检查。它完全符合我的要求,没有花哨的监控、没有权重、没有花哨的路由检查。它会 ping 服务器并检查 200 状态响应。它会以循环方式执行。
fail_timeout 参数设置了在指定次数的尝试失败后仍认为服务器不可用的时间。换句话说,服务器在 fail_timeout 设置的时间间隔内不可用。
max_fails 参数设置在指定时间内应发生的失败尝试次数,仍认为服务器不可用。
例如:
upstream search { server 192.168.215.43:9200 max_fails=3 fail_timeout=10s; server 192.168.171.66:9200 max_fails=3 fail_timeout=10s; }