温馨提示×

ubuntu apache2如何配负载均衡

小樊
36
2026-10-08 01:52:24
栏目: 云计算

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


一、环境假设

  • 系统:Ubuntu 20.04 / 22.04
  • Apache:apache2
  • 后端服务器(示例):
    • 192.168.1.101:8080
    • 192.168.1.102:8080
  • Apache 服务器:192.168.1.100

二、启用必要模块

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
sudo a2enmod headers

lbmethod_byrequests 是常用的轮询(Round Robin)调度算法

启用后重启 Apache:

sudo systemctl restart apache2

三、创建负载均衡站点配置

1. 新建配置文件

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

2. 示例配置(HTTP 负载均衡)

<VirtualHost *:80>
    ServerName lb.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
        # Require ip 192.168.1.0/24
    </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 reload apache2

五、测试负载均衡

curl http://192.168.1.100

多次访问,请求会在两个后端之间分发。


六、常见负载均衡算法

在 ProxySet 中修改:

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

示例:

ProxySet lbmethod=bytraffic

七、健康检查(可选)

Apache 支持基础健康检查:

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

或:

ProxySet lbmethod=byrequests timeout=5

八、HTTPS 负载均衡(简要)

如果是 HTTPS 后端:

BalancerMember https://192.168.1.101:8443

并启用:

sudo a2enmod proxy_connect

前端 HTTPS:

sudo a2enmod ssl

九、常见问题

1. 502 Bad Gateway

  • 后端服务未启动
  • 防火墙未放行端口
  • 后端地址写错

2. 静态资源异常

  • 确保后端返回绝对路径或正确 ProxyPassReverse

如果你愿意,我可以:

  • 给你 HTTPS + 证书 完整配置
  • 帮你配 Session 粘性(sticky session)
  • 或用 Nginx 对比方案

你现在是哪种业务场景?

0 踩