我们有 10 台机器 Web 集群,大约有 1500 个 req/seq。
为了测试安装在较小测试集群上的新版本软件,我们如何复制/克隆进入该生产集群的所有用户流量?
它应该是复制,而不是负载平衡,即真实用户必须从生产集群而不是测试集群接收答案。
操作系统:Linux
谢谢。
答案1
我相信您正在寻找的是具有端口镜像功能的交换机。
端口镜像用于网络交换机,将一个交换机端口(或整个 VLAN)上看到的网络数据包的副本发送到另一个交换机端口上的网络监控连接。这通常用于需要监控网络流量的网络设备,例如入侵检测系统。思科系统交换机上的端口镜像通常称为交换端口分析器 (SPAN);其他一些供应商对其有其他名称,例如 3Com 交换机上的流动分析端口 (RAP)。
答案2
您可以使用并行代理轻松实现您想要的功能(http://www.parallelproxy.com)。
注意:我是 Parallel Proxy 的所有者之一。
并行代理允许您向生产服务器和测试服务器发送相同的请求。只有生产响应才会发送回客户端,并且两组响应都会被记录下来以供分析。提供的分析工具可让您轻松查找和分类服务器响应中的差异,从而使您可以在将测试服务器部署到生产环境之前识别和修复测试服务器的问题。
答案3
我从未在这种情况下尝试过,但您可以重播 wirehshark/tcpdump 捕获文件(pcap)。tcp 重放会这样做。因此,如果您觉得必须捕获“错误的网络数据包等”的测试,则可以捕获生产服务器的流量,然后将其重播到测试服务器上。我不知道这是否真的模拟了流量,因为任何类型的会话流量(基于 Web 或 TCP)都需要维护,并且数据包需要正确更改(例如,TCP 初始序列号、ACK 同步等)。
不过,我仍然认为,运行 jmeter 等脚本的测试框架最有意义(如果您觉得有必要,您可以让他们将“黑客式的东西”注入网页中的字段)。然后,同时,您可以使用 scapy 等制作工具启动您自己的 DoS 和畸形数据包(scapy 速度不快,因此不是处理 DoS 部分的理想工具)。无论如何,好的防火墙应该在 DoS/畸形数据包部分到达服务器之前处理它,所以通常我会说这是两个不同的测试。
答案4
你似乎做不到。话虽如此,每个 Web 测试框架都允许您设置模拟用户的脚本并通过该脚本测试他们 - 包括单元测试和更大规模的功能测试。