当前位置: 首页 > 网络应用技术

交通副本解决方案的比较:TCPCOPY vs GOREPLAY

时间:2023-03-06 15:48:22 网络应用技术

  文章“代码Nongwu Wu”的第一个公共帐户,欢迎注意及时获得更多技术工作?

  “复制复制”通常应用于准生产环境的测试,将在线流量复制到准生产环境服务,并测试新功能和服务压力。复制流量可以完全模拟线路上的流量,并进行真实的操作对复杂业务方案的服务测试对生产服务没有任何副作用。

  对于复杂的流拷贝应用程序方案和需求,您可以开发一组完整的复制体系结构,以参考字节团队开发的字节拷贝项目。对于一些简单的需求,可以实现开源工具。基本上可以完成许多开源工具。,通常使用的是Goreplay,TCPreplay,Tcpccopy等。

  本文主要讨论TCPCOPY和GOREPLAY解决方案的实施。

  TCPCOPY由Wang Bin和其他NetEase Technology开发,并于2011年9月成为开源。TCPCCOPY的最新体系结构如下(作者Wang Bin Blog:https://blog.csdn.net/wangbin579/article/article/details/article/details/article/details-/8949315):)::

  TCPCOPY有两个组件主要是为了形成TCPCOPY客户端和拦截。客户端负责复制流量和转发,截距负责拦截响应流量和TCPCCOPY的链接处理。

  实例环境如下。让我们解释整个体系结构的构建过程:

  每个组件可以直接从github下载源代码包,编译和安装:

  安装后,首先启动Internet,然后运行以下命令:

  启动截距后,然后启动tcpcopy client.tcpcopy启动截距,以确保截距启动在开始时成功。

  在测试服务器上添加拦截路由,如下:

  该路线等同于通往192.168.1.0段的门口192.168.33.12,以拦截测试服务器背包的伪附件。

  这是TCPCCOPY的整个体系结构。

  让我们看一下包装在此过程中的流动方式。

  我使用8000个端口的服务在TCPCOPY客户端计算机上进行测试192.168.33.11和测试机192.168.33.13,以从我们的计算机192.168.33.1发送请求,并在三台机器上捕获包装。

  TCPCOPY客户端机192.168.33.11包装信息如下:

  红色标签块是我们自己的机器(192.168.33.1)和TCPCOPY客户端(192.168.33.11)的正常请求交换,从三个握手到HTTP请求再到最终破碎的链条。

  蓝色标签块是TCPCOPY的流量。可以看出,为了允许插头拦截背包流量,TCPCOPY已将包装源IP地址替换为我们指定的pseudo -network段(192.168.1.0)的地址,因此当包装是背包时,对于测试服务器上的路由,背包将把背包指向辅助服务器截距以避免影响生产流程。这就是为什么流量副本和HTTP副本中没有三次的副本。

  请参阅测试服务器192.168.33.13软件包:

  测试服务器的包与普通流量包相同。它握手向HTTP请求三次,最后断开。

  请参阅192.168.33.12的拦截包:

  您可以看到辅助服务器拦截的请求。标签块1是当流量摇动3次时的背包,而块2是HTTP要求的背包。这是Internet的截距功能。测试机。

  根据上面的袋子,我们获得了与架构图相同的流程。摘要如下:

  根据官方文件,我们还需要注意一些问题:

  GorePlay是另一个更常用的流量复制工具。

  只需在生产服务器上启动GOR流程,它就会负责所有任务,包括监视,过滤和转发。它的设计遵循UNIX设计理念:所有内容都是由管道组成的,各种输入将数据纳入输出。

  输入和输出通常用作插件,以下是常见的。

  可用输入:

  使用的输出:

  您可以执行数据限制,过滤和重建数据。您还可以重复使用中间件来实现一些自定义的逻辑处理,例如过滤和私人数据认证。

  其他常用参数:

  本文对中间件的描述不多。它仅讨论通用功能,需要参考对中间件需求的中间件文档。

  Goreplay是使用Golang开发的。我们可以直接使用与每个系统相对应的编译的二进制文件。它也可以由我们自己编译。我们直接在这里使用二进制文件。

  接下来,直接启动GOR以复制流量并向前进行。

  将本地8000端口的流量复制到http的远程服务(复制同一端口的流量时,将重复流量。这是GOR的错误。目前,仍可以复制版本1.3。

  GorePlay的流量转发不是直接的TCP软件包的转发,而是重新组织HTTP协议级别请求并发送到测试服务器。因此,这是新的GOR线程与测试服务器之间的交互,这无关紧要。使用监视线程,因此无需拦截流量。

  让我们看一下流程包的GOR副本的流程:

  红色标签块是正常流量,蓝色标签块是流量的副本。

  看到这里,您可能有疑问,为什么GOR不需要拦截流量?

  每个人都仔细研究了TCPCOPY和GOR的港口以复制流量。建立生产机器和测试机后,TCPCopy修改了TCP软件包的源IP,但是端口使用的请求客户端的端口是TCP数据链接级别级别交通级别。但是重新构造http请求。当使用新的端端口构建测试机时,相对测试机将返回到包装中,即使包裹返回到生产机器,也不会影响生产流,因为它是与客户不同。

  在这一点上,我们有一些用于流量副本的基本概念和应用程序,并且我们还对TCPCCOPY和GOREPLAY的两个开源工具有一定的了解。这两个开源工具具有其自己的优势和缺点,让我们总结一下。

  简单的HTTP复制GorePlay可以胜任,稍微复杂或更复杂,因此建议使用TCPCOPY。更复杂,需要更高的流量来复制,我们只能自定义自己。

  好吧,这是本文的结尾。欢迎留言讨论。您会感觉到最佳的交通副本计划。