Apache负载均衡按权重分发流量需通过loadfactor参数设置相对权重,并配合lbmethod=byrequests或bytraffic调度算法生效;权重仅在同组Balancer内有效,且依赖mod_proxy、mod_proxy_balancer等模块正确加载与ProxyPass路径对齐。Apache 负载均衡支持按权重分发流量,核心是通过 `loadfactor` 参数为每个后端节点设置相对权重,并配合合适的调度算法(如 `byrequests` 或 `bytraffic`)生效。 关键点:权重不是绝对值,而是比例关系;权重只在同组 Balancer 内部起作用;必须搭配 `lbmethod` 才能按权重分配。
配置步骤与要点
在 `
- 启用必要模块:
mod_proxy、mod_proxy_http、mod_proxy_balancer、mod_lbmethod_byrequests(或bytraffic)、mod_slotmem_shm - 使用
<proxy balancer:></proxy>定义集群,每个BalancerMember后追加loadfactor=N(N 为 1–100 的整数) - 在
<proxy></proxy>块内用ProxySet lbmethod=byrequests(按请求数)或lbmethod=bytraffic(按字节数)启用权重计算逻辑 -
ProxyPass将请求路径映射到该 balancer 组,注意路径结尾斜杠对齐,避免重复拼接
两种典型权重配置示例
按请求数加权(推荐初用)
适合请求处理时间相近、希望严格按比例分配请求数的场景:
<proxy balancer:>
BalancerMember http://192.168.1.10:8080 loadfactor=4
BalancerMember http://192.168.1.11:8080 loadfactor=2
BalancerMember http://192.168.1.12:8080 loadfactor=1
ProxySet lbmethod=byrequests
</proxy>
ProxyPass "/api/" "balancer://api/"
ProxyPassReverse "/api/" "balancer://api/"
总权重 = 4 + 2 + 1 = 7 → 每 7 个请求中,约 4 个去第一台、2 个去第二台、1 个去第三台。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
按流量加权(适合大文件/上传服务)
更适合响应体差异大的业务(如含图片、视频接口),权重影响实际传输字节数分配:
<proxy balancer:>
BalancerMember http://up1.example.com:8080 loadfactor=5
BalancerMember http://up2.example.com:8080 loadfactor=3
ProxySet lbmethod=bytraffic
</proxy>
此时 Apache 会统计每个节点收发的字节数,高权重节点承担更多 I/O 流量。
增强稳定性的小建议
- 为每个
BalancerMember加上timeout=5 retry=60,避免卡死连接拖慢整体响应 - 开启健康检查:添加
hcmethod=GET hcuri="/health" failonstatus=503,自动隔离故障节点 - 若需会话保持(如旧系统依赖 Cookie),加上
ProxySet stickysession=JSESSIONID - 用
<location> SetHandler balancer-manager </location>开启状态页,实时查看各节点权重分配效果









