這裏是我的情況(我的前任設計):Apache代理負載均衡後端服務器故障檢測
服務反向代理稅,一些混合後端Web服務器(Apache的,IIS,Tomcat的,等等)兩個Apache服務器。有一些網站對此我們有多個後端Web服務器,並在這些情況下,我們做這樣的事情:
<Proxy balancer://www.example.com>
BalancerMember http://192.168.1.40:80
BalancerMember http://192.168.1.41:80
</Proxy>
<VirtualHost *:80>
ServerName www.example.com:80
CustomLog /var/log/apache2/www.example.com.log combined
<Location />
Order allow,deny
Allow from all
ProxyPass balancer://www.example.com/
ProxyPassReverse balancer://www.example.com/
</Location>
</VirtualHost>
因此,在這個例子中,我有一個網站(www.example.com)在代理服務器的配置,並且該站點代理到兩個後端服務器192.168.1.40和.41中的一個或另一個。
我正在對此進行評估以確保我們對所有Web服務都具有容錯能力(因爲這個原因,我已將兩臺反向代理服務器放入共享IP羣集中),並且我想確保負載平衡的後端服務器也是容錯的。但我無法搞清楚,如果後端故障檢測(並避免失敗的後端服務器的邏輯)內置於mod_proxy_balancer的模塊...
所以如果192.168.202.40下降,將Apache的檢測它(我會理解它是否首先發送失敗的請求)並自動將所有請求路由到另一個後端192.168.202.41?還是會繼續平衡失敗的後端和運營後端之間的請求?
我發現Apache的文檔mod_proxy和mod_proxy_balancer一些線索,似乎表明發生故障的檢測(「maxattempts =放棄之前的故障切換嘗試的最大數量。」,「failonstatus =單個或逗號分開的HTTP狀態代碼列表,如果設置這將強制工作者在後臺返回列表中的任何狀態代碼時出現錯誤狀態「),但經過幾天的搜索後,我沒有發現任何確鑿的說法, 將(或至少「應該」)檢測後端失敗和恢復。
我會說大多數搜索結果使用AJP協議將流量傳遞到後端服務器,這顯然確實支持故障檢測 - 但我的後端是Apache,IIS,Tomcat和其他服務器的混合體,我相當肯定他們中的許多人不支持AJP。它們也是Windows 2k3/2k8和Linux(主要是Ubuntu Lucid)盒子的混合體,它們運行各種不同的應用程序以滿足各種不同的需求,所以像Backhand和LVS這樣的附加模塊不適合我。
我也試着經驗測試這一功能,通過創建一個新的測試網站是這樣的:
<Proxy balancer://test.example.com>
BalancerMember http://192.168.1.40:80
BalancerMember http://192.168.1.200:80
</Proxy>
<VirtualHost *:80>
ServerName test.example.com:80
CustomLog /var/log/apache2/test.example.com.log combined
LogLevel debug
<Location />
Order allow,deny
Allow from all
ProxyPass balancer://test.example.com/
ProxyPassReverse balancer://test.example.com/
</Location>
</VirtualHost>
其中192.168.1.200是沒有運行任何Web服務器一個假地址,以模擬後端失敗。測試站點對於一堆不同的客戶端計算機來說沒有問題,但即使將LogLevel設置爲調試,我也沒有看到任何記錄的內容,表明它檢測到後端服務器之一已關閉。我希望百分之百地確保我可以將我們的負載均衡後端用於維護(當然是一次一個),而不會影響生產站點。
在這裏遲到的回覆,但這確實幫了我。 我不得不強制升級到2.2.17,因爲普通的Lucid repos只有2.2.14,不支持「failonstatus」參數。暫時添加了natty回購協議,更新至2.2.17,現在一切似乎都奏效了。 謝謝! – 2013-03-26 20:33:42
@David Newcomb我發現的唯一解決方案實際上可行(儘管它很醜)是使用'maxattempts'(請參閱http://serverfault.com/questions/503531/apache2-proxy-tomcat6-prevent-503-error -while起動/ 503539#503539)。 – 2013-04-29 13:15:00