在 Ubuntu 上使用 Apache2 做负载均衡,通常是利用 Apache 的 mod_proxy + mod_proxy_balancer 模块,将请求转发到多台后端服务器(如 Tomcat、Node.js、其他 Apache、Nginx 等)。
下面给你一个从零开始的完整示例。
192.168.1.10192.168.1.20:8080192.168.1.21:8080sudo apt update
sudo apt install apache2 -y
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
sudo a2enmod headers
重启 Apache:
sudo systemctl restart apache2
sudo nano /etc/apache2/sites-available/loadbalancer.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>
sudo a2ensite loadbalancer.conf
sudo a2dissite 000-default.conf
sudo systemctl restart apache2
多次访问:
curl http://192.168.1.10
如果后端返回不同内容,说明负载均衡已生效。
| 策略 | 说明 |
|---|---|
byrequests |
按请求数(默认) |
bytraffic |
按流量 |
bybusyness |
按后端繁忙程度 |
示例:
ProxySet lbmethod=bytraffic
BalancerMember "http://192.168.1.20:8080" status=+H
或:
ProxySet ping=5
ProxyPass "/" "balancer://mycluster/"
SSLProxyEngine on
后端支持 HTTP 或 HTTPS 均可。
✅ 使用 HTTPS
✅ 限制 balancer-manager 访问
✅ 后端 session 一致性(sticky session)
✅ 配合防火墙(UFW)
如果你愿意,我可以:
你现在是用来做什么系统?(Web / API / 微服务?)