goreplay 镜像nginx web app流量

goreplay 是一个很不错的流量拷贝,复制工具,小巧,支持一些扩展,当然也提供了企业版,企业版
功能更强大,支持二进制协议的分析
备注: 演示使用docker-compose 运行,测试镜像流量到其他的两个web app (openresty)

环境准备

docker-compose 文件

 
version: "3"
services:
    nginx:
      build: ./
      ports:
      - "8080:80"
    app:
      image: openresty/openresty:alpine-fat
      ports:
      - "8090:80"
    app2:
      image: openresty/openresty:alpine-fat
      ports:
      - "8091:80"

包含goreplay 的docker 配置

  • dockerfile
    使用了一个tini 的工具,方便后台任务运行,同时因为wget 二进制包太慢,所以直接下载add 了
 
FROM openresty/openresty:alpine-fat
LABEL author="1141591465@qq.com"
COPY gor_0.16.1_x64.tar.gz .
RUN apk add --update && apk add --no-cache tini \
    && tar xzf gor_0.16.1_x64.tar.gz -C /usr/local/bin \
    && rm gor_0.16.1_x64.tar.gz 
ENV PATH=$PATH:/usr/local/bin
ADD entrypoint.sh /entrypoint.sh
ADD goreplay.sh /goreplay.sh
ENTRYPOINT ["/sbin/tini","-s", "--", "/entrypoint.sh"]
 
  • entryppint.sh
#!/bin/sh
sh goreplay.sh
exec /usr/local/openresty/bin/openresty -g "daemon off;" 
  • goreplay.sh
    goreplay 的运行命令,主要是进行流量的拷贝
 
#!/bin/sh
nohup goreplay --input-raw :80 --output-http "http://app" --output-http "http://app2" &

运行&&效果

运行

docker-compose up -d
 

效果

我们访问nginx 8080 端口,其他端口的也会有数据流量,通过查看日志即可,从下边的日志我们可以看出
nginx 日志较早,然后是app app2 请求时间是一样的

 
docker-compose logs -f 
 

说明

类似的可以使用nginx 自带的mirror 指令,或者tcpcopy 。。。,同时goreplay 也支持kafka 的集成,还是很方便的

参考资料

https://github.com/buger/goreplay/wiki/Getting-Started
https://github.com/rongfengliang/goreplay-openresty-demo

posted on 2019-01-13 11:06  荣锋亮  阅读(1162)  评论(0编辑  收藏  举报

导航