不同VLAN环境下实现Jmeter分布式测试的方案咨询
跨VLAN环境JMeter分布式测试可行解决方案
JMeter跨VLAN通信失败的核心原因是默认RMI协议使用动态端口通信,被VLAN间的防火墙、ACL规则拦截,以下是3种可落地的实现方案:
方案1:固定RMI通信端口 + VLAN间ACL放行(改造成本最低)
- 所有从节点(负载生成器)修改
jmeter.properties配置,固定通信端口:
1099为JMeter默认RMI端口,可替换为其他未占用端口,所有主从节点的端口配置需统一server.rmi.port=1099 server.rmi.localport=1099 client.rmi.localport=1099 # 若开启RMI SSL校验,新增以下配置 server.rmi.ssl.port=4445 - 主节点修改同版本
jmeter.properties,新增上述client侧RMI端口配置,启动时追加参数指定可被跨VLAN访问的IP:jmeter -Djava.rmi.server.hostname=主节点跨VLAN可达IP - 从节点启动服务时追加参数指定自身跨VLAN可达IP:
jmeter-server -Djava.rmi.server.hostname=当前从节点跨VLAN可达IP - 联系网络管理员在VLAN间ACL规则中放行以下流量:
- 主节点与所有从节点之间1099端口的TCP双向流量
- 若开启SSL,同步放行4445端口的TCP双向流量
方案2:隧道打通跨VLAN网络(适合网络管控严格的场景)
如果VLAN间默认禁止通信,无法批量放行多台从节点的端口,可通过隧道实现网络打通:
- 在主节点所在VLAN内选1台服务器作为中转节点,仅需要放开跨VLAN对该节点的SSH或者GRE协议访问权限
- 所有跨VLAN的从节点通过SSH隧道将本地RMI端口流量转发到主节点,示例命令:
ssh -L 1099:主节点内网IP:1099 中转节点登录名@中转节点跨VLAN可达IP - 隧道配置完成后,主从节点直接通过隧道映射的本地端口通信即可,无需调整JMeter原有配置
方案3:Kubernetes分布式部署(适合长期大规模测试场景)
如果已有容器集群环境,可将JMeter主从节点全部部署到K8S集群中:
- 通过K8S的CNI网络插件打通集群内网络,不受节点实际所在VLAN限制
- 主节点通过Service暴露服务,从节点直接通过Service名注册到主节点即可
- 可根据测试所需的负载规模,动态扩缩容从节点数量,无需手动调整网络配置
内容的提问来源于stack exchange,提问作者Pratush Mishra
相关产品推荐
相关产品推荐

