tcpcopy簡介
TCPCOPY 是一個 tcp 流量的實時複製工具,其1.0版本由網易工程師 @tcpcopy 開發和維護。一般用來將生產環境的線上流量實時複製到測試環境進行測試。例如新系統上線前,如果我們希望進行一些基本的壓力測試,那麼我們可以直接利用 tcpcopy 來複制線上的流量過來對系統進行測試,這樣的好處是測試數據接近真實水平,且實施起來相對簡單。
一、部署環境
1.1、服務器列表
192.168.5.2 線上服務器
192.168.5.3 測試服務器
192.168.5.4 輔助服務器
二、部署tcpcopy和intercept服務
2.1、部署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
2.2、部署intercept服務:
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
三、啓動服務
3.1、首先啓動輔助服務器intercept服務,不然tcpcopy服務起不來:
/opt/tcpcopy/sbin/intercept -i enp2s0 -l intercept.log -P /var/run/intercept.pid -F 'tcp and src port 8000' -d
3.1.1、參數說明:
-i 監控網卡接口
-l 記錄日誌
-F 監控的協議和端口
-P 記錄pid
-d 以daemon形式運行
3.2、再次啓動線上服務器tcpcopy服務:
/usr/local/tcpcopy/sbin/tcpcopy -x 8000-192.168.5.3:8000 -s 192.168.5.4 -c 192.168.4.254 -d -C 4 -n 2 -l tcpcopy.log -P /var/run/tcpcopy.pid
3.2.1、參數說明:
-x 8000-192.168.5.3:8000將本機上8000端口的流量複製到192.168.5.3(測試服務器)的8000端口
-s 指定intercept進程所在的服務器192.168.5.4。(輔助服務器)
-c 修改請求的host地址爲192.168.4.254,以便在(192.168.5.3)測試服務器上設置路由(設置路由是爲了將應答轉向丟192.168.5.4包服務器)
-C 開啓4個進程
-d 以daemon形式運行
-l 記錄日誌
-P 記錄pid
-n 指定包放大的倍數
3.2.2、線上服務器檢查
[root@localhost ~]# ss -an |grep 192.168.5.4
tcp ESTAB 0 0 192.168.5.2:45950 192.168.5.4:36524
tcp ESTAB 0 0 192.168.5.2:45954 192.168.5.4:36524
tcp ESTAB 0 0 192.168.5.2:45952 192.168.5.4:36524
tcp ESTAB 0 0 192.168.5.2:45956 192.168.5.4:36524
3.2.3、輔助服務器檢查:
[root@k8s-node1 ~]# ss -tlunp|grep 36524
tcp LISTEN 0 5 *:36524 *:* users:(("intercept",pid=5770,fd=5))
四、添加路由
測試服務器添加路由
route add -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.5.4
五、使用python自帶模塊啓動web服務
python -m SimpleHTTPServer
六、在其它服務器進行測試
curl 192.168.5.4:8000
七、查看流量的轉發情況