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

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

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

相关文章
|
Java 存储 jvm-sandbox
海量流量下,淘宝如何进行稳定的流量回放?
随着业务的不断发展, 整个淘系的服务端已经有数千个应用,在淘宝已经有非常大的应用数量和变更次数的基础上, 对流量回放也有更高的要求。那么在不断尝试流量的录制与回放的过程中,我们遇到了什么问题?那么在不断尝试的过程中,我们遇到了什么问题?我们由从中得到了什么启示?流量录制回放又能给我们带来多少收益?
10617 1
|
存储 算法 NoSQL
还分不清 Cookie、Session、Token、JWT?看这一篇就够了
Cookie、Session、Token 和 JWT(JSON Web Token)都是用于在网络应用中进行身份验证和状态管理的机制。虽然它们有一些相似之处,但在实际应用中有着不同的作用和特点,接下来就让我们一起看看吧,本文转载至http://juejin.im/post/5e055d9ef265da33997a42cc
49003 13
|
SQL Java 数据库连接
mybatis报错 resultMapException
mybatis报错 resultMapException
702 0
mybatis报错 resultMapException
|
存储 分布式计算 负载均衡
【大数据技术Hadoop+Spark】MapReduce概要、思想、编程模型组件、工作原理详解(超详细)
【大数据技术Hadoop+Spark】MapReduce概要、思想、编程模型组件、工作原理详解(超详细)
1488 0
|
网络协议 Java 测试技术
性能工具之常见流量复制工具
我们把用户访问系统造成的数据传输定义为流量,那么在用户访问系统的过程中,我们可以把进入和流出的数据复制下来,进行保存,待后续使用,即离线模式,或者转发到一个新的服务器,立即使用,即在线模式。
850 2
性能工具之常见流量复制工具
|
机器学习/深度学习 人工智能 算法
软件测试中的人工智能:现状与未来
本文探讨了人工智能在软件测试中的应用,包括自动化测试、缺陷预测、测试用例生成等方面。通过分析当前AI技术的优势和不足,提出了未来可能的发展方向,为软件测试领域提供了新的思路和方法。
652 4
|
12月前
|
弹性计算 安全 数据库
活动实践 | 通过弹性公网 IP 确保服务迁移时公网 IP 不变
该方案通过弹性公网IP(EIP)实现公网IP与不同资源的灵活关联和解绑,支持业务水平扩容和资源迁移。具体步骤包括:创建ECS实例并分配固定公网IP,安装Web服务,创建自定义镜像以快速部署新实例,将原实例的固定公网IP转为EIP,并将其解绑后绑定到新实例上,确保服务迁移后对外IP不变。最后,清理资源以避免不必要的费用。
|
消息中间件 存储 测试技术
流量回放的数据隔离
流量回放的数据隔离
484 4
|
机器学习/深度学习 存储 测试技术
从0到1:如何规划一套流量回放自动化测试方案
本文介绍了流量回放自动化测试的完整方法,从企业战略到交付的四个关键环节:Discovery(深度挖掘)、Define(定义目标)、Design(详细设计)和Delivery(交付与反馈)。通过这些步骤,帮助企业优化系统性能和稳定性,确保产品的高质量。
370 4