启用mod_proxy_balancer需三步:加载mod_proxy、mod_proxy_http(或ajp)、mod_proxy_balancer、调度模块(如lbmethod_byrequests)、mod_slotmem_shm及mod_status;定义balancer://集群并配置BalancerMember;设置ProxyPass/ProxyPassReverse路由。
apache http server 启用 mod_proxy_balancer 不是单开一个模块就行,而是要激活一组协同工作的模块,并配好基础结构。核心在于“模块齐全 + 集群定义 + 代理路由”三步到位。
确认并启用必需模块
仅加载 mod_proxy_balancer 无法工作。必须同时启用以下模块:
-
mod_proxy:提供反向代理基础能力 -
mod_proxy_http(或mod_proxy_ajp):与后端通信的协议支持(Tomcat 推荐 AJP;通用 HTTP 服务选 HTTP) -
mod_proxy_balancer:集群管理、状态跟踪和调度框架 - 至少一个调度算法模块,如
mod_lbmethod_byrequests(轮询)、mod_lbmethod_bybusyness(按繁忙度) -
mod_slotmem_shm:提供共享内存支持,缺失会导致/balancer-manager界面不可用 -
mod_status(推荐):支撑健康检查和部分算法依赖的状态采集
验证方式(Linux):httpd -M | grep -E 'proxy|lbmethod|slotmem|status'
Ubuntu/Debian 可用:a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests slotmem_shm status
RHEL/CentOS 请检查 /etc/httpd/conf.modules.d/00-proxy.conf 中对应 LoadModule 行未被注释。
定义负载均衡集群
用 <proxy></proxy> 块声明一个命名集群,例如 balancer://mycluster,并在其中列出后端节点和调度策略:
- 每个
BalancerMember指定后端地址,支持route=xxx(用于会话粘性)、loadfactor=N(权重)、ping=5(主动探测间隔)、retry=60(故障恢复等待秒数) -
ProxySet lbmethod=byrequests必须写在之前,作用于整个集群 - 若需热备节点,加
status=+H标记
示例配置:
<Proxy balancer://mycluster>
BalancerMember http://192.168.1.10:8080 route=node1 loadfactor=3 ping=5 retry=60
BalancerMember http://192.168.1.11:8080 route=node2 loadfactor=1 ping=5 retry=60
ProxySet lbmethod=bybusyness
</Proxy>
配置代理规则与路径映射
使用 ProxyPass 和 ProxyPassReverse 完成请求转发与响应头修正:
⚠️ 已弃用 — 该技能已拆分为两个独立技能,以提升模块化程度:**webchat-https-proxy**(HTTPS/WSS 反向代理)和 **webchat-voi...**
-
ProxyPass / balancer://mycluster/:将根路径请求转发到集群 -
ProxyPassReverse / balancer://mycluster/:重写响应头中的Location、Set-Cookie等 URL,避免跳转出错 - 如只代理特定路径(如
/api/),可写为ProxyPass /api/ balancer://mycluster/
完整虚拟主机示例:
<VirtualHost *:80>
ServerName example.com
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
</VirtualHost>
可选:启用 balancer-manager 管理界面
便于实时查看节点状态、手动启停节点或调整权重(生产环境建议限制访问):
<Location "/balancer-manager">
SetHandler balancer-manager
Require host localhost
</Location>
配置生效后,访问 http://localhost/balancer-manager 即可查看集群运行情况。

















