lbset是balancermember指令的整数权重参数,数值越小优先级越高,apache按lbset分组逐级启用节点实现主备分层调度;需在块内为每个balancermember显式指定lbset,默认为0。

Apache 的 ProxyPass 本身不直接支持 lbset 参数;这个参数属于 BalancerMember 指令,用于定义后端成员的“负载集(load set)”优先级,是实现主备分层调度的关键机制。
理解 lbset:主备分层的核心逻辑
lbset 是一个整数权重值,数值越小,优先级越高。Apache 会按 lbset 分组,**先尝试所有 lbset=0 的节点;只有它们全部不可用时,才启用 lbset=1 的节点;依此类推**。这不是“同时负载均衡”,而是带故障转移层级的调度策略。
例如:
-
lbset=0:主集群(2台活跃节点) -
lbset=1:备用集群(1台热备节点) -
lbset=2:灾备节点(仅当前两级全挂时启用)
配置 lbset 的完整步骤
确保已启用必要模块(mod_proxy、mod_proxy_balancer、mod_proxy_http、mod_slotmem_shm),然后在 httpd.conf 或虚拟主机配置中添加:
注意:BalancerMember 必须写在 <proxy balancer:></proxy> 块内,且顺序无关,Apache 按 lbset 自动分组
ProxyRequests Off
<proxy balancer:></proxy> BalancerMember http://192.168.1.10:8080 lbset=0 retry=10 BalancerMember http://192.168.1.11:8080 lbset=0 retry=10 BalancerMember http://192.168.1.20:8080 lbset=1 retry=10 BalancerMember http://192.168.1.30:8080 lbset=2 retry=60
安装并运行 Aperture(Lightning Labs 的 L402 闪电反向代理),用于创建 L402 付费墙、配置付费 API 端点、为其他代理托管付费内容或测试 L402 认证流程。
ProxyPass / balancer://maincluster/ProxyPassReverse / balancer://maincluster/
其中:
– retry=10 表示节点失败后 10 秒内不重试(主节点设短,快速切换);
– retry=60 表示灾备节点失败后等待 60 秒再试(避免频繁探活);
– 所有 BalancerMember 都需显式指定 lbset,未指定默认为 0。
配合 nofailover 和 stickysession 提升主备可靠性
主备场景下,会话粘性与故障隔离很重要:
-
nofailover=On:客户端会话绑定到某台主节点后,即使该节点宕机,也不自动切到备节点(防止会话丢失)。适合强状态应用。 -
stickysession=JSESSIONID|jsessionid:确保同一用户请求始终路由到同一后端(对主集群内有效)。 - 若需主备间也保持会话,需后端共享 session 存储(如 Redis),否则不建议开启跨 lbset 粘性。
可将这些加在 <proxy></proxy> 块内:
<proxy balancer:></proxy> ProxySet lbmethod=byrequests nofailover=On stickysession=JSESSIONID|jsessionid BalancerMember ... lbset=0 ...
验证与调试建议
启用管理界面查看实时状态:
<location></location> SetHandler balancer-manager Require local
访问 http://localhost/balancer-manager 可直观看到各 lbset 组的启用状态、当前活动成员及失败计数。手动停掉 lbset=0 的节点,观察请求是否自动降级到 lbset=1 —— 这是验证主备逻辑是否生效的最直接方式。










