基本原理: goreplay监听一个端口的流量 然后记录下来 在另一个服务上 去回放这个记录下来的流量文件。
1 先安装go的运行环境
2.1 go环境搭建
tar -C /usr/local -zxvf go1.18.linux-amd64.tar.gz
vim /etc/profile
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
执行 编译生效
source /etc/profile
验证
go env
2.2 goRepay搭建
cd /root/gor
mkdir gor
tar xvf gor_1.3.3_x64.tar.gz -C ./gor
2 goReplay流量复制回放步骤
首先是对生产环境进行流量复制操作,使用如下命令:# 流量复制
./gor --input-raw:8081 --output-stdout
# 或者 流量复制并保存到文件(推荐)
./gor --input-raw:8081 --output-file "requests.gor"
然后根据业务高峰期等待1小时,甚至更长时间,例如12小时,
这个过程中会看到在gor运行目录下生成requests_0.gor,如果1个文件放不下,会继续生成_1、_2等录制文件。
gor文件会记录整个录制过程中所有发的http协议请求,分批存到不同的gor文件中,按【ctrl+c】停止录制。
然后是在性能环境进行流量回放操作,使用如下命令:
#流量回放 默认回放等待5秒
./gor --input-file "requests_0.gor" --output-http "http://192.168.199.131:8082"
这样就能实现在8081生产环境录制的http流量,重新在性能环境8082上回放一遍,默认是每隔5秒发一次请求。
类似于生产的流量到灰度环境上回放
还可以使用如下流量回放命令:
# 保留上次信息
./gor --input-raw:8081 --output-file "requests_0.gor" --output-file-append
#实时回放
./gor --input-raw:8081 --output-http "http://192.168.199.131:8082"
#缩容
./gor --input-raw:8081 --output-http "http://192.168.199.131:8082|50%" --input-file-loop
#实时回放GET
./gor --input-raw:8081 --http-allow-method GET --output-http "http://192.168.199.131:8082"
流量回放成功
标签:http,回放,--,流量,input,goReplay,gor From: https://www.cnblogs.com/josonhuang/p/17114742.html