ApacheがbalanerMembersの1つがダウンしているかどうかを賢明かつ自動的に検出し、その結果、リクエストの処理を免除できるかどうかを知る必要がありますか?
P.S.バックエンドサーバーはハートビートを生成しません。
ありがとう
コメント:Apache 2.4.7でmod_proxyを使用しています。サンプルサイトの構成は次のようになっています。問題は、バックエンドサーバーの1つが応答しなくなったとき、ロードバランサーがまだデッドバックエンドサーバーにリクエストを送信していることです。クライアントは不平を言っています。以下の設定の何が問題になっていますか?
<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 にはすでにいくつかのオプションがありますが、より高度なオプションの場合は、通常、より特殊なロードバランサーソフトウェアを使用することをお勧めします。
コメントの後:バランサーメンバーがどのように応答を停止するかによって異なります。それでも接続を確立できるが、エラーコードがなく、応答がない場合は、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
接続タイムアウト(秒単位)。 Apachehttpdが/からバックエンドに送信されるデータを待機する秒数。failontimeout=on
設定されている場合、IO要求がバックエンドに送信された後の読み取りタイムアウトにより、ワーカーは強制的にエラー状態になります。ワーカーの回復は他のワーカーエラーと同じように動作します。
BalancerMember http://firsthost.sth/ connectiontimeout = 5 try = 5 ping = 2
BalancerMember http://anotherhost.sth/ connectiontimeout = 5 try = 5 ping = 2
上記の方向でお試しください! ajpプロトコルへの変更を確認します。