2016-04-25 13 views
1

私はハプロキシとロードバランシングが初めてです。私は、プロキシの実行中にバックエンドホストがオフになったときに何が起こるのかを見たいと思っています。HAproxyパッシブヘルスチェック

問題は、バックエンドの1つをオフにしてブラウザをリフレッシュすると、ページがすぐにユーザーに503エラーが表示されることです。次のページのロード後、バックエンドがプールから削除されている可能性があるため、エラーは発生しなくなりました。これによると

backend app 
    mode http 
    balanace roundrobin 
    server app1 127.0.0.1:5001 check 
    server app2 127.0.0.1:5002 check 

私の理解:私はそうのようにそれらのバランスをとるために、2つのバックエンドのフラスコのアプリを設定し、HAProxyを設定した試験として

https://www.haproxy.com/doc/aloha/7.0/haproxy/healthchecks.html#check-parameters

が2秒毎にインクルードということですバックエンドホストは、それらが稼働しているかどうかを確認するためにpingされます。その後、彼らはプールから取り除かれます。 5xxエラーは、私がバックエンドを殺す時と2秒間に起こります。

私は、この5xxエラーを回避する方法として、フロントエンドからのリクエストが失敗した場合に失敗したバックエンドをプールから削除し、別の別の要求をしてください。この方法では、ユーザーは失敗を見ることはありません。

これを行う方法はありますか、または私のユーザーがエラーを受けないように他の何かを試すべきですか?

答えて

2

デフォルトでは、haproxyは1秒間隔で3回(retries)、同じバックエンドにを再試行します。別のバックエンドを許可するには、option redispatchを設定する必要があります。

も(慎重に、それはhamrfullすることができます)に考慮してください。

注:ハプロキシリトライo接続エラー(例: ECONNNREFUSED)、リクエスト/データの再送信/再送信は行いません。

+0

素晴らしい。オプションの再ディスパッチは、私が必要とするもののように見えます。 – Jono