2016-06-11 2 views
1

UDPトラフィックの負荷分散が可能なロードバランシングソリューションを設定しようとしています。私の場合は、ロードバランサにUDPパッケージを送信するいくつかの異なるサーバがあります。各UDPパッケージ本体の中には、MSG-IDフィールドがあります。理想的には、そのMSG-IDに基づいてUDPトラフィックを一連のサーバーにロードバランスする必要があります。つまり、同じMSG-IDを持つ2つのUDPパッケージを同じサーバーに送信する必要があります(後で処理するために同じMSG-IDを持つ2つのUDPパッケージを組み立てて完全なパッケージを作成したいからです)。しかし、それが不可能な場合は、発信元/送信者IPに基づく解決策で十分でしょう。UDPボディ内のセッションIDを使用したカスタムバランシング方式を使用したUDPロードバランシング

ハプロキシはUDPをサポートしていないので、nginxをチェックしています。しかし、nginx-plus(無料のソリューションではない)だけがip_hashメソッドに基づいてロードバランスを行うことができるようですか?

は、私が知りたい:

  1. 私はUDP本体内部のカスタムMSG-IDに基づいて負荷分散を処理するのに役立つ最高のオープンソースソリューションは何ですか。
  2. nginx(フリー/オープンソース)バージョンは、少なくともip_hashメソッドに基づくUDP負荷分散をサポートしていますか?
  3. UDP送信元/送信者IPを偽装することはできますか。基本的に、私は複数のサーバー(サーバーD)からUDPパッケージを受信し、サーバー(サーバーB、C)のセットに転送するサーバー(サーバーAなど)がある場合、私は、サーバB、Cが、サーバDではなく、Aと表示されたIPを持つパッケージを受け取るようにしたい。
  4. UDPを読み込んでTCPパッケージを形成し、ロードバランサとTCP接続を維持するカスタム層を書くことの欠点新しく形成されたTCPパッケージその場合、nginxまたはhaproxyの両方を使用することができます。

ありがとうございます。

+0

ロードバランシングでは、アウトオブオーダーのパケット配信が発生する可能性があります。 TCPはこれを処理できますが、パフォーマンスが低下する可能性があります。これは本当にUDPを混乱させる可能性があります。 UDPはFire-and-forgetプロトコルであり、配信保証はありません。多くのリアルタイムプロトコル、例えばVoIP、UDPを使用します。 VoIPには、アウトオブオーダーのパケット配信に問題があります。 –

答えて

1

nginxは、オープンソースのnginx(v1.19.13以降)とNGINX Plusの両方でUDP負荷分散をサポートしています。 nginx.com

からこのpostを読んで、nginxのは、箱から出してip_hashに基づいてUDPのロードバランスを提供し、docs

をチェックだから私は2番を質問への答えはイエスだと思います。

にも記載されているように、nginx上流モジュールはカスタムキーにハッシュアルゴリズムを提供していますが、MSG-IDでもかまいませんが、MSG-IDを取得する方法はわかりません。私はそれが簡単ではないと思う。私はしばらく検索しようとしたが運がなかった。解決策を見つけたら、この質問の下で分かち合うことを願ってください。

0

通常、proxy_bind $ remote_addr transparentを使用します。あなたのサーバー{}コンテキストで。これがうまくいくためには、(非常に)最近のnginxにアップストリーム/ udp loadbalancingサポートが必要であることに注意してください。

関連する問題