apache集群本质是用其作反向代理,将请求分发至多个后端服务实例,依赖mod_proxy_balancer等模块实现负载均衡、健康检查与故障转移,需配置balancer://集群、proxypass路由及会话保持等。

Apache 本身是 Web 服务器,不自带集群能力,它本身是单进程/多线程模型,没有内置的分布式协调、状态同步或自动负载分发机制。所谓“Apache 集群”,实际是指 用 Apache 作为前端反向代理 + 后端多个应用服务(如 Tomcat、Doris、自定义 Java/Python 服务等)组成高可用服务集群,或者搭配第三方模块(如 mod_jk、mod_proxy_balancer)实现请求分发。
所以,“Apache 集群搭建”本质是:Apache 做统一入口,后端挂多个相同服务实例,由 Apache 负责转发、健康检查与故障转移。
Apache 作为负载均衡器的典型架构
- 前端:1 台或 2 台 Apache(可主备,防止单点)
- 后端:多台应用服务器(如 Tomcat、Spring Boot、Doris FE、Druid Broker 等)
- 通信方式:HTTP / AJP(二进制协议,更高效)
- 关键能力:会话保持(sticky session)、权重调度、健康探测、失败自动剔除
必须做的基础准备(所有节点)
- 所有机器时间同步(
chrony或ntpd) - 关闭防火墙或放行对应端口(如 80、443、8009、8080)
- 配置
/etc/hosts,确保主机名能互相解析(避免 DNS 依赖) - 各后端服务正常运行并监听指定端口(如 Tomcat 监听 8080,或 AJP 监听 8009)
核心配置:启用 mod_proxy_balancer(推荐方式)
Apache 自带 mod_proxy 和 mod_proxy_balancer 模块,无需额外编译,只需启用:
a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests systemctl restart apache2 # Ubuntu/Debian # 或 httpd -t && systemctl restart httpd # CentOS/RHEL
然后在虚拟主机配置中加入:
Apache 2.4.62 官方 tar.gz 源码包是 Linux 及类 Unix 系统构建 Web 服务器的核心基础。通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
<proxy>
BalancerMember http://192.168.221.62:8080 route=node1 retry=30
BalancerMember http://192.168.221.63:8080 route=node2 retry=30
BalancerMember http://192.168.221.64:8080 route=node3 retry=30
ProxySet lbmethod=byrequests
</proxy>
ProxyPass "/" "balancer://mycluster/"
ProxyPassReverse "/" "balancer://mycluster/"
# 启用状态页(可选,用于监控)
<location>
SetHandler balancer-manager
Require ip 192.168.221.0/24
</location>
✅ 说明:
lbmethod=byrequests表示按请求数轮询;route=nodeX配合后端jvmRoute可实现会话粘性(需 Tomcat 配置Engine jvmRoute="node1")。
若后端是 Tomcat,推荐用 AJP 协议(更安全高效)
启用 mod_proxy_ajp,配置改为:
<proxy>
BalancerMember ajp://192.168.221.62:8009 route=node1
BalancerMember ajp://192.168.221.63:8009 route=node2
BalancerMember ajp://192.168.221.64:8009 route=node3
</proxy>
ProxyPass "/" "balancer://tomcatcluster/"
ProxyPassReverse "/" "balancer://tomcatcluster/"
同时确保 Tomcat 的 server.xml 中启用了 AJP Connector:
<connector port="8009" protocol="AJP/1.3" redirectport="8443"></connector>
注意事项
- Apache 本身不存储业务状态,集群高可用取决于后端服务是否无状态或支持共享 Session(如 Redis 存 Session)
- 不要直接把 Apache 当作大数据组件集群(如 Doris/Hadoop/ZooKeeper)——它们各自有独立集群机制,Apache 只能做最外层流量入口
- 生产环境建议加 SSL 终止(
mod_ssl),并在 Apache 层做 HTTPS 卸载 - 日志中开启
%{BALANCER_NAME}e和%{BALANCER_ROUTE}e可追踪请求分发路径
不复杂但容易忽略。










