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