apache加权轮询核心是为balancermember设置loadfactor参数,按权重比例动态分发请求;需启用mod_proxy、mod_proxy_balancer和mod_proxy_http模块;配置lbmethod=byrequests并结合ping/retry健康检查确保稳定性。

Apache 负载均衡配置加权轮询策略,核心是在 balancer:// 集群中为每个后端节点设置 loadfactor 参数,让请求按权重比例分发。它不是简单重复发送 N 次再切下一个,而是 Apache 内部基于累计权重计数实现的动态轮询,更公平也更可控。
启用必要模块
确保以下三个模块已加载并启用:
- mod_proxy:提供基础代理能力
- mod_proxy_balancer:实现负载均衡逻辑(含调度算法)
- mod_proxy_http:支持 HTTP/HTTPS 协议转发(最常用)
可通过命令验证:apachectl -M | grep proxy,输出中应包含这三项且状态为 shared。
定义加权轮询集群
在虚拟主机或主配置(如 httpd.conf 或 extra/httpd-vhosts.conf)中添加如下结构:
<proxy balancer:>
BalancerMember http://192.168.1.100:8080 loadfactor=5
BalancerMember http://192.168.1.101:8080 loadfactor=3
BalancerMember http://192.168.1.102:8080 loadfactor=2
ProxySet lbmethod=byrequests
</proxy>
ProxyPass / balancer://myapp/
ProxyPassReverse / balancer://myapp/
说明:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 每个
BalancerMember后跟loadfactor=N,表示该节点相对权重 - 总权重比为 5:3:2,即每 10 个请求中,约 5 个到第一台、3 个到第二台、2 个到第三台
-
lbmethod=byrequests显式指定轮询算法,推荐保留,避免隐式行为歧义
增强稳定性:加入健康检查
加权轮询本身不检测节点是否存活,需搭配探测机制才能自动规避故障:
-
ping=5:每 5 秒向后端发 HEAD 请求探测可用性 -
retry=60:节点失败后 60 秒内不再分配请求 -
status=+H(可选):标记为热备节点,仅当其他节点全部不可用时才启用
示例完整节点写法:BalancerMember http://192.168.1.100:8080 loadfactor=5 ping=5 retry=60
验证与调试
启用 balancer-manager 模块后,可通过浏览器访问 http://your-apache-server/balancer-manager 查看实时状态:
- 确认各节点权重显示正确(如 W=5、W=3、W=2)
- 观察“Requests”列增长是否符合预期比例
- 检查“Status”是否为
OK,异常节点会标为ERR并自动剔除
注意:需在配置中显式开放该管理路径,并限制访问来源以保障安全。









