温馨提示×

Apache配置Ubuntu服务器负载均衡技巧

小樊
39
2026-01-05 12:56:10
栏目: 云计算

Apache在Ubuntu上的负载均衡实用技巧

一 快速上手步骤

  • 安装与启用模块
    • 安装 Apache2:sudo apt update && sudo apt install apache2
    • 启用模块:sudo a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests
  • 创建站点配置
    • 新建:sudo nano /etc/apache2/sites-available/loadbalancer.conf
    • 示例要点:
      <VirtualHost *:80>
        ServerName yourdomain.com
      
        <Proxy balancer://mycluster>
          BalancerMember http://10.0.0.11:8080 route=node1
          BalancerMember http://10.0.0.12:8080 route=node2
          ProxySet lbmethod=byrequests
        </Proxy>
      
        ProxyPass / balancer://mycluster/
        ProxyPassReverse / balancer://mycluster/
        ProxyPreserveHost On
      </VirtualHost>
      
  • 启用站点与生效
    • 启用:sudo a2ensite loadbalancer.conf
    • 测试配置:sudo apache2ctl configtest
    • 重启:sudo systemctl restart apache2
  • 连通性检查
    • 确保负载均衡器可访问后端 8080 端口,且云安全组/防火墙已放行 80/443 与后端端口。

二 关键配置技巧

  • 负载均衡算法
    • 轮询:lbmethod=byrequests
    • 按流量:lbmethod=bytraffic(需启用模块 mod_lbmethod_bytraffic
    • 按连接数:lbmethod=least_conn(需启用模块 mod_lbmethod_least_conn
  • 权重与故障策略
    • 权重:loadfactor=10(默认 1,可按性能分配)
    • 超时与重试:timeout=10 retry=60 maxattempts=3
    • 被动健康检查:ping=5(每 5 秒发 OPTIONS 探测)
    • 主动故障判定:failonstatus=500,503
    • 热备节点:status=+H(主节点恢复后自动切回)
  • 会话保持
    • Cookie 粘滞:stickysession=JSESSIONID|ROUTEID
    • 配合路由 Cookie(示例思路):
      Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
      ProxyPass / balancer://mycluster/ stickysession=ROUTEID
      
  • 连接与缓冲优化
    • 连接池:在 <Proxy *> 或具体集群上设置 maxconnections=50 acquire=3000
    • 缓冲:ProxyIOBufferSize 8192ProxyReceiveBufferSize 16384
  • 头部与主机头
    • 反向代理常用:ProxyPreserveHost On,确保后端获取原始 Host 头。

三 健康检查与运维监控

  • 内置管理器
    • 启用(仅内网访问):
      <Location /balancer-manager>
        SetHandler balancer-manager
        Require host localhost 192.168.1.0/24
      </Location>
      
    • 访问:http://your-lb/balancer-manager,可在线查看节点请求分布、错误计数、启停节点等
  • 状态页
    • 启用 info 模块后,可访问 /server-status/server-info 做基础诊断
  • 安全建议
    • 生产环境务必限制 balancer-manager 的访问来源(如仅内网网段),避免被滥用。

四 常见问题与排查

  • 502 Bad Gateway
    • 检查后端是否在 8080 正常监听、负载均衡器到后端网络是否可达、以及 firewalld/安全组 规则
    • 适当增大 ProxyTimeout,避免因慢响应被判定为失败
  • 负载不均
    • 调整 loadfactor,或改用 least_conn;核查后端性能差异与慢查询
  • 会话丢失
    • 启用 stickysession=JSESSIONID|ROUTEID,并为应用生成/识别一致的会话标识
  • 管理页面打不开
    • 确认已加载 mod_status/mod_info,且 Require 规则允许你的来源 IP。

五 生产可用性与安全加固

  • 高可用
    • 单台 Apache 仍可能成为单点,建议前置 Keepalived VIP 或结合云负载均衡实现主备/集群
  • 加密传输
    • 启用 SSL/TLS(端口 443),对外提供 HTTPS;证书与私钥妥善管理
  • 加固要点
    • 限制 /balancer-manager 访问、开启访问日志与必要的审计、定期轮换密钥与证书
  • 压测验证
    • 使用 ab/jmeter 验证权重、算法、超时与重试策略的有效性,观察错误率与延迟分布。

0