TCPCOPY 1.0 安裝使用
TCPCOPY 1.0 安裝使用
簡介
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-replay-tools/tcpcopy/archive/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 server 192.168.0.219上安裝並運行 intercept daemon :
從github上下載1.0版本的源碼包;
wget https://github.com/session-replay-tools/intercept/archive/1.0.0.tar.gz -O intercept-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
wget http://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 -l intercept.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 netmask 255.255.255.0 gw 192.168.0.219
成功運行測試時可以觀察到的網絡連接狀態:
# ss -an |head
State Recv-Q Send-Q Local Address:Port Peer Address: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
參考鏈接:
http://blog.csdn.net/wangbin579/article/details/8949315
http://blog.csdn.net/wangbin579/article/details/8950282