
HAProxy 有一個非常漂亮的狀態頁面,向我顯示後端哪些網路伺服器已啟動以及哪些網路伺服器已關閉。我正在嘗試調試一些問題,需要知道 nginx 認為哪些伺服器已啟動以及哪些伺服器已關閉。是否有網頁或其他內容可以為 nginx 配置,以便我在需要此類資訊時只需點擊 url 即可?
謝謝,迪恩
答案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; }