次のシナリオで、長時間実行されるTCP接続の負荷を分散するための最良の方法を研究しようとしています:
ファイアウォールの冗長セットの背後に複数のサーバーがあり、クライアントは長時間実行(通常は10〜15時間)を確立しますTCPバックエンドサーバーへの接続。
現在、「負荷分散」はクライアント側のラウンドロビンアプローチを介して処理され、すべてファイアウォールにホームされ、バックエンドサーバーに応じてNATされるIPアドレスのリストを通過します。
このアプローチから離れて、パブリックIPが1つだけあり、サーバーのヘルス/負荷をチェックして、それに応じて受信クライアント接続要求を分散できる個別のロードバランサーを用意したいと思います。
ここでの1つの問題は、すべてのクライアントが3つの異なるポートで3つのソケット接続を確立することです。これらの接続が「スティッキー」であれば、これら3つの接続要求はすべて同じバックエンドサーバーに送信されます。
私は見てきましたHAProxyですが、私のシナリオに本当に適しているかどうかはわかりません。接続数が比較的少ない(約300クライアント*それぞれに3ソケット接続)。通常、ソケットごとに約15KB/sの連続データ転送量が表示されます。
これに関する入力は大歓迎です!
おかげで、
トム
すべてのバックエンドマシンが「アクティブ」であり、リクエストに本当に応答できると仮定すると、本当に必要なのはロードバランサーフロントエンドだけです。
優れたロードバランサは、各ホストへの接続数を追跡し、新しい接続を動的に分散して、バックエンドシステムの1つを圧迫することを回避できます(「良い」とは、Ciscoコンテンツスイッチ/コンテンツスイッチサービスモジュール)。価格はここの機能と密接に関連しています。コンテンツスイッチはソリューション層でかなり高くなっています。
HAProxyの使用経験はありませんが、コンテンツスイッチのように接続負荷分散を最小限に抑えることができるようです。したがって、これはおそらく良い選択です(そしてはるかに魅力的な価格で)。ただし、HAProxyがソース追跡(同じIPから同じバックエンドにすべての接続を送信する)を実行できるかどうかはわかりません。
pf ファイアウォール(または pfsense カスタマイズされた分散)を数歩下がると、負荷分散(ランダムまたはラウンドロビン、「加重」ができるとは思わないコンテンツスイッチのようなバランスオプションとして最小接続数」)。ソーストラッキングはpfに実装されていますが、接続が1つのサーバーから別のサーバーに移動する問題を回避するために、その情報が保持される期間を試さなければならない場合があります。
ファイアウォールとしてすでにpf/pfsenseを使用している場合、これは無料のオプションです。現在の展開ではこれを使用して良好な結果が得られていますが、接続の寿命はそれほど長くありません。
他の人はHAProxyの実装に成功しており、StackExchangeサイトの実行にも役立ちます。他の人気のあるWebフロントエンドは Nginx および pound です。最終的に、これらのソリューションのほとんどは、ほとんどのWebトラフィックに対して非常に効果的です。
高可用性と負荷分散が目標である場合、 スティッキーセッションまたは永続セッション は両方の有効性を低下させるため、お勧めできません。
あなたのアーキテクチャやトラフィックのタイプについてもっと知らなくても、私は [〜#〜] lvs [〜#〜] をお勧めします。これは私の推奨ソリューションです。この負荷分散ソリューションがより焦点を当てているネットワーク層を参照します。ほとんどのプロトコルで使用でき、Webトラフィックに限定されません。