tcpcopy-1.0.0實戰之拷貝生產服務器流量做壓力測試

tcpcopy1.0.0安裝使用

在tcpcopy 1.0版本中對整個架構的一個改進,將原本需要運行在測試機上的intercept移除放到一個獨立的輔助機上來,使得測試機需要做的操作少到僅僅是添加一條路由而已,對整個測試機的性能損耗可以忽略,排除了intercept運行在測試機上時產生的性能影響,使得測試數據更加接近真實水平。

一、系統環境:

centos6.5 x86_64

線上服務器:172.16.1.23  (tcpcopy安裝配置)

輔助服務器:172.16.1.24  (intercept安裝配置)

測試服務器:172.16.1.25  (添加路由)

二、線上服務器部署tcpcopy-1.0.0
#git clone git://github.com/session-replay-tools/tcpcopy.git

#cd tcpcopy

#./configure
#make && make install

#/usr/local/tcpcopy/sbin/tcpcopy -v
tcpcopy version:1.0.0

#/usr/local/tcpcopy/sbin/tcpcopy -x 80-172.16.1.25:80 -s 172.16.1.24 -c 172.16.100.x -d -C 4 -l /var/log/tcpcopy.log

# ps -ef|grep tcpcopy
root      6743     1  9 15:08 ?        00:02:24 /usr/local/tcpcopy/sbin/tcpcopy -x 80-172.16.1.25:80 -s 172.16.1.24 -c 172.16.100.x -d -C 4 -l /var/log/tcpcopy.log

原理:將80端口收到的流量複製到測試機ip 172.16.1.25的80端口,並設置輔助機的ip地址爲172.16.1.24,且將複製過去的流量中的源地址統一更改爲172.16.100.x,這樣做的好處是我們在測試機上可以直接針對整個更改後的網段設置一條路由即可。

三、輔助服務器部署intercept-1.0.0

#yum install -y libpcap
#git clone http://github.com/session-replay-tools/intercept.git
#tar xf intercept-1.0.0.tar.gz
#cd intercept
#./configure
#make && make install
#/usr/local/intercept/sbin/intercept -v
intercept version:1.0.0
#/usr/local/intercept/sbin/intercept -i eth0 -l /var/log/intercept.log -F 'tcp and src port 80' -d

#ps -ef|grep intercept

root     31017     1  2 14:59 ?        00:00:59 /usr/local/intercept/sbin/intercept -i eth0 -l /var/log/intercept.log -F tcp and src port 80 -d
#ss -an

原理:輔助機的 intercept 通過-F 參數制定捕獲規則,捕獲tcp連接中源端口爲80的所有數據,也即是測試機的迴應數據。其作用是將測試機路由過來的響應數據捕獲下來,完成整個請求迴應的流程且保證測試機產生的迴應數據不會流向線上環境。intercept 會監聽 tcp 36524 端口,並和線上機172.16.1.23的 tcpcopy 之間建立通信,我們通過ss命令可以觀察到。需要注意的是輔助機和測試機一定要是同一網段。

四、測試服務器部署

//添加路由
#route add -net 172.16.100.0 netmask 255.255.255.0 gw 172.16.1.24
#ss -an

#tail -f /opt/logs/tengine/access_www.51auto.log

原理:線上機tcpcopy複製流量時將源地址改寫爲172.16.100網段的地址,那麼在測試機上看到的流量中源地址全部是來源於這個網段,我們僅僅需要將返回給這個網段的所有客戶端的請求全部通過輔助機 172.16.1.24 路由出去,這樣在輔助機上就可以對全部的迴應包進行截獲處理了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章