初试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

 实际效果如下:

153301170.jpg

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

目录
相关文章
|
6月前
|
域名解析 负载均衡 网络协议
温故知新-Nginx服务器篇
温故知新-Nginx服务器篇
47 0
|
12月前
|
SQL 安全 数据库
记一次稍微有点曲折的getshell
记一次稍微有点曲折的getshell
|
编解码 运维 测试技术
一文搞懂App测试,APP测试方案
一文搞懂App测试,APP测试方案
609 0
热饭的测开成果盘点第二十三期:wqrfproxy自动抓包断言库
本期介绍的是一个组件,身为python的第三方库,已经被pypi收录,且国内镜像源也早已复制。也就是说可以通过pip install 来下载。这个组件就是:wqrfproxy ,它的作用是可以在正常的unittest脚本中,对app发出的请求进行断言。
热饭的测开成果盘点第二十三期:wqrfproxy自动抓包断言库
Win系统 - 问题集
Win系统 - 问题集
54 0
|
监控 关系型数据库 MySQL
安装Zabbix过程中出现的问题集
<p style="margin-top:0pt; margin-bottom:0pt; padding-top:0px; padding-bottom:0px; border:0px; list-style:none; word-wrap:normal; word-break:normal"> <span style="word-wrap:normal; word-break:norm
9872 0
|
Kubernetes 网络协议 Linux
五分钟带你玩转k8s(三)全网最新最全搭建master方式,楼主亲测可用
五分钟带你玩转k8s(三)全网最新最全搭建master方式,楼主亲测可用
283 0
五分钟带你玩转k8s(三)全网最新最全搭建master方式,楼主亲测可用
|
应用服务中间件
没有ngrok的日子,幸好还有路由侠
没有ngrok的日子,幸好还有路由侠
136 0
没有ngrok的日子,幸好还有路由侠
|
运维 小程序 网络协议
技术干货 | mPaaS 客户端问题排查:漫长的 3s 等待之谜
对于开发者来说,排查手段已经不再局限于构建代码过程中的调试,往往需要扩充排查方法,从多种途径对问题进行分析和定位。这篇文章会和大家分享 mPaaS 开发者的一例小程序网络性能问题排查之旅。
914 0
技术干货 | mPaaS 客户端问题排查:漫长的 3s 等待之谜
|
关系型数据库
OSWatcher使用过程中小问题解决方法
本文介绍一下在使用OSWatcher过程当中遇到的两个问题的解决方法。如有更好的方法,敬请留言。 1:OSWatcher在配置文件里面设置了参数OSW_COMPRESSION为gzip后,OSWatcher采集的数据文件都会被压缩。
1084 0