温馨提示×

ubuntu apache怎样配负载均衡

小樊
41
2026-10-11 02:59:42
栏目: 云计算

在 Ubuntu 上用 Apache 做负载均衡,通常是使用 Apache 的 mod_proxy + mod_proxy_balancer 模块,把请求转发到后端多个应用服务器(如 Tomcat、Node、其他 Apache、Nginx 等)。

下面是从零开始的标准配置步骤。


一、安装 Apache

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

lbmethod_byrequests 表示按请求数做负载均衡(常用)

重启 Apache:

sudo systemctl restart apache2

三、配置负载均衡(示例)

假设后端有两台服务器:

  • 192.168.1.10:8080
  • 192.168.1.11:8080

1️⃣ 创建配置文件

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

2️⃣ 写入配置内容

<VirtualHost *:80>
    ServerName example.com

    # 负载均衡器
    <Proxy "balancer://mycluster">
        BalancerMember "http://192.168.1.10:8080"
        BalancerMember "http://192.168.1.11: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

五、测试

curl http://localhost

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

访问状态页面(仅本地):

http://localhost/balancer-manager

六、常用负载均衡策略

策略 说明
byrequests 按请求数(默认)
bytraffic 按流量
bybusyness 按繁忙程度

示例:

ProxySet lbmethod=bytraffic

七、常见增强配置

1️⃣ 权重(重要)

BalancerMember "http://192.168.1.10:8080" loadfactor=3
BalancerMember "http://192.168.1.11:8080" loadfactor=1

2️⃣ 健康检查

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

3️⃣ HTTPS 后端

BalancerMember "https://192.168.1.10:8443"

(需要 proxy_https)


八、防火墙(如有)

sudo ufw allow 80

九、典型架构示意

Client
  ↓
Apache (负载均衡)
  ↓ ↓
Backend1  Backend2

如果你愿意,我可以:

  • 给你 HTTPS + 负载均衡 配置
  • 用 Apache + Tomcat / Spring Boot / Node 示例
  • 或改成 Nginx 负载均衡对比方案

你后端跑的是什么服务?

0 踩