必须加载mod_proxy、mod_proxy_balancer、mod_proxy_http、mod_slotmem_shm及对应lbmethod模块;配置带健康检查与热备节点的balancer集群,启用stickysession和ProxyPassReverse修正响应头,并通过balancer-manager实现可视化管理。

启用必要模块
Apache 要实现多实例集群的负载均衡与故障自动转移,必须加载以下核心模块:
- mod_proxy:提供基础代理能力
- mod_proxy_balancer:支持负载均衡器定义与管理
-
mod_proxy_http:处理 HTTP 协议转发(HTTPS 需额外启用
SSLProxyEngine On) - mod_slotmem_shm:为共享内存提供支撑(2.4+ 必需,用于会话状态和健康检查)
- lbmethod_byrequests / bybusyness / bytraffic:按需加载具体调度算法模块
在 httpd.conf 或模块配置文件中确认这些行已取消注释:
LoadModule proxy_module modules/mod_proxy.so<br>LoadModule proxy_balancer_module modules/mod_proxy_balancer.so<br>LoadModule proxy_http_module modules/mod_proxy_http.so<br>LoadModule slotmem_shm_module modules/mod_slotmem_shm.so<br>LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
定义带健康检查的后端集群
使用 <Proxy balancer://> 块声明集群,并为每个成员设置容错参数:
<Proxy balancer://api-cluster><br> BalancerMember http://127.0.0.1:8001 route=node1 timeout=5 retry=30 maxattempts=3<br> BalancerMember http://127.0.0.1:8002 route=node2 timeout=5 retry=30 maxattempts=3<br> BalancerMember http://127.0.0.1:8003 status=+H # 热备节点,仅当其他节点全宕时启用<br> ProxySet lbmethod=bybusyness<br> ProxySet stickysession=JSESSIONID|PHPSESSID|ROUTEID # 按实际会话 Cookie 名适配<br></Proxy>
关键说明:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
maxattempts=3表示连续失败 3 次后标记该节点为失效 -
retry=30表示 30 秒后尝试恢复连接 -
status=+H标记为热备(Hot Standby),不参与常规分发 -
stickysession后接后端应用实际使用的会话标识名,如 Spring Boot 默认用JSESSIONID,Laravel 用XSRF-TOKEN需配合ProxyPassReverseCookiePath处理
绑定代理规则并启用响应头重写
将请求路径映射到集群,并确保后端返回的跳转、Cookie、Location 等响应头被正确修正:
ProxyPreserveHost On<br>ProxyPass /api/ balancer://api-cluster/api/<br>ProxyPassReverse /api/ balancer://api-cluster/api/<br><br># 可选:传递真实客户端 IP<br>RemoteIPHeader X-Forwarded-For<br>RemoteIPInternalProxy 127.0.0.1
注意:
- 路径前后斜杠必须严格一致(如
/api/对应/api/),否则可能引发 404 或循环重定向 -
ProxyPreserveHost On让后端能拿到原始 Host,对多租户或域名路由场景至关重要 - 若后端服务监听
127.0.0.1,请确认 SELinux 或防火墙未阻止 Apache 进程访问本地端口
启用可视化监控与动态管理
添加 balancer-manager 页面便于实时查看节点状态、手动启停成员、调整权重:
<Location "/balancer-manager"><br> SetHandler balancer-manager<br> Require local<br> # 生产环境建议限制为内网 IP,例如:<br> # Require ip 192.168.1.0/24<br></Location>
访问 http://your-domain.com/balancer-manager 即可看到各节点当前状态(OK / ERR / DIS)、请求数、繁忙度及手动操作入口。该页面默认只允许本地访问,上线前务必校验访问控制策略。

















