lb01和lb02(主备双保险)
它们在架构中的分工是 “主备双保险(高可用容灾)”,本质上是为了解决 负载均衡器自身的“单点故障”。
我们可以把它们的作用和工作模式拆解为以下三个层面:
1. 为什么一台不够,非要两台?(解决什么痛点)
在只有 lb01 时,架构最大的隐患是:
即使你后端的
web01和web02做得再好,只要lb01这台机器电源一掉、系统崩溃或服务假死,外部所有的访问入口就瞬间全部瘫痪了。这种“只要它挂了,全盘皆输”的节点叫 单点故障(SPOF)。
lb02的出现,就是给入口加一条“备用命”。
2. 两台机器的分工角色
配合 Keepalived + VIP(虚拟浮动 IP) 运行后,它们的分工如下:
3. 它们在真实故障时是如何配合的?
场景 A:平时一切正常
外部用户访问博客(通过 VIP 请求)。
lb01拿着 VIP 接收流量,由上面的 Nginx 把请求分给web01和web02。lb02处于热备状态(上面的 HAProxy 也在实时探测 Web 节点健康,随时可以无缝接管)。
场景 B:lb01 突然故障(如宕机、断网或进程挂掉)
lb02的 Keepalived 发现来自lb01的心跳包中断。lb02瞬间抢占 VIP,把这个虚拟 IP 挂载到自己的网卡上。外部发往该 VIP 的流量立刻自动打到
lb02上的 HAProxy。HAProxy 接管流量后,继续把请求分发给
web01和web02。用户感知:浏览器刷新依然秒开,完全不知道背后的负载均衡器已经从
lb01换成了lb02。
场景 C:lb01 修好恢复
lb01重新开机上线,由于配置了更高的优先级,它会重新收回 VIP 成为主节点,lb02自动切回备用待命状态。
从企业生产环境的规范标准来看,你的直觉非常敏锐:确实有点“多余”,甚至算是一种“反模式(Anti-Pattern)”。
但在个人学习、实训项目以及求职面试的语境下,这种设计不仅不多余,反而是最具性价比的“神仙组合”。
我们需要分两种视角来理性看待:
一、 为什么在“真实生产环境”中不会这么配?
在真正的企业生产运维中,主备节点几乎要求 100% 镜像对称(主是 Nginx,备必定也是 Nginx;或者主备全用 HAProxy),绝不会一边用 Nginx、一边用 HAProxy。原因有三:
配置无法同步,运维成本翻倍:
后端加了一台 Web 服务器,或者改动了一个转发路径、更新了 SSL 证书;
你既要写一遍 Nginx 语法(
upstream、server、proxy_pass),又要跑去备机写一遍 HAProxy 语法(backend、server ... check)。长此以往极易漏配,导致主备配置不一致。
故障切换时行为不一致:
Nginx 和 HAProxy 的底层调度算法细节、超时时间(timeout)、重试逻辑、健康检查敏感度都不完全一样。
VIP 漂移过去后,可能平时主节点没问题的连接,备节点直接超时断开,增加排障难度。
备用机器资源浪费:
主备模式下,备机平时 99% 的时间都在空跑耗电,利用率低。
二、 为什么在“学习和面试项目”中,这样配反而是最优解?
回到你当前的场景和你的简历:
最大化榨干有限的虚拟机资源:
你的电脑开着
lb01、lb02、web01、web02、db01、nfs等多台机器,内存和 CPU 已经比较紧张了。如果按标准规范搞“纯 Nginx 高可用”加“纯 HAProxy 高可用”,你需要开 4 台 LB 虚拟机;
而通过这种“异构主备”设计,你在仅有的 2 台 LB 虚拟机上,同时把 Nginx、HAProxy、Keepalived 三大组件全部实操打通。
完美撑起你的简历内容:
你的项目里既写了 “Nginx 反向代理、负载均衡”,又写了 “HAProxy + Keepalived 高可用、VIP 漂移、健康检查”。
如果你的环境里只有 Nginx,面试官深挖 HAProxy 的语法和配置时你容易心虚;
现在的环境让你对两者的配置结构、监控大盘(Stats)以及底层机制都有第一手实操经验。
三、 面试时被问到这个点,如何“化被动为主动”?
如果面试官很敏锐地问你:
“我看你主节点用 Nginx,备节点用 HAProxy,生产中一般保持一致,你为什么这么设计?”
你可以用极其专业的口吻这样回答,瞬间转化为加分项:
高情商/专业应答套路:
“在实验和方案调研阶段,我是刻意采用异构主备进行技术验证的。一方面是为了横向对比 Nginx 在七层动静分流的灵活性,以及 HAProxy 在原生高并发调度与可视化监控(Stats)上的优势;另一方面也借此验证 Keepalived 对不同代理服务的健康检查脚本(
chk_script)兼容性。当然我也清楚在实际生产交付中,为了保证配置的一致性、降低维护成本并避免配置漂移,团队会保持主备负载均衡组件的统一(例如统一采用 HAProxy+Keepalived 或统一使用 Nginx 双机热备,甚至采用云厂商的负载均衡)。这种设计主要是我在技术选型与故障切换压测时的一个对比实践。”
这样一答,面试官不仅挑不出毛病,还会觉得你既有扎实的动手能力,又有清晰的架构全局观和生产意识。
lb01和lb02(主备双保险)
https://originspace.work/archives/lb01he-lb02-zhu-bei-shang
评论