Linux Apache如何负载均衡
导读:Linux Apache 负载均衡实操指南 一 核心原理与准备 使用 Apache 的 mod_proxy、mod_proxy_http、mod_proxy_balancer 实现反向代理与负载均衡;按请求分发策略选择 lbmethod_...
Linux Apache 负载均衡实操指南
一 核心原理与准备
- 使用 Apache 的 mod_proxy、mod_proxy_http、mod_proxy_balancer 实现反向代理与负载均衡;按请求分发策略选择 lbmethod_byrequests(默认)/bytraffic/bybusyness。在 Ubuntu/Debian 启用模块常用命令:sudo a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests;在 CentOS/RHEL 需确保安装并启用对应模块(如 mod_proxy、mod_proxy_http、mod_proxy_balancer)。完成后重启服务生效。为便于排障,建议同时启用状态页组件 balancer-manager。
二 快速上手配置示例
- 目标:将本机 80 端口的流量反向代理到后端 backend1:8080 与 backend2:8080,采用默认轮询算法。
- Ubuntu/Debian 常用做法(启用模块后编辑站点配置):
# /etc/apache2/sites-available/000-default.conf 或自定义配置
<
VirtualHost *:80>
ServerName your.domain
ProxyRequests Off
ProxyPreserveHost On
<
Proxy balancer://mycluster>
BalancerMember http://backend1:8080
BalancerMember http://backend2:8080
<
/Proxy>
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
<
/VirtualHost>
# 启用站点并重启
sudo a2ensite 000-default.conf # 若使用自定义文件请 a2ensite your.conf
sudo systemctl restart apache2
- RHEL/CentOS 常用做法(httpd.conf 或 /etc/httpd/conf.d/*.conf):
# 确认已 LoadModule 相应模块后
<
VirtualHost *:80>
ServerName your.domain
ProxyRequests Off
ProxyPreserveHost On
<
Proxy balancer://mycluster>
BalancerMember http://backend1:8080
BalancerMember http://backend2:8080
<
/Proxy>
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
<
/VirtualHost>
# 重启
sudo systemctl restart httpd
- 验证:访问 http://your.domain,多次刷新应看到请求在 backend1 与 backend2 之间轮询分发。
三 进阶配置要点
- 负载均衡算法与权重
- 轮询(默认):按顺序分发;加权轮询通过 loadfactor=N 设置权重(如 3:1)。
- 最少连接:在 内使用 **ProxySet lbmethod=byrequests|**bytraffic|bybusyness 指定策略;权重示例:
<
Proxy balancer://mycluster>
BalancerMember http://backend1:8080 loadfactor=3 route=be1
BalancerMember http://backend2:8080 loadfactor=1 route=be2
ProxySet lbmethod=byrequests
<
/Proxy>
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
- 会话保持
- 基于会话 Cookie:ProxyPass … stickysession=JSESSIONID;若后端使用不同会话标识,可按需调整。
- 健康检查与故障摘除
- 通过 ProxySet 启用或调整策略(如 lbmethod、超时等);Apache 提供基础被动健康检查,生产可结合应用健康检查端点或借助外部探针。
- SSL 终止
- 在 *< VirtualHost :443> 中启用 SSLEngine on 并配置证书,将 443→后端HTTP 转发,简化证书管理:
<
VirtualHost *:443>
ServerName your.domain
SSLEngine on
SSLCertificateFile /path/to/cert.crt
SSLCertificateKeyFile /path/to/key.key
<
Proxy balancer://mycluster>
BalancerMember http://backend1:8080
BalancerMember http://backend2:8080
<
/Proxy>
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
<
/VirtualHost>
- 管理状态页
- 开启 balancer-manager 便于查看与临时摘除节点(建议加访问控制):
<
Location /balancer-manager>
SetHandler balancer-manager
Require local
# 或按需限制来源:Require ip 192.168.1.0/24
<
/Location>
访问 http://your.domain/balancer-manager 进行管理。
四 常见问题与排查
- 403/404 或后端拿不到 Host 头:在 中开启 ProxyPreserveHost On,并确保后端应用能处理对应 Host。
- 会话粘滞不生效:确认应用会话标识(如 JSESSIONID)与 stickysession 一致;必要时为后端设置统一域名与路径。
- 配置未生效或模块缺失:检查是否执行了 a2enmod(或已 LoadModule),语法无误后执行 systemctl restart apache2/httpd;查看 error.log 定位问题。
- 被动健康检查不够用:结合应用层健康检查或外部监控,对异常节点进行摘除/恢复,避免影响线上稳定性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux Apache如何负载均衡
本文地址: https://pptw.com/jishu/764740.html
