lbset 是 balancermember 指令的参数,用于定义后端节点的负载集优先级,实现主备冗余;apache 先调度 lbset=0 节点,全失效后才启用 lbset=1 节点,需配合健康检查提升可靠性。

Apache 的 ProxyPass 本身不直接支持 lbset 参数;这个参数属于 BalancerMember 指令,用于定义后端节点的“负载集(load set)”优先级,是实现主备冗余(failover)和分层调度的关键机制。
理解 lbset 的作用逻辑
lbset 不是权重或流量比例,而是调度层级序号。Apache 负载均衡器会先尝试所有 lbset=0 的节点;只有当它们全部不可用(健康检查失败或主动标记为 down)时,才转向 lbset=1 的节点,依此类推。这天然形成“主集群 → 备集群 → 容灾集群”的分层结构。
配置主备冗余集群的步骤
以两层结构为例:两台主服务器(8081/8082),一台热备服务器(8083):
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 确保已启用必要模块:
mod_proxy、mod_proxy_balancer、mod_proxy_http、mod_slotmem_shm、mod_lbmethod_byrequests(默认轮询算法) - 在
httpd.conf或独立配置文件末尾添加均衡器定义:
BalancerMember http://localhost:8081 lbset=0
BalancerMember http://localhost:8082 lbset=0
BalancerMember http://localhost:8083 lbset=1
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
-
lbset=0成员构成主服务层,正常情况下只在此层内轮询;lbset=1是备用层,仅当主层全不可用时启用 - 无需额外配置
nofailover=On——lbset机制本身就隐含 failover 行为;若需禁止降级到备层,可对备节点加status=+D手动禁用
配合健康检查提升可靠性
仅靠 lbset 不足以自动识别节点故障,需启用动态健康检查:
- 加载
mod_proxy_hcheck(Apache 2.4.43+ 支持) - 为每个
BalancerMember添加健康检查参数,例如:BalancerMember http://localhost:8081 lbset=0 hcmethod=GET hcinterval=10 hcuri=/health -
hcmethod指定探测方式(GET/HEAD),hcuri是后端暴露的健康端点,hcinterval控制探测频率(秒) - 当某
lbset=0节点连续多次探测失败,它会被临时标记为失效,流量自动切至同层其他节点;若整层失效,则升至lbset=1
注意事项与常见误区
实际部署中要注意几个关键点:
-
lbset值必须是非负整数,值越小优先级越高;未显式指定lbset的节点默认为lbset=0 - 不能混用
lbset和loadfactor实现“主多备少”——loadfactor只在同一lbset内生效,跨层无意义 - 管理界面
/balancer-manager中可实时查看各节点所属lbset、当前状态及健康检查结果,便于验证配置是否生效 - 如果后端应用依赖粘性会话(sticky session),需配合
stickysession(如JSESSIONID)并确保所有主备节点共享 session 存储










