Apache负载均衡需启用proxy、proxy_http、proxy_balancer、lbmethod及slotmem_shm模块,在VirtualHost内定义balancer集群,配置BalancerMember、ProxyPass及会话保持,并校验语法后重启服务。

在 httpd.conf 中配置 Apache 负载均衡,核心是启用代理模块、定义后端集群,并通过 ProxyPass 将请求转发过去。不推荐直接在全局 httpd.conf 顶部写集群配置,而应放在 <VirtualHost> 块内,避免作用域污染和多站点冲突。
确保必需模块已加载
检查或添加以下 LoadModule 行(取消注释):
LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_http_module modules/mod_proxy_http.soLoadModule proxy_balancer_module modules/mod_proxy_balancer.so-
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so(轮询)或lbmethod_bytraffic(按流量) -
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so(必需,用于共享状态)
验证命令:httpd -M | grep -E 'proxy|lbmethod|slotmem',缺一不可。
在 VirtualHost 内定义 balancer 集群
把负载均衡逻辑限定在某个域名或端口范围内,例如:
<VirtualHost *:80>
ServerName api.example.com
<Proxy "balancer://myapp">
BalancerMember http://10.0.1.10:8080 loadfactor=2 route=node1
BalancerMember http://10.0.1.11:8080 loadfactor=1 route=node2
ProxySet lbmethod=byrequests
ProxySet stickysession=ROUTEID
</Proxy>
ProxyPass /api/ balancer://myapp/api/
ProxyPassReverse /api/ balancer://myapp/api/
</VirtualHost>
说明:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
loadfactor控制权重,数值越大分得请求越多 -
route和stickysession配合可实现会话保持(需后端应用支持 jsessionid 或类似标识) -
ProxyPassReverse确保响应头中的Location、Set-Cookie等被正确重写
可选:启用 balancer-manager 页面(仅限内网调试)
加在同一个 <VirtualHost> 内或全局配置中:
<Location "/balancer-manager">
SetHandler balancer-manager
Require local
</Location>
访问 http://your-server/balancer-manager 可实时查看节点状态、手动启停成员、调整权重。
注意路径与协议一致性
后端地址协议必须匹配:
- HTTP 后端用
http://ip:port - AJP 后端(如 Tomcat)用
ajp://ip:port,需额外加载mod_proxy_ajp - 路径结尾斜杠影响匹配行为:
ProxyPass /app/ balancer://xxx/app/中前后斜杠要一致
配置完执行 httpd -t 检查语法,再重启服务生效。

















