极简的流量复制和放大方式

简介: 极简的流量复制和放大方式

nginx除了做一些负载均衡以外,可以比较方便的处理流量,进行一些流量的复制和放大的功能。


1. 流量复制的好处

1. 可以验证功能是否正常,以及服务的性能;

2. 用真实有效的流量请求去验证,又不用造数据,不影响线上正常访问;

3. 相比于灰度发布,镜像流量不会影响真实流量;

4. 可以用来排查线上问题;

5. 重构,假如服务做了重构,这也是一种测试方式;


2. nginx流量复制模块-ngx_http_mirror_module

  • 源站请求,直接原路返回;正常配置下,mirror请求不影响源站请求及响应,源站nginx-server将流量复制到mirror站后,两者不再有任何交集。


  • 示例
upstream kevin-order {
  server 127.0.0.1:8088;
}
upstream kevin-mirror1 {
    server 172.16.60.230:8088;
}
server {
    listen 80;
    server_name  kevin.com;
    access_log  /usr/local/nginx/logs/kevin.com-access.log main;
    error_log   /usr/local/nginx/logs/kevin.com-error.log;
  # 源站点1
    location /order {
        proxy_pass http://kevin-order;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 复制请求体
        mirror_request_body on;
        # 流量复制
        mirror /mirror1;
    }
    # 镜像站点1
    location /mirror1 {
        proxy_pass http://kevin-mirror1$request_uri;
        proxy_pass_request_body on;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

配置说明:上面配置中,将访问http://kevin.com/order的流量复制到172.16.60.230服务器的8088端口。


3. 流量放大

server {
        listen       80;
        server_name  kevin.com;
        # 源站配置
        location / {
                access_log  /usr/local/nginx/logs/access.log  accesslog;
                mirror /mirror;
                # 多加一份mirror,流量放大一倍
                mirror /mirror;
                mirror_request_body on;
                proxy_pass http://kevin.upstream.name;
        }
        # 镜像站点配置
        location /mirror {
                internal; # 内部配置
                proxy_pass http://mirror.kevin.upstream.name$request_uri;
                proxy_pass_request_body on;
                proxy_set_header X-Original-URI $request_uri;  #使用真实的url重置url
        }
}


参考链接:https://www.cnblogs.com/kevingrace/p/14001080.htmlhttp://nginx.org/en/docs/http/ngx_http_mirror_module.html

nginx1

相关文章
|
7月前
|
前端开发
动态水滴页面
动态水滴页面
42 0
|
7月前
|
网络协议 Java 测试技术
性能工具之常见流量复制工具
我们把用户访问系统造成的数据传输定义为流量,那么在用户访问系统的过程中,我们可以把进入和流出的数据复制下来,进行保存,待后续使用,即离线模式,或者转发到一个新的服务器,立即使用,即在线模式。
278 2
性能工具之常见流量复制工具
一个解决视频切换花屏的方案
指挥传递RTP的是RTCP,那么RTCP中有没有介绍传递I帧的命令呢?我抱着这样的疑问进行了下搜索,解决方法RFC已经帮我们定义好了。
一个解决视频切换花屏的方案
|
搜索推荐 5G 数据安全/隐私保护
想要网站流量好,这一步不可少
想要网站流量好,这一步不可少
223 0
想要网站流量好,这一步不可少
html+css实战157-定位-固定
html+css实战157-定位-固定
127 0
html+css实战157-定位-固定
|
Java 测试技术 微服务
为什么我建议线上高并发量的日志输出的时候不能带有代码位置(下)
为什么我建议线上高并发量的日志输出的时候不能带有代码位置(下)
为什么我建议线上高并发量的日志输出的时候不能带有代码位置(下)
|
算法 Java 微服务
为什么我建议线上高并发量的日志输出的时候不能带有代码位置(上)
为什么我建议线上高并发量的日志输出的时候不能带有代码位置(上)
为什么我建议线上高并发量的日志输出的时候不能带有代码位置(上)
|
数据采集 编解码 数据处理
案例分享:Qt高频fpga采集数据压力位移速度加速度分析系统(通道配置、电压转换、采样频率、通道补偿、定时采集、距离采集,导出excel、自动XY轴、隐藏XY轴、隐藏显示通道,文件回放等等)
案例分享:Qt高频fpga采集数据压力位移速度加速度分析系统(通道配置、电压转换、采样频率、通道补偿、定时采集、距离采集,导出excel、自动XY轴、隐藏XY轴、隐藏显示通道,文件回放等等)
案例分享:Qt高频fpga采集数据压力位移速度加速度分析系统(通道配置、电压转换、采样频率、通道补偿、定时采集、距离采集,导出excel、自动XY轴、隐藏XY轴、隐藏显示通道,文件回放等等)
|
JSON 数据格式 计算机视觉
案例分享:Qt的80路显示超大屏幕拼接(十台服务器,每台八路摄像头)方案和Demo
案例分享:Qt的80路显示超大屏幕拼接(十台服务器,每台八路摄像头)方案和Demo
|
存储 SQL Cloud Native
低延迟流复制
在PolarDB云原生架构下,低延迟也发挥了作用的作用。
低延迟流复制