流量复制导流工具研究

本文介绍了流量复制工具TCPCopy和GoReplay的使用,旨在模拟真实线上流量,用于压力测试和系统稳定性验证。TCPCopy通过在线和离线模式复制流量,GoReplay支持流量放大、限制和过滤。实验展示了如何配置和使用这些工具进行流量复制和回放。
摘要由CSDN通过智能技术生成

背景

Web 应用压力测试工具有很多,比如Apache ab, Apache JMeter等。但是这些工具都没能解决一个问题:如何正确模拟生产环境的流量。对于线下的传统压力测试,难以模拟真实流量,尤其难以模拟正常流量混杂着各色异常流量。

系统重构或重要变更上线前,可以复制线上真实流量,实时模拟线上流量,甚至可以放大真实流量,进行压力测试,以评估系统承载能力。反过来也可以这样,如果线上跑着发现有性能瓶颈,但线下环境难以复现,还不如把真实流量拷贝到线下重放,毕竟线下环境便于上各种排查手段,重放几遍都行,直到找到问题。

因此,需要研究如何复制线上真实流量并引流到测试环境。主要的工具有TCPCopy和GoReplay 。下面分别介绍这两个工具。

TCPCopy

TCPCopy 是一种请求复制(复制基于 TCP 的 packets)工具 ,通过复制在线数据包,修改 TCP/IP 头部信息,发送给测试服务器,达到欺骗测试服务器的TCP 程序的目的,从而为欺骗上层应用打下坚实基础。

TCPCopy由网易技术部的王斌在王波的工作基础上中2010年开发,并与2011年9月开源。Github地址,最新的发布版本号是 1.2.0。其应用领域较广,目前已经应用于国内各大互联网公司,很多公司的模拟在线测试都是基于 TCPCopy 做的。

总体说来,tcpcopy主要有如下功能:
1)分布式压力测试工具,利用在线数据,可以测试系统能够承受的压力大小(远比ab压力测试工具真实地多),也可以提前发现一些bug
2)普通上线测试,可以发现新系统是否稳定,提前发现上线过程中会出现的诸多问题,让开发者有信心上线
3)对比试验,同样请求,针对不同或不同版本程序,可以做性能对比等试验
4)利用多种手段,构造无限在线压力,满足中小网站压力测试要求
5)实战演习(架构师必备)

tcpcopy可以用于实时和离线回放领域,并且tcpcopy支持mysql协议的复制,开源二年以来,功能上越来越完善。

架构如下图所示:
在这里插入图片描述
线上服务器Online Server(OS):上面要部署 TCPCopy,从数据链路层(pcap 接口)抓请求数据包,发包是从IP层发出去;
测试服务器Test Server(TS):最新的架构调整把 intercept 的工作从 TS 中 offload 出来。TS 设置路由信息,把 被测应用 的需要被捕获的响应数据包信息路由到 AS;
辅助服务器Assistant Server(AS):这是一台独立的辅助服务器,原则上一定要用同网段的一台闲置服务器来充当辅助服务器。AS 在数据链路层截获到响应包,从中抽取出有用的信息,再返回给相应的 OS 上的 tcpcopy 进程。

TCPCopy实验

1. 实验环境

线上服务器 --> 192.168.119.158
测试服务器 --> 192.168.119.152
辅助服务器 --> 192.168.119.151

•tcpcopy运行在线上服务器上,tcpcopy会把线上服务器收到的流量,重放给测试服务器,重放的时候tcpcopy修改了IP数据包的源IP地址(譬如修改源地址为192.168.2.254)。所以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值