Tcpcopy获取:https://github.com/session-replay-tools/tcpcopy
服务器说明
所需机器:三台linux服务器,一台作为线上环境机器A,一台作为测试机B,一台作为辅助服务器C(各台机器具体用法说明《tcpcopy参考架构选型调研》)
线上环境机器A--------192.168.57.125
测试机B -------192.168.57.126
辅助服务器C ---------192.168.57.128
文档后续内容中用A\B\C分别标识相关服务器
总体安装步骤:
在服务器C上安装 intercept
在服务器A和B上安装tcpcopy
对服务器B进行相关路由设置
测试tcpcopy是否正常运行
在服务器C上安装 intercept
intercept获取路径
1、 git路径:
git clone git://github.com/session-replay-tools/intercept.git
2、 download the v1.0.0:
https://codeload.github.com/session-replay-tools/intercept/tar.gz/1.0.0
intercept安装过程
1、 依赖包:gcc cpp gcc-c++ libgcc libstdc++ libstdc+±devel libpcap libpcap-devel
依赖包安装:yum install –y gcc cpp gcc-c++ libgcc libstdc++ libstdc+±devel libpcap libpcap-devel
2、 Intercept安装:
./configure
make && make install
intercept启动及验证
1、进入intercept安装路径的sbin目录
cd /usr/local/intercept/sbin (以自己本地实际的安装路径为准)
2、启动并设置监听端口:
./intercept -i eth0 -F ‘tcp and src port 8090’ -d
在服务器A和B上安装tcpcopy
1、tcpcopy安装:
./configure (注:离线版用./configure --offline)
make && make install
2、tcpcopy启动
进入tcpcopy安装路径(以本地实际安装路径为准):cd /usr/local/tcpcopy/sbin
执行:./tcpcopy -x 8090-192.168.57.126:8090 -s 192.168.57.128 -c 10.5.214.x
注意:离线版和在线版不能同时使用,建议现网装在线版,测试服务器装离线版
对服务器B进行相关路由设置
添加路由:route add -net 10.5.214.0 netmask 255.255.255.0 gw 192.168.57.128
设置所有到10.5.214.x的响应转移到服务器C上
备注:
1、删除路由:route del -net 10.5.214.0 netmask 255.255.255.0 gw 192.168.57.128
2、辅助服务器要确保没有开启路由模式,为0表示没有开启:
cat /proc/sys/net/ipv4/ip_forward
测试tcpcopy是否正常运行
1、 在192.168.57.125 和 192.168.57.126上搭建nginx+php环境
2、 在服务器192.168.57.125和服务器192.168.57.125上写一个info.php文件
注:测试info.php时注意端口
3、 在其他机器上访问一次服务器A上的info.php文件,检查服务器B上的nginx日志是否存在一次请求记录,若存在则tcpcopy运行正常,否则运行失败
访问服务器A上的info.php文件:http://192.168.57.125:8090/lyadmin/info.php (注意以自己本地实际部署为准)
查看nginx日志:tail -f access.log (注意以本地实际路径为准)
附录:tcpcopy工具集中模式说明
tcpcopy安装步骤:
模式编译说明:
###Configure Options for tcpcopy
–offline 离线回放模式
–pcap-capture 链路层用pcap方式抓包
–pcap-send 在数据链路层发包
–set-protocol-module=PATH 设置tcpcopy为外部协议模块工作
–single 如果intercept和tcpcopy都设置为单机模式,只有一个tcpcopy和一个intercept一起工作,将会获得更好的性能
–with-debug 以debug模式编译tcpcopy(保存在日志文件中)