Apache-2.2
apache 負載均衡器能否找到它的平衡器成員之一是否已關閉?
我需要知道 apache 是否可以明智地自動檢測其中一個 balanerMembers 是否已關閉,從而使其免於服務請求?
PS後端伺服器不會產生心跳。
謝謝
評論:我在 apache 2.4.7 中使用 mod_proxy 我的範例站點配置如下,我的問題是當其中一個後端伺服器無響應時,我的負載均衡器仍然向死掉的後端伺服器發送請求,並且客戶在抱怨。以下配置有什麼問題:
<Proxy balancer://X_Balancer> BalancerMember http://firsthost.sth/ status=-SE BalancerMember http://anotherhost.sth/ status=-SE ProxySet lbmethod=bybusyness </Proxy> <VirtualHost IPofloadbalancer:80> ServerName domainname SSLProxyEngine On Include /*/modsecurity.conf <location /> ProxyPass balancer://X_Balancer/ ProxyPassReverse balancer://X_Balancer/ </location> </VirtualHost>
如果您在 Apache 2.2 中使用 mod_proxy,則配置選項有限,但 Apache 會檢測無響應的 balancerMembers 並將請求分發給任何剩餘的 balancerMembers。
Apache 2.4已經有了更多選項,但對於更高級的選項,您通常最好使用更專業的負載平衡器軟體。
在您發表評論後:這取決於 balancerMember 如何停止響應。如果仍然可以建立連接,但沒有錯誤程式碼並且沒有響應,您可能會從設置
timeout
和failontimeout
選項中受益。<Proxy balancer://X_Balancer> BalancerMember http://firsthost.sth/ status=-SE timeout=5 retry=60 BalancerMember http://anotherhost.sth/ status=-SE timeout=5 retry=60 ProxySet lbmethod=bybusyness failontimeout=on </Proxy>
timeout=5
連接超時(以秒為單位)。Apache httpd 等待 / 發送到後端的數據的秒數。failontimeout=on
如果設置,請求發送到後端后的 IO 讀取超時將強制工作人員進入錯誤狀態。工作程序恢復的行為與其他工作程序錯誤相同。