我们正在开发一个新的服务器来replace一个旧的服务器,并且希望在testing之前和之后并排放置,以便我们可以比较最终结果并找出差异。
这两个服务(旧的和新的)的input是HTTP请求(大多数如果不是所有的GET,但也可能是POST),我们需要有stream量到旧的服务器复制并发送到新的服务器 (而不是)。 当然我们需要对请求中的主机名和端口做一些轻微的改写,以避免无限循环。
旧的服务器运行在Apache(PHP)上,新的是Jetty(Java,Dropwizard)
必须有办法做到这一点,我只是找不到关键字的谷歌search我猜…
虽然不是你要求的,我会build议另一种方法来testing新的服务器。
如果将负载平衡器放在两台服务器之前,并使用负载平衡algorithm,则可以同时testing新服务器,并逐渐replace旧服务器。 您可以将99%的请求发送到旧的服务器,其余的百分之一请求将转到新的请求,您可以仔细查看服务是否按预期工作。
如果一切正常,可以逐渐增加负载; 90%-10%,80%-20%等。
提示:检查haproxy和weight和static-rr选项。
我们最终select的是使用Gor(现在是GorReplay) https://github.com/buger/goreplay
这个解决scheme允许在原来的主机上安装一个监听程序,它所做的是logging所有传入的HTTP请求,这是在不修改或阻止生产服务器处理的情况下完成的。
然后,它将这些请求推送到Gor重放服务器,该服务器可以处理根据传入请求分割/增加负载的各种有用逻辑 – 可以将一定比例的请求发送到dev服务器,或者将请求相乘以创build模拟(但是来自真实的stream量)载入您的分段环境,或两者…
不幸的是,这是在服务器级别,所以你必须安装在每个生产服务器上来获得所有的stream量,但是你不需要,它为我的问题中的问题提供了一个很好的解决scheme。