一、作用
tcpcopy可以复制线上真实流量到测试环境做压力测试,返回信息进过处理进入黑洞一般,无需担心返回给客户。
二、原理
tcpcopy和intercept两个组件
-tcpcopy
安装在生产主机上,生产主机会接受正常流量,正常流量被tcpcopy复制并发送至测试环境主机。
- intercept
安装intercept组件的主机被称作辅助主机,他接收测试环境主机返回的响应信息(测试环境将路由指向辅助主机),辅助主机返回响应信息给安装tcpcopy的生产主机,完成一次请求流程。
三、实验
192.168.31.100 测试环境主机(指路由) nginx开启80端口
192.168.31.101 生产环境主机(tcpcopy) nginx开启80端口
192.168.31.200 辅助主机(intercept)
1. 下载
tcpcopy
https://github.com/session-replay-tools/tcpcopy/releases
intercept
https://github.com/session-replay-tools/intercept/releases
./configuremake && make install
2. 辅助主机操作
- 辅助主机不返回给客户端响应信息,所以关闭路由转发
echo "0" > /proc/sys/net/ipv4/ip_forward
- 辅助主机先开启intercept组件,不开启tcpcopy无法启动
intercept组件监听抓取测试主机对应端口返回的响应信息
./intercept -i eth0 -F 'tcp and src port 8000' -d-i 监听指定网卡送来的信息-F 过滤信息-d 以守护进程形式启动
3. 生产主机操作
./tcpcopy -x 80-192.168.31.100:80 -s 192.168.31.200 -c 192.168.31.201 -n 2 -d-x 指定本地复制的端口,以及复制流量发送到的主机及端口-s 辅助主机intercept的ip,将tcpcopy会和intercept建立连接,默认连接36524端口-c 伪装地址,修改复制流量的原地址,测试主机返回响应信息时候指了路由,将伪装地址转发给辅助主机做处理-n 放大流量,2就是两倍-d 以守护进程方式启动
4. 测试主机
指定路由将响应请求发送给辅助主机做处理
route add -host 192.168.31.201 gw 192.168.31.200
5. 测试流程
访问生产主机80端口,查看测试主机nginx日志是否有对应的访问信息,而且是放大的流量