tcpcopy搭建及测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/WDhani82475/article/details/86549996

一、介绍

从一台机器上面复制到这台机器的TCP请求流量到另一台机器,达到两台机器能拿到一样的数据,这样可以用真实的线上数据对即将上线的服务进行测试

meaning
: A机器上拷贝 【到A机器的tcp流量】 B机器上

二、环境

TCPCOPY版本:
TCPcopy:V1.0.0
Intercept:V1.0.0

三、原理

TCPCOPY的架构图

Online Server:线上的机器,运行TCPCOPY程序
Target Server:测试机,也就是需要将线上流量复制到这台机器上
Assistant Server:辅助机,运行Intercept程序

解释:
Online Server:
Online Server上面运行着TCPCOPY程序,从上图可以看出TCPCOPY程序在IP层抓取数据包,对数据包进行相应的处理,再由IP层将数据包发到Target Server。运行TCPCOPY程序需要指定复制本机的哪个端口的数据和复制到哪台机器的哪个端口
Target Server:
Target Server上面运行需要测试的程序。由于线上的服务器会将请求回给请求的发起者(例如客户端),因此Target Server是不应该给请求的发起者回复请求,Target Server需要将返回的请求发给Assistant Server。因此需要在Target Server上面配置路由将返回客户端的请求数据发给Assistant Server,由Assistant Server上面运行的Intercept程序处理。
Assistant Server:
Assistant Server上面运行Intercept程序,由图可见,Intercept程序在数据链路层截获数据包,获取数据包的头信息,进行相应的处理,再返回给Online Server上面的TCPCOPY程序

四、安装步骤

测试过程中用到的3台服务器信息:
线上服务器:10.200.131.235
测试服务器:10.200.131.233
辅助服务器:10.200.131.232

10.200.131.235是线上服务器,10.200.131.232和10.200.131.233是测试环境。我们在10.200.131.235上运行tcpcopy把线上流量拷贝到10.200.131.233,在10.200.131.233上我们通过路由将应答转向10.200.131.232,在10.200.131.232上把应答丢弃

具体步骤:
一、在 线上服务器 10.200.131.235上安装并运行 tcpcopy daemon (client)
1、tcpcopy下载 wget https://github.com/session-replay-tools/tcpcopy/archive/1.0.0.tar.gz -O tcpcopy-1.0.0.tar.gz
2、安装依赖包 apt-get install libpcap-dev
3、解压编译和安装
tar zxvf tcpcopy-1.0.0.tar.gz
cd tcpcopy-1.0.0
./configure (默认raw socket方式抓包)
make
make install
最后运行 tcpcopy;
/usr/local/tcpcopy/sbin/tcpcopy -x 800-10.200.131.233:800 -s 10.200.131.232 -c 10.10.10.x -d
4、停止服务
ps aux|grep tcpcopy 获取pid
Kill -9 pid
5、指令说明:
-x 800-10.200.131.233:800本机上800端口的流量复制到10.200.131.233(测试服务器)的800端口
-s指定intercept进程所在的服务器10.200.131.232。(丢包服务器)
-c修改请求的host地址为10.10.10.x,以便在10.200.131.233测试服务器上设置路由(设置路由是为了将应答转向丢10.200.131.232包服务器)
-d 以daemon形式运行
二、在辅助机10.200.131.232上安装intercept ,并后台运行(server)
1、Intercept下载 git clone https://github.com/session-replay-tools/intercept.git
2、安装依赖包
wget http://www.tcpdump.org/release/libpcap-1.4.0.tar.gz
apt-get install libpcap-dev 解决:(pcap_create() … found but is not working)
3、解压编译和安装
3.1
tar zxvf libpcap-1.4.0.tar.gz
cd libpcap-1.4.0
./configure
make
make install

3.2

cd intercept
./configure (默认raw socket方式抓包)
make && make install
最后运行 intercept;
/usr/local/intercept/sbin/intercept -i eth1 -F ‘tcp and src port 80’ -d
4、指令说明:
-i 监控网卡接口
-l 记录日志
-F 监控的协议和端口
-d 以daemon形式运行
三、在测试服务器 10.200.131.233 上设置一条路由:
route add -net 10.10.10.0 netmask 255.255.255.0 gw 10.200.131.232
成功运行route命令时可以观察到的网络连接状态。

五、注意事项

1、测试服务器和辅助服务器必须在同一个子网
2、先必须启动服务器(辅助服务器上的intercept),再启动客户端(线上服务器上的tcpcopy)
3、客户端上tcpcopy安装时,必须安装libpcap-dev 依赖文件;服务上intercept安装时,必须安装libpcap-1.4.0.tar.gz 依赖文件。
4、停止服务时,先终止掉tcpcopy服务,再停止掉intercept 服务。

六、简单测试

在线上服务器和测试服务器上分别启python -m SimpleHTTPServer 800
利用浏览器,访问线上服务器看测试服务器上是否有备份
在这里插入图片描述
在这里插入图片描述

七、已经部署的环境:
1、把Rankserver2机器上的流量拷贝到paramserver1.hz.163.org机器上,通过paramserver2.hz.163.org作为辅助机器。

2、把Rankserver1机器上的流量拷贝到paramserver2.hz.163.org机器上,通过paramserver3.hz.163.org作为辅助机器。

猜你喜欢

转载自blog.csdn.net/WDhani82475/article/details/86549996