27

1 つのマシン (ポート) から 2 つの異なるマシン (ポート) にトラフィックを送信 (複製) する必要があります。TCP セッションも処理する必要があります。

最初はem-proxyを使用しましたが、オーバーヘッドがかなり大きいようです (CPU の 50% を超えます)。それから私はhaproxyをインストールし、トラフィックをリダイレクトすることができました(複製しないでください)。オーバーヘッドは妥当です (5% 未満)。

問題は、haproxy 構成ファイルで次のように言うことができなかった
ことです。

このための Em プロキシ コードは非常に単純ですが、EventMachine が多くのオーバーヘッドを生成するように思えます。

haproxy コードを掘り下げて変更 (トラフィックの複製) を試みる前に、似たようなものがあることを知りたいですか?

ありがとう。

4

5 に答える 5

28

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

https://github.com/chrislusf/teeproxy

使用法

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

tee-proxy はリバース プロキシです。着信要求ごとに、要求を 2 つに複製し、2 つのサーバーに転送します。サーバーからの結果aは通常どおり返されますが、サーバーからの結果bは無視されます。

tee-proxy は、GETPOST、およびその他の HTTP メソッドの両方を処理します。

于 2013-09-25T18:50:08.120 に答える
10

iptables の実験的なものはROUTE targetどうですか? トラフィックをミラーリングするための「ティー」オプションがあります。

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

次のようなものでトラフィックをミラーリングできます。

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

2 番目のマシンは同じサブネット上にある必要があり、ターゲット IP アドレスをリッスンする (ARP に応答しない) か、無差別にリッスンする必要があります。

于 2011-08-31T14:03:57.833 に答える
3

https://github.com/agnoster/duplicatorを試してください。

teeproxyを試してみましたが、GET 以外のいくつかのリクエストで奇妙な結果が得られました。

于 2015-05-08T09:17:02.890 に答える
0

TCP トラフィックも処理できるものが必要でしたが、侵入的ではないため、たとえばリバース プロキシとして間に何かを配置することはできませんでした。

私がやったことは基本的に、tcpdump/wireshark ロジック (パケット スニッフィング) を使用して、いくつかのことを行うように構成できる Go プロセスでラップすることです。

コードはこちらにあります: https://github.com/RobinUS2/teecp

于 2019-02-15T13:48:33.483 に答える