美文网首页
tcpcopy工具介绍

tcpcopy工具介绍

作者: 金融测试民工 | 来源:发表于2020-11-23 16:35 被阅读0次

        Tcpcopy是一个分布式在线压力测试工具,可以将线上流量拷贝到测试机器,实时的模拟线上环境,达到在程序不上线的情况下实时承担线上流量的效果,这个工具可以使我们运维更加方便模拟线上的流量,让测试环境或者开发环境在真实的环境中测试和验证程序。 非常方便!

    简介

        TCPCOPY 是一个 tcp 流量的实时复制工具,其1.0版本由网易工程师 @tcpcopy 开发和维护。一般用来将生产环境的线上流量实时复制到测试环境进行测试。例如新系统上线前,如果我们希望进行一些基本的压力测试,那么我们可以直接利用 tcpcopy 来复制线上的流量过来对系统进行测试,这样的好处是测试数据接近真实水平,且实施起来相对简单。

    一,架构

        测试中用到的3台服务器信息如下:

    线上服务器 online server      内网IP地址 192.168.0.8/24   外网IP 214.167.0.8/28

    测试服务器 test server         内网IP地址192.168.0.230/24   外网IP 214.167.0.13/28

    辅助服务器 assistant server   内网IP地址 192.168.0.219/24   外网IP 214.167.1.76/24

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

    二,安装

    第一步,在 online server 192.168.0.8上安装并运行 tcpcopy daemon :我们从github上下载1.0版本的源码包;

    wget https://github.com/session-repla ... hive/1.0.0.tar.gz-O tcpcopy-1.0.0.tar.gz

    安装依赖包;

    yum -y install libpcap-devel

    解压编译和安装;

    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 80-192.168.0.230:80-s 192.168.0.219 -c 10.10.10.x -d -C 4 -l tcpcopy.log  -P/var/run/tcpcopy.pid

    指令说明:

    -x 80-192.168.0.230:80将本机上80端口的流量复制到192.168.0.230(测试服务器)的80端口

    -s指定intercept进程所在的服务器192.168.0.219。(丢包服务器)

    -c修改请求的host地址为10.10.10.x,以便在230测试服务器上设置路由(设置路由是为了将应答转向丢219包服务器)

    -C 开启4个进程

    -d 以daemon形式运行

    -l 记录日志

    -P 记录pid

    其他参数可以通过/usr/local/tcpcopy/sbin/tcpcopy-h查看

    成功运行后可以观察到的网路连接状态:

    #ss -an|grep 192.168.0.219

    ESTAB      0      0               192.168.0.8:49034        192.168.0.219:36524

    ESTAB      0      0               192.168.0.8:49035        192.168.0.219:36524

    ESTAB      0      0               192.168.0.8:49032        192.168.0.219:36524

    ESTAB      0      0               192.168.0.8:49033        192.168.0.219:36524

    第二步,在 auxiliary server192.168.0.219上安装并运行 intercept daemon :从github上下载1.0版本的源码包;

    wgethttps://github.com/session-repla ... rchive/1.0.0.tar.gz-Ointercept-1.0.0.tar.gz

    安装依赖包;

    yum -y install libpcap-devel(CentOS6系统直接yum安装即可1.4版本)

    注意CentOS5系统libpcap-devel版本是libpcap-devel-0.9.4-15.el5,intercept-1.0需要libcap-devel1.4以上版本此时需要源码包安装

    yum remove libpcap

    wgethttp://www.tcpdump.org/release/libpcap-1.4.0.tar.gz

    tar zxvf libpcap-1.4.0.tar.gz

    cd libpcap-1.4.0

    ./configure

    make

    make install

    解压编译和安装;

    tar zxvf intercept-1.0.0.tar.gz

    cd intercept-1.0.0

    ./configure (默认raw socket方式抓包)

    make && make install

    最后运行 intercept;

    /usr/local/intercept/sbin/intercept -i eth1 -lintercept.log -P /var/run/intercept.pid -F 'tcp and src port 80' -d

    指令说明:

    -i 监控网卡接口

    -l 记录日志

    -F 监控的协议和端口

    -P 记录pid

    -d 以daemon形式运行

    其他参数可以通过/usr/local/intercept/sbin/intercept-h查看

    成功运行后可以观察到的网路连接状态:

    # ss -an |grep 36524

    LISTEN     0      5                       *:36524                   *:*

    ESTAB      0      66            192.168.0.219:36524          192.168.0.8:49034

    ESTAB      0      0             192.168.0.219:36524          192.168.0.8:49035

    ESTAB      0      66            192.168.0.219:36524          192.168.0.8:49032

    ESTAB      0      0             192.168.0.219:36524          192.168.0.8:49033

    第三步,在 test server 192.168.0.230上设置一条路由:

    [root@bogon ~]# route add -net 10.10.10.0 netmask255.255.255.0 gw 192.168.0.219

    成功运行测试时可以观察到的网络连接状态:

    # ss -an |head

    State      Recv-Q Send-Q       Local Address:Port          PeerAddress:Port

    LISTEN     0      0                127.0.0.1:199                     *:*

    LISTEN     512    0                       *:80                      *:*

    ESTAB   0      0             192.168.0.230:80          10.10.10.1:62602

    ESTAB   0      0             192.168.0.230:80          10.10.10.4:54595

    ESTAB   0      0             192.168.0.230:80          10.10.10.3:53566

    ESTAB   0      0             192.168.0.230:80          10.10.10.6:49260

    ESTAB   0      0             192.168.0.230:80          10.10.10.8:57598

    ESTAB   0      0             192.168.0.230:80          10.10.10.7:64454

    ESTAB   0      0             192.168.0.230:80          10.10.10.1:63081

    相关文章

      网友评论

          本文标题:tcpcopy工具介绍

          本文链接:https://www.haomeiwen.com/subject/hbdviktx.html