apache通过httpd.conf配置负载均衡需启用proxy、proxy_http、proxy_balancer等模块,定义balancer集群并设置balancermember及调度策略,再用proxypass将路径绑定到集群,全程无需外部组件。

Apache 在 httpd.conf 中配置负载均衡,核心是启用代理模块、定义后端集群、设置分发策略,并通过 ProxyPass 绑定路径。不依赖外部组件,全部在配置文件内完成。
加载必要模块
Apache 2.4 默认不启用负载均衡相关模块,必须显式加载。在 httpd.conf 开头或模块加载区确认以下行已取消注释:
LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_http_module modules/mod_proxy_http.soLoadModule proxy_balancer_module modules/mod_proxy_balancer.so-
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so(必需,否则状态页失效) -
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so(或lbmethod_bybusyness/lbmethod_bytraffic)
验证是否生效:运行 apachectl -M | grep -E 'proxy|lbmethod|slotmem',确保全部列出。
定义 balancer 集群
在 httpd.conf 的任意位置(通常放在虚拟主机外或单独段落),用 <proxy></proxy> 块声明集群。例如:
<proxy>
BalancerMember http://192.168.1.10:8080 loadfactor=3
BalancerMember http://192.168.1.11:8080 loadfactor=2
BalancerMember http://192.168.1.12:8080 status=+H
ProxySet lbmethod=byrequests
ProxySet timeout=5 retry=60
</proxy>
说明:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
loadfactor按硬件能力设比例(如 8C16G 设 3,4C8G 设 1),无需归一化 -
status=+H表示该节点为热备,仅在其他节点全宕时启用 -
lbmethod=byrequests是轮询;换成bybusyness可按活跃连接数自动调度 -
timeout和retry控制超时与故障恢复时间
绑定请求路径并启用转发
在相同配置文件中添加 ProxyPass 规则,将特定 URL 路径映射到集群:
ProxyRequests Off ProxyPreserveHost On ProxyPass /api/ balancer://myapp/ ProxyPassReverse /api/ balancer://myapp/
关键点:
-
ProxyRequests Off禁用正向代理,只做反向代理 -
ProxyPreserveHost On保留原始 Host 头,便于后端日志和路由识别 - 路径末尾的
/必须一致,否则 URL 重写会出错 - 若需全局根路径分发,用
ProxyPass / balancer://myapp/
可选:开启管理界面(仅限调试)
方便实时查看节点状态和手动上下线:
<location>
SetHandler balancer-manager
Require local
</location>
生产环境务必限制访问(如 Require ip 192.168.1.0/24),切勿开放公网。









