本文介绍如何使用ALB流量镜像功能仿真在线流量。
应用场景
很多企业的线上业务对安全性和稳定性有着极高的要求,在新功能发布前的测试或压测中,为了不影响线上业务,不能直接在线上环境操作,但同时又需要真实的线上流量来验证新功能的正确性和评估服务性能。人工构造的测试数据往往难以覆盖线上的真实请求分布,导致测试结果失真。
ALB提供的流量镜像功能可以实现在线流量仿真:在ALB入口(包括公网入口)处,将客户端发往线上业务的真实请求按需复制一份,在正常转发给线上业务服务器组的同时,将复制出的镜像流量同步转发给测试业务服务器组。ALB会自动丢弃镜像后端服务器返回的响应数据,且不影响客户端与线上业务之间的正常请求和响应,从而保证测试业务不会影响到线上业务。主要有以下应用场景:
使用真实的线上流量测试新功能和评估服务性能,无需人工构造测试数据即可完成仿真压测。
仿真线上数据,不需要额外制造测试数据,测试结果更贴近真实业务表现。
复现线上问题,方便故障定位。
采集并镜像公网入口的真实业务流量,用于测试环境的流量回放、仿真压测和容量评估。

限制说明
公网ALB和私网ALB都支持流量镜像功能。
基础版ALB实例不支持流量镜像功能。
前提条件
通过流量镜像实现在线流量仿真
- 登录应用型负载均衡ALB控制台。
在顶部菜单栏,选择ALB实例的所属地域。
在实例页面,单击目标实例ID。
在监听页签,找到目标监听,然后在操作列单击查看/编辑转发规则。
在页签,单击插入新规则。
在插入转发规则区域,配置转发条件,指定需要镜像的流量范围。
转发条件用于匹配需要镜像的请求,您可以按域名、路径等条件按需匹配。如需镜像该监听下的全部线上流量(例如采集公网入口的所有真实业务请求),可将路径设置为
/*(匹配所有路径);如仅镜像部分流量,可将路径设置为具体路径。本文以将路径为/test的流量镜像至测试业务服务器组为例。配置转发动作,为该条转发规则依次添加以下两个动作。
添加转发至动作,选择正常业务服务器组,保证匹配到的线上流量正常转发至线上业务,不影响线上服务。
单击添加动作,添加流量镜像至动作,选择测试业务服务器组,将匹配到的流量复制一份镜像至测试环境。
重要由于ALB会丢弃测试业务服务器组返回的响应数据,所以本条转发规则内一定要添加转发至正常业务服务器组的动作,以免影响线上业务。
单击确定,完成配置后,匹配该转发规则的线上流量将被镜像至测试业务服务器组。
验证镜像效果
配置完成后,可通过以下方式确认线上流量已被真实采集并镜像至测试业务服务器组:
在测试业务服务器上查看访问日志(如 Nginx、Tomcat 等应用日志),确认能够收到与线上业务一致的真实请求,且请求内容与客户端实际访问相符。
在测试业务服务器组的监控中,观察请求数、连接数等指标随线上流量变化而变化,说明镜像流量已成功到达测试环境。
确认客户端侧访问线上业务的响应正常、无异常延迟,验证流量镜像未对线上业务造成影响。
如果测试业务服务器组未收到镜像流量,请检查:转发条件是否能匹配到实际的线上请求(如路径、域名是否正确)、该转发规则的优先级是否被其他更高优先级的规则拦截、以及测试业务服务器组后端服务器是否健康。