支援動態後端成員資格的 HTTP 負載平衡器?

支援動態後端成員資格的 HTTP 負載平衡器?

我想在許多後端應用程式伺服器前面部署一個反向代理/HTTP 負載平衡器。問題在於後端集可能會隨著時間的推移而改變,並且可能會動態建立新的應用程式伺服器(因此無法事先知道總集)。這意味著類似,它可以針對已知的一組後端,不是選項。

我能想到的最好的方法是prg RewriteMapApache 與代理RewriteRule表達式結合的支援。我編寫了一個簡單的客戶端/伺服器機制,供應用程式伺服器向前端「註冊」自己,以及一個RewriteMap從此列表中選擇後端的程式。可以用,但是有味道真的哈克。

這似乎是一個相當常見的場景(有如此多的雲端服務供應商,可以輕鬆按需啟動新伺服器)。其他人是如何解決這個問題的?您只是使用商業負載平衡器嗎?每個人都是自己拼湊一些東西嗎?

答案1

Apache 的內建(好吧,已提供)mod_proxy_balancer 模組提供了大部分功能,包括單獨加權以及成員後端的受控合併和退出。

還有一個平衡器管理器應用程式可以在運行時可視化和控制此行為。

請參閱此處以了解詳細資訊:http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html

答案2

nginx 不支援開箱即用,但這很容易實現。我這樣做了,下面詳細解釋

1) 為上游建立單獨的設定檔(upstreams.conf) 並從主nginx.conf 中包含它們2) 現在您可以手動或單獨編輯此文件,我編寫了一個簡單的perl 腳本來管理此檔案新增/刪除文字帶有上游描述的行。 3) 向主 nginx 進程發送 HUP 訊號以發出優雅的重新載入 4) 已經實作了一些 Web UI 來控制這些操作並提供運行狀況檢查,但它不是 FOSS

有爭議的是有幾個3-side模組實現了健康檢查和管理接口,請看一下

http://wiki.nginx.org/HttpHealthcheckModule https://bitbucket.org/benjaminws/nginxmgr/ https://github.com/FRiCKLE/ngx_supervisord

我不確定,但可能 haproxy 也有相同的功能。

答案3

幾乎所有商業負載平衡解決方案(F5、Citrix、A10 等)都具有組態管理API(基於REST 或SOAP),可以輕鬆地利用它們來實現此目的- 伺服器可以將自己添加到相關池中,作為其啟動路由的一部分,並在關閉時自行刪除。如果伺服器崩潰,負載平衡器會因健康檢查失敗而將其標記為down。

相關內容