Nginx与Keepalived协同构建高可用业务入口:Nginx负责流量调度(负载均衡、健康检查、upstream管理、失败重试),Keepalived专注节点存活(VIP漂移、进程/端口检测、权重降级),二者职责分离,实现分层容错与精准故障定位。

Nginx 和 Keepalived 各自解决不同层级的可靠性问题,合在一起才构成真正可用的业务入口防线。
Nginx 是流量调度中枢
它不只做反向代理,更承担实际的请求分发决策:
- 支持轮询、加权、IP哈希等负载策略,适配不同业务状态(比如会话保持需求)
- 可配置主动健康检查(如定期 GET /health),自动摘除无响应的后端节点
- 通过 upstream 分组管理多套应用集群,隔离故障影响范围
- 配合 proxy_next_upstream 等指令,在单次转发失败时自动重试其他节点
Keepalived 是服务存活守门人
它不管业务逻辑,只专注“这台机器还能不能对外提供服务”:
- 基于 VRRP 协议维护一个浮动 VIP,客户端始终访问这个固定地址
- 通过脚本或端口检测(如检查 nginx 进程是否存在、80 端口是否可连通)判断节点状态
- 主节点异常时,几秒内完成 VIP 漂移,备节点立即接管流量,用户几乎无感
- 支持权重动态调整,例如当 Nginx 负载过高或某个 upstream 全挂时,主动降级自身优先级触发切换
二者协同的关键在于职责分离
Nginx 管“怎么分”,Keepalived 管“谁来分”。
- Nginx 故障(如配置错误导致 worker crash)→ Keepalived 检测到端口失联 → VIP 切走
- 后端应用全挂 → Nginx 主动标记所有 upstream 为 down → 返回 502 或自定义页面,但自身仍在运行 → Keepalived 不切换,避免误切
- 主机宕机或网卡中断 → Keepalived 心跳断连 → 强制漂移,绕过 Nginx 层直接保障入口可达
这种分层设计让故障定位清晰、恢复路径明确,也便于分别压测和监控。


















