在 CentOS 上用 Apache 做负载均衡,本质是使用 Apache 的 mod_proxy + mod_proxy_balancer 模块,将请求转发到后端多台服务器(如 Tomcat、Nginx、其他 Apache、应用服务)。
下面给你一个实用、可落地的方案。
假设:
# CentOS 7
yum install httpd -y
# CentOS 8
dnf install httpd -y
启动并设置开机自启:
systemctl start httpd
systemctl enable httpd
Apache 负载均衡需要以下模块:
httpd -M | grep proxy
确保有以下模块(一般默认已加载):
如未加载,编辑:
vim /etc/httpd/conf.modules.d/00-proxy.conf
确保包含:
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
重启 Apache:
systemctl restart httpd
vim /etc/httpd/conf.d/load-balancer.conf
<VirtualHost *:80>
ServerName www.example.com
# 负载均衡器配置
<Proxy "balancer://mycluster">
BalancerMember "http://192.168.1.101:8080"
BalancerMember "http://192.168.1.102:8080"
ProxySet lbmethod=byrequests
</Proxy>
ProxyPass "/" "balancer://mycluster/"
ProxyPassReverse "/" "balancer://mycluster/"
# 状态页面(可选)
<Location "/balancer-manager">
SetHandler balancer-manager
Require ip 192.168.1.0/24
</Location>
</VirtualHost>
ProxySet lbmethod=byrequests
BalancerMember "http://192.168.1.101:8080" loadfactor=3
BalancerMember "http://192.168.1.102:8080" loadfactor=1
BalancerMember "http://192.168.1.102:8080" status=+H
如果是 Java / Tomcat:
ProxySet stickysession=JSESSIONID
示例:
<Proxy "balancer://mycluster">
BalancerMember "http://192.168.1.101:8080" route=node1
BalancerMember "http://192.168.1.102:8080" route=node2
ProxySet lbmethod=byrequests stickysession=JSESSIONID
</Proxy>
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/key.pem
ProxyPass "/" "balancer://mycluster/"
ProxyPassReverse "/" "balancer://mycluster/"
</VirtualHost>
后端可用 HTTP,安全由 Apache 处理。
http://服务器IP/
http://服务器IP/balancer-manager
Require all granted
setsebool -P httpd_can_network_connect 1
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
✅ CentOS 上 Apache 做负载均衡步骤:
balancer://ProxyPass 转发如果你愿意,我可以:
你现在是想接什么后端服务?