在 CentOS 上,用 Apache HTTP Server(httpd) 实现负载均衡,通常是通过 mod_proxy + mod_proxy_balancer 模块来完成的。下面给你一个从安装到配置可用的完整示例。
yum install httpd -y
dnf install httpd -y
启动并设置开机自启:
systemctl start httpd
systemctl enable httpd
Apache 负载均衡需要以下模块:
mod_proxymod_proxy_httpmod_proxy_balancermod_lbmethod_byrequests(常用)查看模块:
httpd -M | grep proxy
如果没看到 proxy_balancer_module,一般 CentOS 默认已带,无需额外安装。
假设:
vi /etc/httpd/conf.d/load-balancer.conf
<VirtualHost *:80>
ServerName example.com
# 负载均衡器
<Proxy "balancer://mycluster">
BalancerMember "http://192.168.1.20:8080"
BalancerMember "http://192.168.1.21:8080"
ProxySet lbmethod=byrequests
</Proxy>
ProxyPreserveHost On
ProxyPass "/" "balancer://mycluster/"
ProxyPassReverse "/" "balancer://mycluster/"
# 可选:状态页面
<Location "/balancer-manager">
SetHandler balancer-manager
Require ip 192.168.1.0/24
</Location>
</VirtualHost>
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
httpd -t
systemctl reload httpd
访问:
http://192.168.1.10/
请求会被分发到两个后端节点。
ProxySet lbmethod=byrequests
ProxySet lbmethod=bytraffic
ProxySet lbmethod=bybusyness
BalancerMember "http://192.168.1.20:8080" loadfactor=3
BalancerMember "http://192.168.1.21:8080" loadfactor=1
BalancerMember "http://192.168.1.20:8080" status=+H
✅ 适合:
❌ 不适合:
如果你愿意,我可以:
你现在是 Web / API / 微服务 场景?