goReplay流量回放

基本原理:
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"

 

 流量回放成功

posted @ 2023-02-12 21:15  Joson6350  阅读(159)  评论(0编辑  收藏  举报
欢迎联系