【问题标题】:Duplicate TCP traffic with a proxy使用代理复制 TCP 流量
【发布时间】:2011-11-07 00:58:35
【问题描述】:

我需要从一台机器(端口)和两台不同的机器(端口)发送(重复)流量。我还需要处理 TCP 会话。

在开始时我使用了em-proxy,但在我看来开销相当大(它超过了 CPU 的 50%)。 然后我安装了haproxy 并设法重定向流量(不重复)。开销是合理的(低于 5%)。

问题是我不能在 haproxy 配置文件中说以下内容:
- 监听特定的地址:端口和你发现的任何东西都发送到两个不同的地方 机器:端口并丢弃其中之一的答案。

用于此的 Em-proxy 代码非常简单,但在我看来 EventMachine 生成 很多开销。

在我挖掘 haproxy 代码并尝试更改(重复流量)之前,我想 知道那里有类似的东西吗?

谢谢。

【问题讨论】:

  • 你最终是怎么做到的?
  • +1,你是怎么解决这个问题的?
  • 可以试试这个lyft.github.io/envoy

标签: tcp proxy duplicates traffic haproxy


【解决方案1】:

我为此创建了一个代理。

https://github.com/chrislusf/teeproxy

用法

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

tee-proxy 是一个反向代理。对于每个传入的请求,它将请求克隆为 2 个,然后将它们转发到 2 个服务器。来自服务器a 的结果照常返回,但来自服务器b 的结果被忽略。

tee-proxy 处理 GETPOST 和其他 HTTP 方法。

【讨论】:

  • 此存储库不再存在。
  • 如果使用 Ubuntu apt-get install gccgo-go 然后go build teeproxy.go,请注意克隆 repo 的人
  • teeproxy 支持 websockets 吗?
【解决方案2】:

iptables 实验性ROUTE target 怎么样?它有一个用于镜像流量的“tee”选项:

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

第二台机器需要在同一个子网上,要么需要监听目标 IP 地址(而不是回复 arps)要么混杂地监听。

【讨论】:

    【解决方案3】:

    试试https://github.com/agnoster/duplicator

    我尝试了teeproxy,但得到了一些除 GET 之外的请求的奇怪结果。

    【讨论】:

      【解决方案4】:

      我还为与 Node.js 类似的目的编写了一个反向代理/负载平衡器(它只是为了好玩,目前还没有准备好生产)。

      https://github.com/losnir/ampel

      很有主见,目前支持:

      • GET 使用循环选择 (1:1)
      • POST 使用请求拆分。没有“主”和“影子”的概念 - 第一个响应的后端是为客户端请求提供服务的后端,然后所有其他响应都将被丢弃。

      如果有人觉得它有用,那么我可以改进它以使其更灵活。

      【讨论】:

        【解决方案5】:

        我还需要一些可以传输 TCP 流量的东西,但又不具有侵入性,因此无法在中间放置一些东西作为反向代理。

        我所做的基本上是使用 tcpdump/wireshark 逻辑(数据包嗅探)将它包装在一个 Go 进程中,您可以配置它来做一些事情。

        可以在这里找到代码对谁有帮助:https://github.com/RobinUS2/teecp

        【讨论】:

          猜你喜欢
          • 2018-11-04
          • 1970-01-01
          • 1970-01-01
          • 2015-02-26
          • 1970-01-01
          • 1970-01-01
          • 2021-03-15
          • 2011-04-20
          • 1970-01-01
          相关资源
          最近更新 更多