温馨提示×

ubuntu apache2怎样配负载均衡

小樊
45
2026-09-11 03:07:41
栏目: 云计算

在 Ubuntu 上使用 Apache2 配置负载均衡,通常是通过 mod_proxy 和 mod_proxy_balancer 模块来实现的(反向代理 + 负载均衡)。下面给你一个从零开始的完整示例。


一、安装 Apache2

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

三、准备后端服务(示例)

假设你有两台后端服务器(可以是本机不同端口,也可以是不同机器):

  • 后端1:192.168.1.101:8080
  • 后端2:192.168.1.102:8080

如果是本机测试,也可以:

  • 127.0.0.1:8081
  • 127.0.0.1:8082

四、配置负载均衡(VirtualHost)

编辑 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(可选)

如果你需要 HTTPS:

sudo a2enmod ssl

使用 ProxyPass 到 https:// 后端,并配置证书。


九、验证

访问:

http://your-server-ip/

查看是否轮询到不同后端。

查看状态页:

http://your-server-ip/balancer-manager

十、常见问题

1. 403 Forbidden

检查:

Require all granted

是否加在 <Proxy> 里。

2. 502 Bad Gateway

  • 后端服务没启动
  • 防火墙没放行端口

如果你愿意,我可以:

  • 给你 Docker + Apache 负载均衡 示例
  • 配 HTTPS + 负载均衡
  • 配 Session 保持(sticky session)

你现在是 单机测试 还是 多台服务器?

0 踩