goreplay 是一个很不错的流量拷贝,复制工具,小巧,支持一些扩展,当然也提供了企业版,企业版
功能更强大,支持二进制协议的分析
备注: 演示使用docker-compose 运行,测试镜像流量到其他的两个web app (openresty)
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"FROM openresty/openresty:alpine-fatLABEL 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/binADD entrypoint.sh /entrypoint.shADD goreplay.sh /goreplay.shENTRYPOINT ["/sbin/tini","-s", "--", "/entrypoint.sh"]#!/bin/shsh goreplay.shexec /usr/local/openresty/bin/openresty -g "daemon off;" #!/bin/shnohup 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