在 Ubuntu 上使用 Apache2 配置负载均衡,通常是通过 mod_proxy 和 mod_proxy_balancer 模块来实现的(反向代理 + 负载均衡)。下面给你一个从零开始的完整示例。
sudo apt update
sudo apt install apache2
Apache 做负载均衡需要以下模块:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
sudo a2enmod headers
启用后重启 Apache:
sudo systemctl restart apache2
假设你有两台后端服务器(可以是本机不同端口,也可以是不同机器):
192.168.1.101:8080192.168.1.102:8080如果是本机测试,也可以:
127.0.0.1:8081127.0.0.1:8082编辑 Apache 站点配置:
sudo nano /etc/apache2/sites-available/loadbalancer.conf
<VirtualHost *:80>
ServerName example.com
# 负载均衡器
<Proxy "balancer://mycluster">
BalancerMember "http://192.168.1.101:8080"
BalancerMember "http://192.168.1.102:8080"
ProxySet lbmethod=byrequests
</Proxy>
ProxyPreserveHost On
ProxyPass "/" "balancer://mycluster/"
ProxyPassReverse "/" "balancer://mycluster/"
# 可选:状态页面
<Location "/balancer-manager">
SetHandler balancer-manager
Require local
</Location>
</VirtualHost>
sudo a2ensite loadbalancer.conf
sudo a2dissite 000-default.conf # 可选
sudo systemctl restart apache2
常用 ProxySet 参数:
| 策略 | 说明 |
|---|---|
lbmethod=byrequests |
按请求数轮询(默认) |
lbmethod=bytraffic |
按流量 |
lbmethod=bybusyness |
按连接数 |
示例:
ProxySet lbmethod=bytraffic
BalancerMember "http://192.168.1.101:8080" status=+H
或:
ProxySet lbmethod=byrequests timeout=5
如果你需要 HTTPS:
sudo a2enmod ssl
使用 ProxyPass 到 https:// 后端,并配置证书。
访问:
http://your-server-ip/
查看是否轮询到不同后端。
查看状态页:
http://your-server-ip/balancer-manager
检查:
Require all granted
是否加在 <Proxy> 里。
如果你愿意,我可以:
你现在是 单机测试 还是 多台服务器?