Apache-2.2

apache 負載均衡器能否找到它的平衡器成員之一是否已關閉?

  • November 15, 2017

我需要知道 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 如何停止響應。如果仍然可以建立連接,但沒有錯誤程式碼並且沒有響應,您可能會從設置timeoutfailontimeout選項中受益。

<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 讀取超時將強制工作人員進入錯誤狀態。工作程序恢復的行為與其他工作程序錯誤相同。

引用自:https://serverfault.com/questions/609550