流量复制_详解如何用GoReplay实现生产环境流量复制

概述

最近项目需要对接口平台重构,但是接口来源只有一个,所以考虑了流量复制这个方式,看能不能将生产环境的流量复制到测试环境来测试。下面是先介绍下gor相关概念,然后介绍下用gor测试的其中一个实验。


01

GoReplay

GoReplay,原名叫gor,是一款go语言实现的简单安全的HTTP 实时流量复制的开源工具,用于捕获和回放实时HTTP流量到测试环境中,以便不断地用真实数据测试应用系统,可以用于增强对代码部署、配置更改和基础设施更改的信心。完美解决了 HTTP 层实时流量复制和压力测试的问题。

架构如下图所示:

6d1a95e176d8f14284a4a802d1b67dd2.png

从架构图可以看到,只需要http入口服务器上执行一个进程,就可以把生产环境的流量复制到任何地方,比如 Staging 环境、Dev 环境。

通过查看官网可以看到,开源版本的GoReplay只支持http,如果需要支持Thrift、protoBuffers等协议,需要购买GoReplay pro版本。

6438fee5b92471ce57f7ae4271502fd5.png

02GoReplay 的功能

GoReplay支持流量的放大和缩小、频率限制,这样不需要搭建和生产环境一致的服务器集群也可以正确测试。GoReplay 还支持根据正则表达式过滤流量,这意味着可以单独测试某个 API 服务。还可以修改 HTTP 请求头,比如替换 User-Agent, 或者增加某些 HTTP Header 。

GoReplay还可以把请求记录到文件,以备回放和分析。GoReplay 支持和 ElasticSearch 集成,将流量存入 ES 进行实时分析。


03

GoReplay实验测试

1、 实验环境

线上服务器 --> 172.26.150.134

测试服务器 --> 172.26.150.153

2、安装部署

在线上服务器上安装:

wget https://github.com/buger/goreplay/releases/download/v0.16.1/gor_0.16.1_x64.tar.gztar xzf gor_0.16.1_x64.tar.gz
4387c93438d287be2f468bdc02ee4239.png

解压后即为一个名叫goreplay的二进制可执行文件。

3、离线模式

在134上执行如下命令

./goreplay -input-raw :80 -output-file requests.gor

同样也在另外一台机器上,向线上服务器发起请求

这时候查看生成的requests.gor文件:

可以看到,生成的 requests_0.gor文件即为http请求报文。

6656f1a6dfdcdc4b5ca5934ef2ccda4d.png

当中线上服务器执行命令时

./goreplay -input-file=requests_0.gor -output-http="http://172.26.150.153:7030"
3a67ac94f29918d52679f24b07ef8a7d.png
a55ce6503fbde002cf937047d2ae52c1.png

可以看到这153服务器上的应用可以接受到请求。

4、在线模式

在134上执行如下命令

./goreplay -input-raw :80 -output-http="http://172.26.150.153:7030"

这时发送请求 curl http://172.26.150.134/ams/login

可以看到134和153上同时都收到的请求

2d5c0d08ec379a57add2f62fc3f2f390.png
6c58ee820805d6e652f280624eee90d1.png

Linux环境的话实现问题不大,不过接口平台是部署在win server上,好像gor是没有win版本的,所以这个方案还是不太可行。

后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

9d56ab0506c2bb1a4aced9790b9e2a88.gif
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值