温馨提示×

apache在centos如何做负载均衡

小樊
38
2026-09-15 02:01:55
栏目: 云计算

在 CentOS 上用 Apache 做负载均衡,本质是使用 Apache 的 mod_proxy + mod_proxy_balancer 模块,将请求转发到后端多台服务器(如 Tomcat、Nginx、其他 Apache、应用服务)。

下面给你一个实用、可落地的方案。


一、环境准备

假设:

  • Apache 服务器(负载均衡器):CentOS 7/8
  • 后端服务器:
    • 192.168.1.101:8080
    • 192.168.1.102:8080

二、安装 Apache

# CentOS 7
yum install httpd -y

# CentOS 8
dnf install httpd -y

启动并设置开机自启:

systemctl start httpd
systemctl enable httpd

三、启用必要模块

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

httpd -M | grep proxy

确保有以下模块(一般默认已加载):

  • proxy
  • proxy_http
  • proxy_balancer
  • lbmethod_byrequests

如未加载,编辑:

vim /etc/httpd/conf.modules.d/00-proxy.conf

确保包含:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so

重启 Apache:

systemctl restart httpd

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

1️⃣ 创建配置文件

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

2️⃣ 基础负载均衡示例(轮询)

<VirtualHost *:80>
    ServerName www.example.com

    # 负载均衡器配置
    <Proxy "balancer://mycluster">
        BalancerMember "http://192.168.1.101:8080"
        BalancerMember "http://192.168.1.102:8080"
        ProxySet lbmethod=byrequests
    </Proxy>

    ProxyPass "/" "balancer://mycluster/"
    ProxyPassReverse "/" "balancer://mycluster/"

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

五、常用负载均衡策略

✅ 轮询(默认)

ProxySet lbmethod=byrequests

✅ 按权重

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

✅ 热备(主挂了才用)

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

六、Session 保持(Sticky Session)

如果是 Java / Tomcat:

ProxySet stickysession=JSESSIONID

示例:

<Proxy "balancer://mycluster">
    BalancerMember "http://192.168.1.101:8080" route=node1
    BalancerMember "http://192.168.1.102:8080" route=node2
    ProxySet lbmethod=byrequests stickysession=JSESSIONID
</Proxy>

七、HTTPS(可选)

Apache 终止 SSL(推荐)

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /path/to/cert.pem
    SSLCertificateKeyFile /path/to/key.pem

    ProxyPass "/" "balancer://mycluster/"
    ProxyPassReverse "/" "balancer://mycluster/"
</VirtualHost>

后端可用 HTTP,安全由 Apache 处理。


八、验证

  1. 访问:
http://服务器IP/
  1. 访问状态页:
http://服务器IP/balancer-manager
  1. 查看后端是否轮流响应(看日志或页面内容)

九、常见问题

❌ 403 Forbidden

Require all granted

❌ SELinux 阻止

setsebool -P httpd_can_network_connect 1

❌ 防火墙

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

十、总结

✅ CentOS 上 Apache 做负载均衡步骤:

  1. 安装 httpd
  2. 启用 proxy + balancer 模块
  3. 配置 balancer://
  4. 使用 ProxyPass 转发
  5. 可选:HTTPS、Session、状态页

如果你愿意,我可以:

  • 给你 Tomcat / Nginx 后端示例
  • 帮你写 生产级 Apache 负载均衡配置
  • 对比 Apache vs Nginx 负载均衡

你现在是想接什么后端服务?

0 踩