温馨提示×

ubuntu apache怎么配置负载均衡

小樊
40
2026-10-05 04:58:05
栏目: 云计算

在 Ubuntu 上用 Apache 配置负载均衡,通常是通过 Apache 的 mod_proxy + mod_proxy_balancer 模块来实现的。下面我给你一个从零开始的完整示例。


一、环境假设

  • 系统:Ubuntu 20.04 / 22.04
  • Apache 作为反向代理 + 负载均衡
  • 后端有两台(或更多)应用服务器:
    • 192.168.1.101:8080
    • 192.168.1.102:8080

二、安装 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:轮询(默认)
  • lbmethod_bybusyness:按繁忙度
  • lbmethod_bytraffic:按流量

重启 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"

        # 负载均衡算法
        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 reload apache2

六、测试

curl http://localhost

多次访问,应在两台后端之间切换。

访问状态页(仅本地):

http://服务器IP/balancer-manager

七、常见高级配置

1️⃣ 权重(Weight)

BalancerMember "http://192.168.1.101:8080" loadfactor=3
BalancerMember "http://192.168.1.102:8080" loadfactor=1

→ 101 接收 3 倍流量


2️⃣ 会话保持(Sticky Session)

ProxySet stickysession=JSESSIONID

或:

Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/"
<Proxy "balancer://mycluster">
    BalancerMember "http://192.168.1.101:8080" route=node1
    BalancerMember "http://192.168.1.102:8080" route=node2
</Proxy>

3️⃣ HTTPS 后端

BalancerMember "https://192.168.1.101:8443"

八、排错

sudo apache2ctl configtest
sudo journalctl -u apache2

如果你愿意,我可以帮你:

  • 配置 HTTPS(Let’s Encrypt)
  • 做 Nginx vs Apache 负载均衡对比
  • 针对 Spring / Node / Python 后端优化

你现在是哪种后端服务?

0 踩