温馨提示×

ubuntu apache2如何做负载均衡

小樊
37
2026-09-05 07:52:00
栏目: 云计算

在 Ubuntu 上使用 Apache2 做负载均衡,通常是通过 Apache 的 mod_proxy + mod_proxy_balancer 模块来实现反向代理和负载均衡。下面我给你一个从零开始、可直接用的方案


一、环境假设

  • OS:Ubuntu 20.04 / 22.04
  • Apache:apache2
  • 后端服务(示例):
    • 192.168.1.101:8080
    • 192.168.1.102:8080
    • 192.168.1.103:8080

Apache 作为 负载均衡器(前端)


二、安装 Apache2

sudo 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

四、配置负载均衡(核心)

1️⃣ 创建配置文件

sudo nano /etc/apache2/sites-available/loadbalancer.conf

2️⃣ 写入以下配置

<VirtualHost *:80>
    ServerName example.com

    # 负载均衡集群
    <Proxy "balancer://mycluster">
        BalancerMember "http://192.168.1.101:8080"
        BalancerMember "http://192.168.1.102:8080"
        BalancerMember "http://192.168.1.103:8080"

        # 负载均衡策略
        ProxySet lbmethod=byrequests
    </Proxy>

    # 反向代理
    ProxyPass "/" "balancer://mycluster/"
    ProxyPassReverse "/" "balancer://mycluster/"

    # 可选:会话保持(如需要)
    # ProxyPass "/" "balancer://mycluster/" stickysession=JSESSIONID

    # 状态页面(可选)
    <Location "/balancer-manager">
        SetHandler balancer-manager
        Require local
    </Location>

    ErrorLog ${APACHE_LOG_DIR}/lb_error.log
    CustomLog ${APACHE_LOG_DIR}/lb_access.log combined
</VirtualHost>

五、启用站点

sudo a2ensite loadbalancer.conf
sudo a2dissite 000-default.conf
sudo systemctl restart apache2

六、负载均衡策略说明

策略 说明
byrequests 轮询(默认)
bytraffic 按流量
bybusyness 按连接数

修改方式:

ProxySet lbmethod=bytraffic

七、健康检查(推荐)

BalancerMember "http://192.168.1.101:8080" status=+H

或自动检测:

BalancerMember "http://192.168.1.101:8080" ping=5

八、HTTPS(可选但重要)

如果你需要 HTTPS:

sudo apt install certbot python3-certbot-apache
sudo certbot --apache

Certbot 会自动帮你改 VirtualHost。


九、验证

curl http://localhost

多次访问,观察请求被分发到不同后端。


十、适合场景 & 不适合场景

✅ 适合:

  • 中小型负载
  • 已有 Apache
  • 简单 HTTP 服务

❌ 不适合:

  • 超高性能场景(建议 Nginx / HAProxy)
  • 四层负载(L4)

如果你愿意,我可以:

  • 给你 Nginx vs Apache 负载均衡对比
  • 帮你写 Docker + Apache 负载均衡
  • 帮你做 HTTPS + 会话保持

你现在是 什么业务场景

0