2012-06-18 39 views
8

mod_proxy_balancerを使用してバックエンドサーバのフェールオーバーを管理しています。バックエンドサーバーは、NFSなどの他のバックエンドサービスが失敗したときにタイムアウトするのではなく、エラーコードを返す可能性があります。また、そのようなサーバーも障害ノードとしてマークします。したがって、我々はfailonstatus指令を使用しています。httpd mod_proxy_balancerフェールオーバーfailonst failonstatus - トランスペアレントスイッチング

<Proxy balancer://avatar> 
    ProxySet failonstatus=503 
    BalancerMember http://active/ retry=30 
    # the hot standby 
    BalancerMember http://standby/ status=+H retry=0 
</Proxy> 

現在、フェールオーバーは1つのグリッチで完全に機能します。アクティブ・ノードに障害が発生すると、ユーザーは503エラーを受け取り、次の要求からスタンバイ・サーバーが引き継ぎます。

私は1つのリクエストでも失敗したくはありません。クライアントにエラーを返すことなくmod_proxyフェイルオーバーを実行できますか?アクティブなノードに障害が発生した場合、mod_proxyは、後続の要求だけでなく、同じ要求に対してスタンバイを試みるようにします。

答えて

3

私はApache HTTPdメーリングリストでこれを尋ねたが、幸いにも満足のいく答えが得られなかったと思う。私はServerFaultでほぼ同じ質問をしましたので、一緒に参加しています。

https://serverfault.com/questions/414024/apache-httpd-workers-retry

+2

あなたが求めているものを実現し、新たなモジュールがあります。 mod_proxy_balancer内のステートマシンはHTTPエラーで再試行できませんが、接続エラーの場合にのみ実行できます。私は自分で実装しようとしましたが、複雑すぎるので、コードベースを簡単に不安定にすることができます。だから私はあきらめた... – Praveen

関連する問題