温馨提示×

apache2在centos如何负载均衡

小樊
42
2026-10-05 22:23:26
栏目: 云计算

在 CentOS 上,用 Apache HTTP Server(httpd) 实现负载均衡,通常是通过 mod_proxy + mod_proxy_balancer 模块来完成的。下面给你一个从安装到配置可用的完整示例。


一、安装 Apache(CentOS 7/8/Stream)

CentOS 7

yum install httpd -y

CentOS 8 / Stream

dnf install httpd -y

启动并设置开机自启:

systemctl start httpd
systemctl enable httpd

二、确认负载均衡模块已启用

Apache 负载均衡需要以下模块:

  • mod_proxy
  • mod_proxy_http
  • mod_proxy_balancer
  • mod_lbmethod_byrequests(常用)

查看模块:

httpd -M | grep proxy

如果没看到 proxy_balancer_module,一般 CentOS 默认已带,无需额外安装。


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

假设:

  • 负载均衡服务器 IP:192.168.1.10
  • 后端节点:
    • 192.168.1.20:8080
    • 192.168.1.21:8080

1️⃣ 创建配置文件

vi /etc/httpd/conf.d/load-balancer.conf

2️⃣ 写入配置内容

<VirtualHost *:80>
    ServerName example.com

    # 负载均衡器
    <Proxy "balancer://mycluster">
        BalancerMember "http://192.168.1.20:8080"
        BalancerMember "http://192.168.1.21:8080"
        ProxySet lbmethod=byrequests
    </Proxy>

    ProxyPreserveHost On
    ProxyPass "/" "balancer://mycluster/"
    ProxyPassReverse "/" "balancer://mycluster/"

    # 可选:状态页面
    <Location "/balancer-manager">
        SetHandler balancer-manager
        Require ip 192.168.1.0/24
    </Location>
</VirtualHost>

四、防火墙放行

firewall-cmd --permanent --add-service=http
firewall-cmd --reload

五、检查并重载 Apache

httpd -t
systemctl reload httpd

访问:

http://192.168.1.10/

请求会被分发到两个后端节点。


六、常用负载均衡策略

1️⃣ 轮询(默认)

ProxySet lbmethod=byrequests

2️⃣ 按流量

ProxySet lbmethod=bytraffic

3️⃣ 按连接数

ProxySet lbmethod=bybusyness

七、高级功能(可选)

权重配置

BalancerMember "http://192.168.1.20:8080" loadfactor=3
BalancerMember "http://192.168.1.21:8080" loadfactor=1

健康检查

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

八、适用场景说明

✅ 适合:

  • Web 层负载均衡
  • 反向代理
  • 简单高可用

❌ 不适合:

  • 超高性能场景(建议 Nginx / LVS)
  • TCP 层负载(需 HAProxy / LVS)

如果你愿意,我可以:

  • 给你 Nginx vs Apache 负载均衡对比
  • 写 HTTPS + 负载均衡
  • 或做 CentOS + Apache + Tomcat 集群示例

你现在是 Web / API / 微服务 场景?

0 踩