apache默认支持轮询调度,启用mod_proxy和mod_proxy_balancer模块后,配置balancermember即可生效;默认lbmethod=byrequests,可加loadfactor设置权重,retry实现故障转移,并通过/balancer-manager监控状态。

Apache 默认就支持轮询(Round Robin)负载调度,只要启用对应模块并正确配置 BalancerMember,无需额外指定算法即可生效。关键在于确保模块可用、后端地址可访问,并理解默认行为与可调参数。
确认并启用必要模块
轮询依赖 mod_proxy 和 mod_proxy_balancer,部分系统还需 mod_slotmem_shm 支持共享内存状态。检查是否已加载:
- 运行
a2enmod proxy proxy_balancer proxy_http(Debian/Ubuntu)或httpd -M | grep proxy(RHEL/CentOS) - 若输出含
proxy_module、proxy_balancer_module、proxy_http_module,说明已就绪 - 未启用需编辑主配置或使用
a2enmod启用,然后重启 Apache
基础轮询配置写法
在虚拟主机或全局配置中添加如下结构(以三台后端为例):
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
<proxy balancer:>
BalancerMember http://10.0.1.10:8080
BalancerMember http://10.0.1.11:8080
BalancerMember http://10.0.1.12:8080
ProxySet lbmethod=byrequests
</proxy>
ProxyPass / balancer://myapp/
ProxyPassReverse / balancer://myapp/
说明:
-
lbmethod=byrequests明确启用请求计数轮询(Apache 2.4 默认值,可省略) - 每条
BalancerMember行代表一个后端节点,按书写顺序参与轮询 - 不设权重时,各节点请求分配比例为 1:1:1
-
ProxyPassReverse确保后端返回的重定向头(如 Location)被正确改写
加入权重与健康检查(进阶实用项)
真实环境中建议补充权重和自动故障剔除,避免单点失效影响整体服务:
- 用
loadfactor=N设置权重(如loadfactor=3表示该节点承担约 3 倍于loadfactor=1节点的请求) - 加
retry=60让失败节点 60 秒后重新尝试接入 - 加
status=+H可手动标记为“热备”(仅当其他节点全宕时才启用) - 完整示例:
BalancerMember http://10.0.1.10:8080 loadfactor=2 retry=60BalancerMember http://10.0.1.11:8080 loadfactor=1 retry=30
验证与调试方法
配置保存后,务必测试效果并观察行为:
- 重启 Apache:
systemctl restart apache2或apachectl graceful - 访问
http://your-apache-server/balancer-manager(需在配置中显式启用该页面并授权)查看实时节点状态、已处理请求数、当前权重分配 - 用
curl -I多次请求,配合后端日志或自定义响应头(如X-Backend: web1)确认轮询是否生效 - 临时停掉某台后端,观察请求是否自动跳过该节点并持续分发到其余节点









