2011-08-30 5 views
23

1つのマシン(ポート)と2つの異なるマシン(ポート)にトラフィックを送信(複製)する必要があります。私は同様にTCPセッションの世話をする必要があります。プロキシを使用したTCPトラフィックの重複

私はem-proxyを使用しましたが、オーバーヘッドがかなり大きいと思われます(CPUの50%を超えています)。 その後、私はhaproxyをインストールし、トラフィックをリダイレクトすることができました(重複しないように)。オーバーヘッドは合理的です(5%未満)。特定のアドレスに聞く -
:ポートと2台の異なる のマシンに送信見つけるものは何でも:ポートを、そのうちの1から回答を破棄

問題は、私は、次のhaproxy設定ファイルに言うことができなかったということです。

Em-proxyコードは非常にシンプルですが、EventMachineは というオーバーヘッドを生成しているようです。

私はハプロキシコードを掘り下げて(トラフィックを複製する)前に、 がそこに何か類似していることを知りたいですか?

ありがとうございました。

+0

どうやってやりましたか? – Marenz

+0

+1、これをどうやって解決しましたか? –

+0

これを試すことができます。https://lyft.github.io/envoy/ –

答えて

8

実験用iptablesはどうですか?ROUTE target?第二のマシンが同じサブネット上にある必要があり、希望です

iptables -A PREROUTING -t mangle -p tcp --dport 80 -j ROUTE --gw 1.2.3.4 --tee 
iptables -A POSTROUTING -t mangle -p tcp --sport 80 -j ROUTE --gw 1.2.3.4 --tee

:あなたを聞かせ

http://www.netfilter.org/projects/patch-o-matic/pom-external.html#pom-external-ROUTE

のようなものでトラフィックをミラーリング:それはミラーリングトラフィックのための「ティー」オプションが追加されましたターゲットIPアドレスでリッスンする必要があり(アープに応答しない)、無差別に聴く必要があります。

20

私はこの目的のためだけにプロキシを作成しました。

https://github.com/chrislusf/teeproxy

使用

./teeProxy -l :8888 -a localhost:9000 -b localhost:9001 

ティープロキシリバースプロキシです。要求を受信するたびに、要求を2にクローンして2つのサーバーに転送します。サーバaの結果は通常どおり返されますが、サーバbの結果は無視されます。

GET,POSTなどのHTTPメソッドをすべて処理します。

+0

このリポジトリは存在しなくなりました。 –

+5

Repoの名前が変更されました:https://github.com/chrislusf/teeproxy –

+0

Ubuntuを使用している場合、リポジトリをクローン作成している方にはちょっと注意してください。 'apt-get install gccgo-go'と' go teeproxy.go' – rsilva4