最直观的测试方式是让后端返回可区分标识并批量请求验证:轮询应交替出现,加权轮询按权重比例分发,最少连接优先调度空闲节点,会话粘性确保同一会话始终路由至同一后端。
直接观察请求分发效果是最直观的测试方式。核心思路是:让每个后端服务器返回可区分的标识,再发起多次请求,看响应内容是否符合对应策略的分配逻辑。
准备可识别的后端服务
在每台后端服务器(如 Tomcat 或独立 HTTP 服务)上部署一个简单接口,返回明确的机器标识:
- server1:返回 Server: node-a 或写入响应体中包含
host=node-a - server2:返回 Server: node-b 或响应体含
host=node-b - 确保两台服务都正常监听(如
curl -I http://192.168.1.101:8080/test可通)
按策略逐项验证转发行为
修改 Apache 配置后,每次只启用一种策略并重启,再用工具批量请求:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 轮询(byrequests):连续发 6 次请求,应看到 node-a、node-b 交替出现,如 a→b→a→b→a→b
-
加权轮询(loadfactor):设 node-a 的
loadfactor=3、node-b 为1,发 4 次请求,应得 a,a,a,b(顺序可能微调,但比例趋近 3:1) - 最少连接(bybusyness):先让 node-a 处理大量长连接请求使其“繁忙”,再发新请求,多数应落到 node-b
-
会话粘性(stickysession):用同一浏览器或带 Cookie 的 curl 连续请求,检查响应头中
Set-Cookie: JSESSIONID=xxx.node-a是否始终指向同一 route;手动删 Cookie 后再请求,应重新分配
借助 balancer-manager 实时核对
启用 /balancer-manager 页面后,访问 http://your-apache/balancer-manager(需配置访问控制):
- 页面中能看到每个
BalancerMember的状态(OK/ERR/DIS)、已处理请求数、当前繁忙连接数 - 刷新页面并同时发起请求,观察计数器实时变化,确认流量确实按预期流向目标节点
- 若某节点显示 ERR,说明健康检查失败,需排查网络、端口或后端服务是否存活
用命令行快速批量验证
不用图形界面也能高效测试:
- 循环 10 次请求并提取标识:
for i in {1..10}; do curl -s http://localhost/test | grep host; done - 统计分布:
curl -s http://localhost/test | grep host | sort | uniq -c - 验证粘性:带 Cookie 发送两次,比对 Set-Cookie 中的 route 值是否一致









