轮询(byrequests)是apache默认负载均衡策略,按请求计数顺序分发;按连接数调度(bybusyness)选活跃连接最少节点;按流量调度(bytraffic)依响应字节数分配,三者均通过mod_proxy_balancer实现,需启用对应lbmethod模块并正确配置proxyset。
apache 负载均衡中,“轮询”是默认且最基础的请求分发策略,而“按需调度”并非 apache 原生术语——它通常指根据实时指标(如连接数、响应时间)动态调整流量,对应的是 bybusyness 或 bytraffic 等算法。两者配置逻辑不同,但都通过 mod_proxy_balancer 实现,关键在于 lbmethod 参数和配套模块是否启用。
轮询策略(byrequests):简单、确定、适合稳定环境
按请求计数顺序分发,不依赖后端状态,轻量可靠。
- 必须启用
mod_lbmethod_byrequests模块(多数 Apache 版本默认加载,可用httpd -M | grep byrequests验证) - 在
<proxy></proxy>块中显式设置:ProxySet lbmethod=byrequests - 可配合
loadfactor实现加权轮询,例如:BalancerMember http://s1:80 loadfactor=3和BalancerMember http://s2:80 loadfactor=1,则 s1 接收约 75% 的请求 - 无需额外健康检查参数,但建议加上
maxattempts=3和retry=60提升容错性
按连接数调度(bybusyness):动态感知负载,避免过载
选择当前活跃连接数最少的后端节点,适合请求处理时长差异大、连接生命周期不一的场景。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 需启用
mod_lbmethod_bybusyness模块(非默认,常需手动LoadModule) - 配置中使用:
ProxySet lbmethod=bybusyness - 不依赖权重,但支持
loadfactor作为初始容量参考(仅影响初始分配倾向,不改变核心逻辑) - 要求后端支持
KeepAlive,否则连接数统计失真;建议后端开启KeepAliveTimeout并设合理值(如 5–15 秒)
按流量调度(bytraffic):适配带宽或响应体差异大的服务
依据已传输字节数分配请求,对返回大文件、流式接口更公平。
- 启用
mod_lbmethod_bytraffic模块 - 配置:
ProxySet lbmethod=bytraffic - 自动累加后端响应体大小,无需额外参数;但若后端压缩不一致(如有的开 gzip,有的没开),会影响字节统计准确性
- 适合 CDN 回源、媒体服务等以输出量为瓶颈的架构
实际配置要点提醒
所有策略都需确保以下基础模块已加载:mod_proxy、mod_proxy_http、mod_proxy_balancer、mod_slotmem_shm(否则管理界面和共享状态会失效)。lbmethod 必须写在 <proxy></proxy> 块内,且不能与冲突策略混用(如同时设 byrequests 和 bybusyness 会导致行为未定义)。真实 IP 透传(RequestHeader set X-Forwarded-For %{REMOTE_ADDR}e)和会话保持(stickysession=ROUTEID)可独立叠加,不影响调度逻辑本身。









