温馨提示×

Apache2 Ubuntu版如何配置负载均衡

小樊
34
2025-12-05 04:39:55
栏目: 云计算

Apache2 Ubuntu 版负载均衡配置指南

一 准备与安装

  • 更新索引并安装 Apache2:sudo apt update && sudo apt install apache2
  • 启用核心代理与负载均衡模块:sudo a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests
  • 可选:启用与反向代理相关的辅助模块(如需要改写 HTML 或处理头部):sudo a2enmod proxy_html headers
  • 重启使模块生效:sudo systemctl restart apache2

二 基本配置步骤

  • 创建站点配置(示例:/etc/apache2/sites-available/loadbalancer.conf),内容示例:
<VirtualHost *:80>
    ServerName mycluster.example.com

    <Proxy "balancer://mycluster">
        BalancerMember http://10.0.0.11:8080 route=backend1
        BalancerMember http://10.0.0.12:8080 route=backend2
        # 可按需增加更多后端
    </Proxy>

    ProxyPass        / balancer://mycluster
    ProxyPassReverse / balancer://mycluster
</VirtualHost>
  • 启用站点并重启:sudo a2ensite loadbalancer.conf && sudo systemctl reload apache2
  • 说明:将请求路径“/”反向代理到名为“balancer://mycluster”的后端集群;BalancerMember 可使用内网地址与端口,便于在 NAT/内网 环境部署

三 常用策略与会话保持

  • 负载均衡算法(通过 lbmethod 指定,示例为按请求数轮询):
<Proxy "balancer://mycluster">
    BalancerMember http://10.0.0.11:8080 route=backend1
    BalancerMember http://10.0.0.12:8080 route=backend2
    ProxySet lbmethod=byrequests
</Proxy>
  • 会话粘性(Sticky Session):当应用使用 JSESSIONID 等会话标识时,可开启粘性以固定用户到同一后端
<Proxy "balancer://mycluster">
    BalancerMember http://10.0.0.11:8080 route=backend1
    BalancerMember http://10.0.0.12:8080 route=backend2
    ProxySet lbmethod=byrequests
    ProxySet stickysession=JSESSIONID
</Proxy>
# 若后端使用 URL 重写会话标识(如 ;jsessionid),可同时设置 scolonpathdelim
  • 健康检查与状态标记:通过为成员设置状态标记控制参与调度的后端
<Proxy "balancer://mycluster">
    BalancerMember http://10.0.0.11:8080 route=backend1 status=+H
    BalancerMember http://10.0.0.12:8080 route=backend2
</Proxy>
# +H 表示“热备”(仅当其它成员不可用时才使用),也可移除以参与正常轮询
  • 提示:Apache httpd 的负载均衡以“尽力而为”的健康检查为主,如需更强主动探测,建议在前端叠加 HAProxy/Nginx 或应用层健康检查机制

四 启用 HTTPS 与前置注意事项

  • 启用 SSL 模块并部署证书(示例):
sudo a2enmod ssl
# 将证书与私钥放置于 /etc/ssl/(示例:server.crt / server.key)
# 新建或编辑 /etc/apache2/sites-available/loadbalancer-ssl.conf
<VirtualHost *:443>
    ServerName mycluster.example.com
    SSLEngine on
    SSLCertificateFile    /etc/ssl/server.crt
    SSLCertificateKeyFile /etc/ssl/server.key

    <Proxy "balancer://mycluster">
        BalancerMember http://10.0.0.11:8080 route=backend1
        BalancerMember http://10.0.0.12:8080 route=backend2
    </Proxy>
    ProxyPass        / balancer://mycluster
    ProxyPassReverse / balancer://mycluster
</VirtualHost>
# 启用站点并重启
sudo a2ensite loadbalancer-ssl.conf && sudo systemctl reload apache2
  • 前置注意事项
    • 确保后端服务器与应用对来自 Apache 负载均衡器 的 IP 放行(安全组/防火墙/应用白名单)。
    • 使用 route=xxx 有助于会话粘性、日志追踪与故障定位。
    • 生产环境建议开启日志并关注访问与错误日志:/var/log/apache2/access.log、/var/log/apache2/error.log

0