tcpcopy1.0系列使用方法

tcpcopy浅谈 由于上次一台redis宕机,导致上层服务整体不可用,影响面积甚大(原因以后再说),现在线上只是用到了redis的单机模式,多个redis实例构成一致性哈希,供客户端调用。所以最近领导提出了redis的sentinel模式,让我们来研究研究。        在测试sentinel模式的时候,其中有一个技术细节,即需要把线上的流量导入到线下测试机上,用到了tcpcopy,本文主要讲述tcpcopy的 阅读详情

新旧架构详细对比:

http://blog.youkuaiyun.com/wangbin579/article/details/8949315


tcpcopy运行需要intercept的支持,tcpcopy负责抓包和发包工作,而intercept负责截获应答包


tcpcopy代码下载地址:

git clone http://github.com/session-replay-tools/tcpcopy

configure:

./configure (默认raw socket方式抓包)

或者

./configure --pcap-capture  (pcap方式抓包,在某些场景下,丢包率会高于raw socket方式抓包,这时候需要类似pf_ring的支持)


对于intercept:

代码下载地址:

git clone http://github.com/session-replay-tools/intercept

configure方式:

./configure 


运行方法参考下面具体例子(tcpcopy采用了configure来编译):


这是一个内网的应用例子,我们的目的是复制下图中adserver应用服务器的请求到测试系统中去。



在线adserver有2台,主要供nginx调用,所以客户端IP地址来自于nginx所在机器的IP地址,均为同一网段的IP地址。
我们假设在线adserver机器为10.100.10.1,10.100.10.2,nginx所在的机器ip地址为:10.100.10.11,10.100.10.12,10.100.10.13,
测试服务器有10.100.10.31,10.100.10.32(辅助服务器)
其中,10.100.10.31运行着类似在线adserver的应用,端口为11511,而在线应用端口是11311
我们在10.100.10.31上面添加如下路由:
route add -host 10.100.10.11 gw 10.100.10.32
route add -host 10.100.10.12 gw 10.100.10.32
route add -host 10.100.10.13 gw 10.100.10.32

这里的意思就是说,在测试服务器10.100.10.31返回给客户端10.100.10.11~13的响应走默认网关10.100.10.32,但10.100.10.32机器其实并没有开启路由模式,所以这些响应包到了10.100.10.32机器后,会在ip层被drop掉,留给我们的机会就是可以在10.100.10.32的数据链路层抓到这些响应包。

我们在10.100.10.32机器(辅助服务器)上面运行intercept,用来捕获响应包,命令如下:
    执行intercept命令(需要root权限):
    ./intercept -i eth0 -F 'tcp and src port 11511' -d

    
我们在在线机器上面运行tcpcopy(root权限):
         ./tcpcopy -x 11311-10.100.10.31:11511 -s 10.100.10.32 -d

         这里tcpcopy的含义是复制在线11311端口的数据包到10.100.10.31上面的11511端口中去,-s指定运行intercept所在机器的ip地址。


这样请求就过去了,测试结果如下:
        [root@hz12-26 logs]# grep 'Thu 10:30' access_0516_10.log -c       
        99415
        [root@hz12-25 logs]# grep 'Thu 10:30' access_0516_10.log -c  
        99414
        [root@bgp176-148 logs]# grep 'Thu 10:30' access_0516_10.log -c
        198693


最后,需要注意新架构的若干细节:
1)发起请求的客户端所在机器,不能同时运行相应的intercept,因为响应数据包路由回来后,这台机器的tcp层会发送reset数据包给测试服务器,这样就会干扰测试的进行。
2)在线服务和测试服务不要在一台机器
      如果在线服务响应的目的ip地址和测试服务响应的目的ip地址是一样的,路由设置的时候,是无法区分在线的响应和测试的响应

3)对于外网应用,由于客户端ip地址来自于世界各地,路由策略如下:

  a)用两个网卡,一个外网网卡,一个内网网卡,让外网请求都路由到第二台测试服务器上面去

   比如改变测试服务器上面的默认路由:
   route del default gw 真正的网关ip地址

   route add default gw 辅助服务器的ip地址

  

 b)利用tcpcopy的-c参数,修改客户端源ip地址,这样就方便设置路由

    比如:./tcpcopy -x 11311-10.100.10.31:11511 -s 10.100.10.32 -c 192.168.100.x

     相应路由设置:

    route add -net 192.168.100.0 netmask 255.255.255.0 gw 10.100.10.32


4)如果是在同一网段利用外网地址访问,在机器B上面设置去往机器A的响应,走机器C,那么设置默认外网网卡路由不会生效,需要显式指定,比如:

   route add -host 机器A的外网ip地址  gw 机器C的外网ip地址

5)如果是内网应用,由于客户端ip地址少,建议采用如下:
route add -host 内网客户端ip地址 gw 辅助服务器的ip地址
或者
//如果客户端ip地址来自于其它网段的话
route add -net xxx.xxx.xxx.0 netmask 255.255.255.0 gw 辅助服务器的ip地址

不要采用默认网关的方式


6)如果tcpcopy遇到大量“unsend:too many packets”的报警,请采用raw socket方式来抓请求数据包

7)如果客户端来自于同一网段,那么响应包可能会直接通过mac地址返回给客户端,导致路由设置不起作用,响应包不会被intercept所截获,导致复制失败

    解决策略有两个:

   1)检测路由命令是否有冲突,导致响应包直接返回给客户端

   2)tcpcopy运行的时候通过-c参数来改变客户端的ip地址为不同网段的ip地址,就可以解决此问题。


8)如果同时有内网访问和外网访问,应该分别针对外网应用和内网应用,设置相应路由

9)运行intercept的辅助服务器,为方便路由设置,最好要和测试服务器在同一个网段,而且不要设置ip_forward


10)本文档更新时间为2014.8.25

反光柱定位算法实战03:VEnus代码解析和纯反光柱定位中的可改进方向 本文深入解析了开源框架VEnus的反光柱定位与建图实现流程,包括强度提取、聚类、数据关联、位姿优化等核心模块。同时指出其三大局限:匹配质量脆弱性、单一传感器依赖和地图扩展逻辑缺失,并提出改进方向:融合里程计/IMU数据、引入图优化后端、建立动态地图维护机制。该分析为基于反光柱的定位系统优化提供了实用参考,有助于提升工业场景下的定位鲁棒性和精确性。 阅读详情

相关推荐

概率论基础-严士健 第二版 习题与补充1.6答案

概率论基础-严士健 第二版 习题与补充1.6答案 1.不独立。 设有一均匀正八面体,其第1,2,3,4面染红色,第1,2,3,5面染白色,第1,6,7,8面染黑色,现在以A,B,C分别表示投一次正八面体出现红、白、黑的事件,则 P(A)=P(B)=P(C)=12.P(A) = P(B) = P(C) = \frac{1}{2}.P(A)=P(B)=P(C)=21​. P(ABC)=18=P(A)P...

weixin_42341993的博客 2515

这就是Tcpcopy

TCPCOPY 1、 TCPCOPY简介 1.1、 什么是Tcpcopy Tcpcopy是一个分布式压力测试工具,可以将线上流量拷贝到测试机器,实时模拟线上环境,达到在程序不上线的情况下实时承担线上流量的效果,尽早发现bug增加上线信心。 1.2、 Tcpcopy的工作原理 TCPCopy是一种请求复制(复制基于 TCP 的 packets)工具 ,通过复制在线数据包,修改 TCP/IP 头部信息,发送给测试服务器,达到欺骗测试服务器的TCP 程序的目的,从而为欺骗上层应用打下坚实基础。 1.3、 Tcpc

awerft的博客 4755

从Blender舞步到夜空画卷:基于Pix飞控的无人机编队灯光秀全链路开发实践

本文详细介绍了基于Pixhawk飞控的无人机编队灯光秀全链路开发实践。从Blender三维动画设计、QGroundControl地面站二次开发与MAVLink通信桥接,到PX4飞控的OFFBOARD模式路径控制与LED灯光驱动实现,最后通过Gazebo仿真验证并完成真机组装与首飞。文章为无人机爱好者提供了一套完整的、从创意设计到夜空执行的开源解决方案,重点阐述了多机同步与灯光控制的核心技术挑战与应对策略。

zeta9的博客 585

TCPCopy原理浅析

TCPCopy是一款十分优秀的开源项目,但因为笔者能力有限,本文只介绍了TCPCopy的核心技术原理,很多细节并未涉及。不过还是希望通过本文的介绍,能够对TCPCopy和流量回放技术感兴趣的同学有所启发!

weixin_49676783的博客 2332

DNF服务器搭建服务端架设教程

第三步:打开winscp,上传Script.pvf(版本)、publickey.pem(密钥)、df_game_r(等级补丁)到home/neople/game目录下。第四步:打开putty输入./stop,./stop(两次,如果是首次架设不用./stop),./run,运行刚才上传的三个游戏文件。③是本地配置登录器的配置文件,自动生成,可以删除,但是还是会根据你生成的登录器生成这个文件,类似日志。⑤密钥中所上传的三个文件其中之一,重中之重,上传到服务器的密钥必须和登录器中的密钥为一个。

V13807970340的博客 6257

uCOS中的消息邮箱(:task与task之间传递一个数据(数据缓冲区))

程序需求,需要完成task与task之间  字符数组的数据传输 比如:在ucos中,串口2接收的字符数组是不定时的&不定长的;只有当接收到数据的时候_才将数据赋值给新数组 具体的程序示意如下: 图1:消息邮箱测试中的     向消息邮箱发送消息(OSMboxPost(Str_Box,(void*)rec);//发送消息--(向 消息邮箱_msg_key发送消息) ),实际项目需求的

faguoduifangui的博客 4540

如何用遗传算法优化ta-lib-python指标组合:提升交易策略收益的终极指南

ta-lib-python是一个强大的Python技术分析库,它为交易者和数据分析师提供了丰富的技术指标计算功能。本文将介绍如何利用遗传算法对ta-lib-python中的指标组合进行优化,帮助你构建更有效的交易策略,实现更高的投资回报。 ## 为什么需要优化ta-lib-python指标组合? 在金融交易中,单一的技术指标往往难以准确预测市场走势。通过将多个指标组合使用,可以综合不同维度的市

gitblog_00019的博客 1078

ZooKeeper 实战:使用 Docker Compose 部署 ZooKeeper 集群

ZooKeeper是一个开源的分布式协调服务,用于管理大型分布式系统中的数据。它由Apache软件基金会提供,最初是Hadoop的一个子项目,但后来发展成为一个独立的顶级项目。ZooKeeper提供的一致性协调服务对于构建分布式应用和服务非常重要,特别是在需要精确的领导选举、配置管理、命名服务、分布式同步和提供分布式锁等功能时。

SmartSi 1541

Tcpcopy简单用法

TCPCopy是基于网络栈,TCP协议的流量复制,常用的场景是把线上流量复制到测试环境,用来排查线下不容易重现的问题,或者对测试环境做压力测试

峰迹的博客 595

2026年软考高级网络规划设计师第三版备考笔记

删除了所有已退出主流应用、行业淘汰的技术内容,如 HDLC、xDSL、WiMAX、HSRP/GLBP 等,让教材内容更聚焦当下一线网络工程实际场景,剔除无效考点。

鹿鸣天涯 1214

LangChain4j + MCP:从工具协议到生产级 Agent

这两年,很多团队都已经把「大模型问答」接入到系统里了:前端一个输入框,后端调一下 OpenAI / DeepSeek / 本地模型,返回一段回答——这类 「简单问答型」AI 功能它只能说,不会做:不会主动查数据库,不会调用你的接口,不会帮你真正执行脚本;面对复杂一点的需求,比如「帮我生成这个报表的 SQL 并执行一下」,普通 ChatGPT 式的问答就开始力不从心了。而Agent 智能体想解决的,就是这件事:不只是回答你「怎么做」,而是能自己思考、自己决定要不要用工具、再用工具把事做完。

OFFTime_we的博客 1152

TCPcopy-TCP流重播工具

1.什么是tcpcopy TCPCopy是一种TCP流重放工具,用于支持Internet服务器应用程序的真实测试。 tcp实时流对于Internet服务器应用程序的测试很重要,但是由于线上环境过于复杂,因此很难对其进行模拟。为了支持对Internet服务器应用程序进行更符合生产环境的测试,有了实时流复制工具TCPCopy,该工具可以生成与生产工作负荷类似的测试流。目前,TCPCopy在中国公司被广泛使用。除了占用额外的CPU,内存和带宽外,TCPCopy对生产系统几乎没有影响。在请求多样性,网络延迟和资

橙汁Iter的博客 1375

MinerU 本地部署完整指南:从零构建你的私有文档智能处理系统

摘要: MinerU是一款开源本地化文档解析工具,可将PDF、Word等文件智能转换为结构化Markdown,保留表格、公式、图片等元素。其核心优势包括: 隐私安全:完全离线处理,避免云端数据泄露风险; 高精度解析:基于深度学习还原文档逻辑结构,支持多格式输入; 易集成:提供RESTful API,适合金融、医疗等敏感场景。部署需Python 3.9+环境,支持CPU/GPU运行,推荐配置16GB内存及NVIDIA显卡。通过命令行或Docker即可快速启动,适用于知识库构建、RAG系统预处理等。

reset2021的博客 751

tcpcopy架构变迁历史及最新版使用方法

tcpcopy架构漫谈(变迁历史) tcpcopy1.0系列使用方法

wenjun258120的专栏 276

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【测试环境】tcpcopy1.0系列使用方法

新旧架构详细对比: http://blog.csdn.NET/wangbin579/article/details/8949315 tcpcopy运行需要intercept的支持,tcpcopy负责抓包和发包工作,而intercept负责截获应答包 tcpcopy代码下载地址: Git clone http://github.com/session-replay-t

ronmy的专栏 469

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

TCPCopy的安装和使用

官网地址 https://code.google.com/p/tcpcopy/  里面有包的下载地址、文档 和常见问题。 TCPCopy 有传统架构和新架构,新架构比较复杂,一般情况下传统架构就可以了。 TCPCopy分为TCPCopy client和TCPCopy server,其中TCPCopy client运行在在线服务器上面,用来捕获在线请求数据包;TCPCopy server

marken 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

注意,tcpcopy 0.5版本和tcpcopy 0.4版本用法有很大的差别,而tcpcopy 1.0和tcpcopy 0.9差别也非常大

多使用tcpcopy -h和intercept -h来查看tcpcopy 0.5版本+的用法,tcpcopy 0.4以下的老版本不推荐使用了

重思想 4118

TCPCOPY 1.0 部署及使用

tcpcopy简介 TCPCOPY 是一个 tcp 流量的实时复制工具,其1.0版本由网易工程师 @tcpcopy 开发和维护。一般用来将生产环境的线上流量实时复制到测试环境进行测试。例如新系统上线前,如果我们希望进行一些基本的压力测试,那么我们可以直接利用 tcpcopy 来复制线上的流量过来对系统进行测试,这样的好处是测试数据接近真实水平,且实施起来相对简单。 一、部署环境 1.1、服务器列表...

运维那些事儿 770

流量复制-----tcpcopy的使用(1)

前言 TCPCopy是基于网络栈,TCP协议的流量复制,常用的场景是把线上流量复制到测试环境,模拟线上用户操作,让测试机和真实的用户交互,让测试环境在正式灰度前暴露问题,用来排查线下不容易重现的问题,或者对测试环境做压力测试,增加上线信心。 除了占用额外的CPU,内存和带宽外,TCPCopy对生产系统几乎没有影响。此外,在请求多样性,网络延迟和资源占用方面,再现的工作负载与生产工作负载相似。 Github参考地址:https://github.com/session-replay-tools/tcpcopy

番茄酱 2343

TCPcopy安装、部署

TCPCopy的官方仓库https://github.com/session-replay-tools/tcpcopy.git,这货的官方文档是全英文的,不知道为什么,读起来特别有难度。 由于TCPCopy改版,网上的很多资料都不适用于最新版的TCPCopy,当前的最新版是V1.0.0,本文档也是基于该版本。 一、TCPCopy相关的尝试 TCPCopy是用来做TCP重放的,常用...

mao_xiaoxi的博客 3316

tcpcopy新架构具体复杂应用实例(针对tcpcopy0.9系列版本)

在线系统介绍: 假设我们有在线机器A,在线机器B,在线机器C三台服务器,其中在线机器A,上面运行nginx(80端口)的业务系统,供最终用户访问,同时nginx还会内网访问在线机器B上面的adserver(端口11311)业务,在线机器C运行着伪在线业务msyql(利用sysbench模拟的) 测试系统: 我们有测试服务器a,b。 其中a上面运行如下几个系统: 1)nginx业务系统

重思想 8348

【测试环境】TCPCopy 使用方法

TCPCopy是一种请求复制(所有基于tcp的packets)工具,可以把在线请求导入到测试系统中去。目前此工具已经广泛应用于国内各大互联网公司。 TCPCopy七大功能 1)分布式压力测试工具,利用在线数据,可以测试系统能够承受的压力大小(远比ab压力测试工具真实地多),也可以提前发现一些bug 2)普通上线测试,可以发现新系统是否稳定,提前发现上线过程中会出现的诸多问题,让开发者有信心上

ronmy的专栏 3941

2、tcpcopy使用说明--各个参数含义

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/zhang_yanan/article/details/25708349 1简介 XCopy是由网易主导,多家公司成员1参与开发的具有在线server流量复制功能的一系列开源软件的总称,目的是复制在线server流量到测试系统中去,并引入...

mao_xiaoxi的博客 1384

使用tcpcopy进行线上流量导流测试

文章目录导流流程自建机房的用法1. 配置环境2. 线上机器安装tcpcopy3. 辅助机器安装intercept4. 部署5. 添加路由阿里云机房的用法 导流流程 简单理解,通过tcpcopy工具,截取线上服务收到的数据,转发一份数据给测试服务。 参与导流的服务有线上服务、测试服务、tcpcopy、intercept。线上服务和测试服务一般是同个应用程序,或者具备处理导流请求的能力。 tcpcop...

码农的技术人生 993

TcpCopy 流量复制

tcpcopy是一种请求复制(所有基于tcp的packets)工具,可以把在线流量导入到测试系统中去(也可以在测试系统内部放大流量),从而模拟真实运行环境,以便排查测试系统的性能问题和风险。TCPCopy的优势在于其实时性及真实性,除了少量的丢包,可以完全拷贝线上流量到测试机器,真实的模拟线上流量的变化规律。

这个人很懒什么都没有~ 1399
上一篇: 利用tcpcopy,如何复制在线请求到lvs的子系统中去?
下一篇: tcpcopy架构漫谈
wangbin579
博客等级 码龄22年 426粉丝 162原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值