初试tcpcopy

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://navyaijm.blog.51cto.com/4647068/1340809

一、tcpcopy这个软件第一次听说还是在9月份的系统架构师大会上听说的,可一直没时间折腾,前几天弄了一套环境想体验一把,没想到第一次就各种不顺利,在这里特别感谢作者@王斌的细心指导排查,最后找到了问题辅助服务器上开启了路由功能(net.ipv4.ip_forward = 0),真是太坑爹了,tcpcopy的相关介绍请看tcpcopy的介绍、功能,tcpcopy分为tcpcopy client和tcpcopy  server,其中tcpcopy client运行在在线服务器上面,用来捕获在线请求数据包;tcpcopy server(监听端口为36524)运行在测试辅助机器(新架构)上面,在测试服务器的响应包丢弃之前截获测试服务器的响应包,并通过tcpcopy client和tcpcopy server之间的tcp连接传递响应包的tcp和ip
头部信息给tcpcopy client,以完成tcp交互。

二、环境


1

2

3

4

client:     10.10.1.245

线上server:10.10.2.240

测试server:10.10.2.241

辅助server:10.10.2.242

三、部署

1、线上和测试服务器的web服务部署这里就不在描述,本文中web服务跑在80端口上

2、10.10.2.240(tcpcopy client)和10.10.2.242(tcpcopy server)上部署tcpcopy


1

2

3

4

5

6

7

yum -y install libpcap-devel

wget http://tcpcopy.googlecode.com/files/tcpcopy-0.9.6.tar.gz

tar -zxvf  tcpcopy-0.9.6.tar.gz

cd tcpcopy-0.9.6

./configure --enable-advanced --enable-pcap

make

make install

3、启动线上服务器(10.10.2.240)的tcpcopy client


1

2

/usr/local/bin/tcpcopy -x 10.10.2.240:80-10.10.2.241:80 -s 10.10.2.242 -i eth1 -d

解释:复制线上10.10.2.240:80的流量到测试服务器10.10.2.241:80,-s指定辅助服务器(intercept serve),-i 指定从那块网卡抓包

4、启动辅助服务器(10.10.2.242)的tcpcopy server


1

/usr/local/bin/intercept -i eth1 -F 'tcp and src host 10.10.2.241 and src port 80' -d

5、测试服务器上加路由:


1

2

route add -host 10.10.1.245 gw 10.10.2.242

解释:客户端(10.10.1.245)的请求走辅助服务器(10.10.2.242),如果是外网的应用,测试服务器的默认路由可以设置成辅助服务器。

到此,整个环境已经ok了,你在client上访问线上服务器,测试服务器同样也会收到请求,部署的过程中需要注意的两点:

1、辅助服务器上一定不要开路由功能,开了的话他也会给client回包,导致流量复制失败;

2、启动顺序,先启动tcpcopy server,后启动tcpcopy client

 

PS:

1、如何复制N倍流量到测试机?有两种方法,举例复制3倍流量的两种方法:


1

2

3

4

5

6

第一种:

/usr/local/bin/tcpcopy -x 10.10.2.240:80-10.10.2.241:80 -s 10.10.2.242 -i eth1 -d -n 3

第二种:

/usr/local/bin/tcpcopy -x 10.10.2.240:80-10.10.2.241:80 -s 10.10.2.242 -i eth1 -d

/usr/local/bin/tcpcopy -x 10.10.2.240:80-10.10.2.241:80 -s 10.10.2.242 -i eth1 -d -f 1

/usr/local/bin/tcpcopy -x 10.10.2.240:80-10.10.2.241:80 -s 10.10.2.242 -i eth1 -d -f 2

2、如何把线上流量导入到测试系统LVS中?下面具体介绍:

 


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

A、环境:

线上server:10.10.2.100 外网IP:x.x.x.x

测试server1:10.10.2.241

测试server2:10.10.2.242

辅助sever: 10.10.2.246

LVS   调度:10.10.2.240

VIP       :10.10.2.245

B、说明:

1、10.10.2.240是LB,10.10.2.241和10.10.2.242是realserver

2、realserver上部署了和线上一样的web应用,同时修改默认网关为辅助server

route del default gw 10.10.2.1

route add default gw 10.10.2.246

PS:在设置默认网关为辅助服务器的同时要保证lvs可以正常监控到realserver,也就是要保证LB和realserver之前的网络是正常,大家的网络环境都不一样,这个需要注意一下

3、辅助server在上面运行intercept,运行方法如下:

/usr/local/bin/intercept -i eth1 -F 'tcp  and src port 80' -d

4、线上server运行tcpcopy,运行方法:

/usr/local/bin/tcpcopy -x 80-10.10.2.245:80 -s 10.10.2.246:36524 -i eth0 -d

解释:复制网卡设备eth0上面的在线80端口的数据包到虚拟ip地址为10.10.2.245的系统中去,其中测试应用端口号为80端口,运行intercept的机器ip地址为10.10.2.246,端口号为36524。

PS:如果要复制的流量很大,那一台辅助server岂不是成了瓶颈?别急,辅助server可以扩展的,比如有两台辅助server10.10.2.246和10.10.2.247,那线上server的tcpcopy可以这样运行:

/usr/local/bin/tcpcopy -x 80-10.10.2.245:80 -s 10.10.2.246:36524,10.10.2.247:36524 -i eth0 -d

 实际效果如下:

本文出自 “屌丝运维男” 博客,请务必保留此出处http://navyaijm.blog.51cto.com/4647068/1340809

时间: 2024-09-29 10:25:01

初试tcpcopy的相关文章

Nutch使用之锋芒初试

"工欲善其事,必先利其器."经过前文的"细解",我们已经完成了Nutch在Windows中的安装.接下来就让我们通过锋芒初试,来亲自体验一下Nutch的强大功能吧! Nutch的爬虫抓取网页有两种方式,一种方式是Intranet Crawling,针对的是企业内部网或少量网站,使用的是crawl命令:另一种方式是Whole-web crawling,针对的是整个互联网,使用inject.generate.fetch和updatedb等更底层的命令.本文将以使用Nut

初试 Windows XP Embedded 系统开发1

目前 Windows PE(Preinstallation Environment)和 Windows XP Embedded 是可以脱离主机里的硬盘独立运行的 Windows 操作系统,Windows PE 多用于光盘启动,Windows Embedded 从 Feature Pack 2007 之后已经支持从 USB 设备(移动硬盘.Flash U 盘)运行. 从基础开始,菜鸟也可以开发出一个在 USB 移动硬盘上运行的操作系统. 一.Windows Embedded 开发资源简介 Wind

玩玩TCPCOPY+ intercept+mysql-replay-module(未成功)

TCPCOPY+ intercept这两个模拟流量转发倒简单. 但,想实现一个mysql-replay-module模块时,失败了.(我现在仔细想想,这个方案,在我们现在的场景里,实用性不大,但弄好点专业些.)   https://github.com/session-replay-tools/mysql-replay-module https://github.com/session-replay-tools/tcpcopy   安装==============================

android百度地图-百度地图怎么取消初试定位的图标

问题描述 百度地图怎么取消初试定位的图标 图片中的蓝点不想显示,急求怎么设置 解决方案 自带的?不知道你的使用情况,之前做的地图功能标记点都是自己加上去的,没遇到过这种问题,看看是不是调用了地图的某些能自动添加的,如果只是使用基础的定位地图展示,直接参考文档就可以了 解决方案二: 获得这个marker然后remove

C++第2周项目4——动态链表初试

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8635385 [项目4-动态链表初试]数据依然来自score.txt,在程序中建立一个动态链表:每读入一个同学的数据,计算总分,分配结点的存储空间并赋值,并建立起前后相链的关系.在建立链表的同时,要进行统计,以便于求出所有同学总分的平均成绩.动态链表建立后,从头

MySQL master-slave主从复制环境搭建初试

原文:MySQL master-slave主从复制环境搭建初试   环境为centos 7.2+mysql 5.7,网上教程很多,原理也不复杂(深知自己踩的坑还不够) 正常情况下,配置起来比较简单.另外,根据个人感受,MySQL的复制感觉要比SQL Server的复制要清爽很多(尽管功能上可能有一些差异).      master服务器,首先是开启了二进制日志,同时设置server-id为一个具体的数值 1,创建复制用户 GRANT REPLICATION SLAVE ON *.* to 're

被解放的姜戈01 初试天涯

原文:被解放的姜戈01 初试天涯  作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   Django是Python下的一款网络服务器框架.Python下有许多款不同的框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django.虽然Django之于Python,达不到Rail之于Ruby的一统江湖的地位,但Django无疑也是Python在网络应用方面的一位主将.   向昆汀的致敬,"被解放的姜戈

Windows Phone开发(2):竖立自信,初试锋茫

原文:Windows Phone开发(2):竖立自信,初试锋茫  上一篇文章中,我们聊了一些"大炮"话题,从这篇文章开始,我们一起来学习WP开发吧.   一.我们有哪些装备. 安装完VS 学习版 for WP后,也连同SDK一并安装了,不必像安卓那样,安装JDK,下载IDE,还要装SDK和Eclipse插件.WP开发环境是可以一键安装的.   1.模拟器. 这个东东应该说比较重要,如果我们没有现成的WP手机怎么办?模拟器就帮我解决这个问题,我们不需要购买WP手机也可以进行WP应用开发,

ui-UI 中的tag怎么用 新手求详解,最好是实例+解释 新手初试

问题描述 UI 中的tag怎么用 新手求详解,最好是实例+解释 新手初试 UI 中的tag怎么用 新手求详解,最好是实例+解释 ;;;;;;;;;;;;;;;;;;;;;;;;;;; 解决方案 tag可以附加任何你觉得需要附加的数据.比如说id.额外的字段等等.