Apache负载均衡通过配置反向代理与集群实现,核心是启用mod_proxy、mod_proxy_http、mod_proxy_balancer和mod_slotmem_shm模块,定义balancer://集群并设置权重、调度算法与会话保持,再用ProxyPass转发请求,辅以健康检查和管理界面。

启用必要模块
确保以下模块已加载(检查 httpd.conf 或运行 apachectl -M | grep -E 'proxy|balancer'):
- mod_proxy:提供基础代理能力
- mod_proxy_http:支持 HTTP 协议转发
- mod_proxy_balancer:提供负载均衡调度功能
- mod_slotmem_shm:共享运行状态(健康检查必需)
若未启用,在配置文件中添加类似语句:
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
定义后端集群(balancer://)
用 <Proxy> 块声明一个集群,例如名为 balancer://myapp:
<Proxy "balancer://myapp">
BalancerMember http://192.168.1.10:8080 loadfactor=3 retry=60
BalancerMember http://192.168.1.11:8080 loadfactor=1 retry=60
ProxySet lbmethod=bybusyness
ProxySet stickysession=ROUTEID
</Proxy>
说明:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- loadfactor 控制权重,数值越大承担请求越多
- retry 是故障节点恢复检测间隔(秒)
- lbmethod 推荐静态资源用 bybusyness,动态服务可用 byrequests
- stickysession 启用会话保持,需后端配合生成 ROUTEID 或 JSESSIONID
配置请求转发规则
使用 ProxyPass 将路径映射到集群:
ProxyRequests Off ProxyPass / balancer://myapp/ ProxyPassReverse / balancer://myapp/
注意:
- ProxyRequests Off 必须关闭正向代理,防止被滥用
- ProxyPassReverse 重写后端响应中的 Location、Set-Cookie 等头,保证重定向和 Cookie 正确
- 如只对静态资源做负载均衡(如 /js、/css),可单独配置:
ProxyPass /js balancer://static/
可选:启用管理界面与健康检查
方便监控节点状态(仅限内网访问):
<Location "/balancer-manager">
SetHandler balancer-manager
Require ip 127.0.0.1 192.168.1.0/24
</Location>
健康检查依赖 mod_slotmem_shm 和 ping= 参数(如 ping=3 表示每3秒探测一次)。

















