我已经专门为此创建了一个代理。
https://github.com/chrislusf/teeproxy
使用方法
./teeProxy -l :8888 -a localhost:9000 -b localhost:9001
tee-proxy是一个反向代理。对于每个传入的请求,它会将该请求克隆成两个并将它们转发到两个服务器。来自服务器a
的结果像往常一样返回,但来自服务器b
的结果被忽略。
tee-proxy处理GET
,POST
和其他HTTP方法。
apt-get install gccgo-go
,然后运行go build teeproxy.go
。 - rsilva4我还用 Node.js 写了一个反向代理/负载均衡器,目的类似(目前只是为了好玩,并未准备投入生产)。
https://github.com/losnir/ampel
它非常主观,并且目前支持:
GET
使用轮询选择(1:1)POST
使用请求分割。没有“主”和“影子”的概念——响应的第一个后端将为客户端请求提供服务,然后所有其他响应都将被丢弃。如果有人发现它有用,那么我可以改进它以使其更加灵活。
我需要一个能够tee TCP流量的工具,但又不会侵入性地影响网络,因此不能像反向代理那样添加一个东西在中间。
所以我做的基本上是使用tcpdump/wireshark的逻辑(数据包嗅探),将其封装在Go进程中,并可以配置一些事情。
对于那些需要的人,代码可以在这里找到:https://github.com/RobinUS2/teecp