流量回放工具
1.tcpcopy
需要三臺伺服器
一臺線上伺服器 一臺測試伺服器 一臺輔助伺服器 ,輔助伺服器的作用是以免將測試伺服器的響應打到線上伺服器上去
下載安裝
https://github.com/session-replay-tools/tcpcopy
http://github.com/session-replay-tools/intercept
線上伺服器安裝tcpcopy
解壓後
cd tcpcopy
./configure
make && make install
輔助伺服器安裝intercept
cd intercept
./configure
make && make install
/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,這樣做的好處是我們在測試機上可以直接針對整個更改後的網段設定一條路由即可。
2.goreplay
下載 https://github.com/buger/goreplay
進入目錄go build,完成後會有一個可執行檔案 goreplay
1. 轉發(改成你需要的ip和埠)
./goreplay --input-raw :8080 --output-http "http://192.168.1.100:6660"
2. 儲存到檔案
./goreplay --input-raw :8080 --output-file “requests.gor“
3. 儲存到檔案,新增內容到相同檔案
./goreplay --input-raw :8080 --output-file requests.txt --output-file-append
4. 從檔案轉發
./goreplay --input-file requests.txt --output-http "http://192.168.1.100:6660
5. 只允許轉url regexp
./goreplay --input-raw :8080 --output-http staging.com --http-allow-url /api
6. 轉發到本機tcp(適用於nginx upstream的情況)
需要開啟2個goreplay
./goreplay --input-raw :1029 --output-tcp "localhost:28020"
./goreplay --input-tcp :28020 --output-file "request.gor"
7. 迴圈+流量放大
./goreplay --input-file "oo01_0.log|1000%" --output-http "http://xxx.cn" --input-file-loop
8.控制流量
./goreplay –input-tcp :28020 –output-http “http://staging.com|10″
以回放oms流量為例
再10.10.10.10 上回放流量到127.0.0.1 上
./goreplay --input-raw :9008 --output-http "http://127.0.0.1:9008"
監控日誌看到有流量打過來
[root@s1 /data/www/oms/log]# tail -f application.log.202202141900
3.nginx的mirror
ngx_http_mirror_module模組,利用mirror模組,業務可以將線上實時訪問流量拷貝至其他環境,基於這些流量可以做版本釋出前的預先驗證
4.日誌回放
最簡單的就是直接日誌回放
|