在 CentOS 上,Apache HTTP Server(通常叫 httpd)本身不是做“负载均衡/反向代理”的专业负载器,但它可以通过 mod_proxy 模块来实现 简单的负载均衡(反向代理 + 负载分发)。
下面分几种常见情况说明。
# CentOS 7
yum install httpd -y
# CentOS 8
dnf install httpd -y
启动并设置开机自启:
systemctl start httpd
systemctl enable httpd
Apache 负载均衡依赖以下模块:
mod_proxymod_proxy_httpmod_proxy_balancermod_lbmethod_byrequests(常用)检查并启用:
httpd -M | grep proxy
如未启用,在 CentOS 默认已加载;如手动加载,可写:
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 lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
假设后端有两个 Tomcat / Nginx / 应用服务:
编辑配置文件:
vi /etc/httpd/conf.d/loadbalancer.conf
<VirtualHost *:80>
ServerName www.example.com
<Proxy "balancer://mycluster">
BalancerMember "http://192.168.1.10:8080"
BalancerMember "http://192.168.1.11:8080"
ProxySet lbmethod=byrequests
</Proxy>
ProxyPass "/" "balancer://mycluster/"
ProxyPassReverse "/" "balancer://mycluster/"
ErrorLog logs/lb_error.log
CustomLog logs/lb_access.log common
</VirtualHost>
重启 Apache:
systemctl restart httpd
✅ 此时 Apache 就实现了 轮询负载均衡
| 策略 | 说明 |
|---|---|
| byrequests | 按请求数(默认,轮询) |
| bytraffic | 按流量 |
| bybusyness | 按连接数 |
示例:
ProxySet lbmethod=bytraffic
如果后端有 session(如 Tomcat):
<Proxy "balancer://mycluster">
BalancerMember "http://192.168.1.10:8080" route=node1
BalancerMember "http://192.168.1.11:8080" route=node2
ProxySet stickysession=JSESSIONID
</Proxy>
BalancerMember "http://192.168.1.10:8080" status=+H
+H:热备⚠️ Apache 负载能力有限
常见架构:
用户 → Nginx/HAProxy → Apache(Tomcat)
✅ CentOS 上 Apache 负载方式:
mod_proxy + mod_proxy_balancer如果你愿意,我可以:
你现在是打算接 Tomcat / Java / PHP / 多台 Web?