温馨提示×

centos apache如何做负载均衡

小樊
35
2026-09-24 05:44:16
栏目: 云计算

在 CentOS + Apache 环境下做负载均衡,通常使用的是 Apache 的 mod_proxy + mod_proxy_balancer 模块。下面给你一个实战可用、常见的配置示例(以 CentOS 7/8 为例)。


一、环境假设

  • Apache 服务器(负载均衡器):192.168.1.10
  • 后端应用服务器(2 台):
    • 192.168.1.20:8080
    • 192.168.1.21:8080

二、安装 Apache(如未安装)

yum install httpd -y
# CentOS 8 可用
# dnf install httpd -y

三、启用必要模块

Apache 默认通常已包含这些模块,但需确认:

httpd -M | grep proxy

应看到:

  • proxy_module
  • proxy_http_module
  • proxy_balancer_module
  • lbmethod_byrequests_module

若未加载,编辑:

vi /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

四、配置负载均衡

1️⃣ 新建配置文件

vi /etc/httpd/conf.d/loadbalancer.conf

2️⃣ 基础负载均衡配置(HTTP)

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

    # 负载均衡器状态页面(可选)
    <Location /balancer-manager>
        SetHandler balancer-manager
        Require ip 192.168.1.0/24
    </Location>

    ProxyRequests Off

    <Proxy "balancer://mycluster">
        BalancerMember "http://192.168.1.20:8080"
        BalancerMember "http://192.168.1.21:8080"
        ProxySet lbmethod=byrequests
    </Proxy>

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

五、负载均衡策略说明

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

示例:

ProxySet lbmethod=bytraffic

六、加权负载(可选)

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

表示 20 号机器处理 2/3 请求。


七、会话保持(Sticky Session)

如果应用依赖 Session:

ProxySet stickysession=JSESSIONID

(后端 Tomcat 常见)


八、启动 & 开机自启

systemctl start httpd
systemctl enable httpd

九、验证

  • 访问:http://192.168.1.10
  • 多次刷新,观察请求分发
  • 访问:http://192.168.1.10/balancer-manager 查看节点状态

十、HTTPS 负载均衡(简述)

若后端是 HTTPS:

BalancerMember "https://192.168.1.20:8443"

前端 HTTPS:

  • 配置 SSL
  • ProxyPass 不变

十一、常见坑

❌ 后端防火墙未放行
❌ SELinux 拦截(可临时 setenforce 0 测试)
❌ 后端返回 Redirect 导致域名错乱(用 ProxyPassReverse)


如果你愿意,我可以:

  • 给你 Tomcat / Spring Boot / Nginx 后端 的对应配置
  • 帮你做 高可用(Keepalived)
  • 或改成 Apache + HTTPS + 负载均衡完整方案

你现在后端是什么服务?

0 踩