1.环境配置
版本:TCPCopy --> TCPCopy V1.0.0
线上服务器 --> 192.168.88.88
测试服务器 --> 192.168.88.66
辅助服务器 --> 192.168.88.86
辅助IP(网关流转) 192.168.100.100
2.线上机器安装tcpcopy
在线上服务器上下载,然后编译安装tcpcopy的包,如下:
# wget https://github.com/session-replay-tools/tcpcopy/archive/1.0.0.tar.gz
# tar xvf 1.0.0.tar.gz
# cd tcpcopy-1.0.0
# ./configure --prefix=/opt/tcpcopy/
# make
# make install
安装intercept有一些额外的依赖需要安装上,然后和tcpcopy一样的套路源码编译安装
# yum -y install libpcap-devel
# https://github.com/session-replay-tools/intercept/archive/1.0.0.tar.gz
# tar xvf 1.0.0.tar.gz
# cd intercept-1.0.0
# ./configure --prefix=/opt/tcpcopy/
# make
# make install
为了简单期间,我们在线上和测试服务器上各启一个简单的http服务器,最简单的办法,不用apache和nginx,直接用python自带的模块。HTTP服务启动命令如下:
# python -m SimpleHTTPServer
在线上服务器和测试服务器同时运行这个命令,开启一个监听在8000端口的简易HTTP服务器。
先在辅助服务器上开启intercept,步骤不能错,没有intercept的话,tcpcopy启动不起来:
# /opt/tcpcopy/sbin/intercept -i eth0 -F 'tcp and src port 8000' -d
还有其它参数可以使用,-h便可以查看,不详细解释了
然后,在线上服务器开启tcpcopy:
# /opt/tcpcopy/sbin/tcpcopy -x 8000-192.168.88.66:8000 -s 192.168.88.86 -c 192.168.100.100 -n 10 -d
注意:如果有防火墙,请再开启tcpcopy之前先加防火墙规则入下
:RH-Firewall-1-INPUT - [0:0]
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 36524 -j ACCEPT
最后,在测试服务器上开启路由(切记辅助服务器要和测试服务器在一个子网里):
# route add -host 192.168.100.100 gw 192.168.88.86
路由的意思是把发往192.168.100.100的数据包全部转给辅助服务器
测试效果
在另外一台机器上,向线上服务器发起请求,然后查看两个HTTP服务器的实时日志,
线上服务器的结果:
发起了1次请求,返回了10次的HTTP Code。再看测试服务器: