在 CentOS + Apache 环境下做负载均衡,通常使用的是 Apache 的 mod_proxy + mod_proxy_balancer 模块。下面给你一个实战可用、常见的配置示例(以 CentOS 7/8 为例)。
192.168.1.10192.168.1.20:8080192.168.1.21:8080yum install httpd -y
# CentOS 8 可用
# dnf install httpd -y
Apache 默认通常已包含这些模块,但需确认:
httpd -M | grep proxy
应看到:
proxy_moduleproxy_http_moduleproxy_balancer_modulelbmethod_byrequests_module若未加载,编辑:
vi /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
vi /etc/httpd/conf.d/loadbalancer.conf
<VirtualHost *:80>
ServerName www.example.com
# 负载均衡器状态页面(可选)
<Location /balancer-manager>
SetHandler balancer-manager
Require ip 192.168.1.0/24
</Location>
ProxyRequests Off
<Proxy "balancer://mycluster">
BalancerMember "http://192.168.1.20:8080"
BalancerMember "http://192.168.1.21:8080"
ProxySet lbmethod=byrequests
</Proxy>
ProxyPass "/" "balancer://mycluster/"
ProxyPassReverse "/" "balancer://mycluster/"
</VirtualHost>
| 策略 | 说明 |
|---|---|
byrequests |
轮询(默认) |
bytraffic |
按流量 |
bybusyness |
按连接数 |
示例:
ProxySet lbmethod=bytraffic
BalancerMember "http://192.168.1.20:8080" loadfactor=2
BalancerMember "http://192.168.1.21:8080" loadfactor=1
表示 20 号机器处理 2/3 请求。
如果应用依赖 Session:
ProxySet stickysession=JSESSIONID
(后端 Tomcat 常见)
systemctl start httpd
systemctl enable httpd
http://192.168.1.10http://192.168.1.10/balancer-manager 查看节点状态若后端是 HTTPS:
BalancerMember "https://192.168.1.20:8443"
前端 HTTPS:
ProxyPass 不变❌ 后端防火墙未放行
❌ SELinux 拦截(可临时 setenforce 0 测试)
❌ 后端返回 Redirect 导致域名错乱(用 ProxyPassReverse)
如果你愿意,我可以:
你现在后端是什么服务?