11

複数の Java Tomcat インスタンスの前でプロキシとして Apache Httpd インスタンスを使用しています。Apache は、Tomcat インスタンスのロード バランサーとして機能します。

Apacheの設定は基本的に次のようになります

<Proxy balancer://mycluster>
    BalancerMember ajp://host1:8280 route=jvmRoute-8280
    BalancerMember ajp://host2:8280 route=jvmRoute-8280
    BalancerMember ajp://host3:8280 route=jvmRoute-8280
</Proxy>
<VirtualHost *:80>
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
</VirtualHost>

これは基本的に、Tomcat インスタンスで AJP ポートが構成されている場合に機能します。リクエストはいずれかのホストに送信され、負荷は Tomcat インスタンス全体に分散されます。

ただし、ホストの 1 つが使用できない場合は常に Httpd 内で発生しているように見える非常に長い遅延が見られます。利用可能なホストの 1 つに送信し、しばらくしてから失敗したホストを試します。

mod_proxy などを設定する方法はありますか。そのようなフェイルオーバー シナリオをサポートするために Apache Httpd から、つまり、複数のホストを持ち、1 つのホストに障害が発生したときに大きな遅延を引き起こさないでしょうか? できれば、Apache はバックグラウンドで定期的にどのホストがなくなったのかをチェックし、リクエストのホストとしてではありません。

この種のことにより適しているように思われるHAProxyを見つけましたが、関連のない多くの理由で Apache に固執することを好みます。


アップデート

その間、私の問題の一部は、クライアントが接続を際限なく開いたままにしていたため、接続/スレッドが利用できなくなったことが原因であることがわかりました。

したがって、質問を次のように変更します。このような影響を最小限に抑えるには、どの構成オプションを使用しますか? つまり、この場合、多くの開いている接続を許可するか、すぐに閉じますか? そうでなければ、これは私の現在の設定で非常に簡単な DOS 攻撃のように聞こえますか?

4

3 に答える 3

6

クライアントは接続を際限なく開いたままにすることはありません。Apache server-tuning.confを確認し、KeepAliveTimeout設定を探します。賢明なものに下げてください。

connectiontimeoutとretryの変更は、実際に行う必要があることです。ただし、connectiontimeoutを低くします。10秒はまだ年をとっています。バックエンドが同じ場所にある場合は、ミリ秒単位で設定してみませんか?connectiontimeout = 200msは、接続をセットアップするために十分な時間を残す必要があります。

于 2013-01-31T09:43:48.097 に答える
2

少なくとも一種の回避策または簡単な解決策を見つけたと思います。mod_proxy はデフォルトで非常に長い接続タイムアウト (300 秒) を持っているようです。別の方法で設定しないと、オフライン ノードが「エラー」状態であると検出されるまでに長い時間がかかります。

短い接続タイムアウトを設定し、再試行を増やすことで、よりうまく機能させることができます。

BalancerMember ajp://host1:8280 route=jvmRoute-8280 connectiontimeout=10 retry=600

これにより、失敗した接続がかなり迅速に検出され、Apache が失敗したサーバーに到達するために頻繁に再試行することがなくなります。残念ながら、Apache は実際のリクエストを使用してバランス メンバーをチェックしているようです。そのため、以前にエラー状態になったサーバーにアクセスしようとすると、単一のリクエストが遅くなることがあります。ハートビートやウォッチドッグ機能はないようです。このような場合、他の負荷分散ソリューションがそのような機能をもたらします。特にHAProxyです。

詳細については、 mod_proxyおよびmod_proxy_balancerを参照してください。

さらに、 mod_statusを介したサーバー ステータスと、mod_balancer によって提供されるページを介したバランス マネージャーは、これを診断するのに非常に役立ちました。

于 2013-01-26T23:53:21.430 に答える