keepalived+nginx

它们解决的问题完全不同,但经常配合使用。
 
简单一句话:
  • Nginx 是反向代理 / 负载均衡 / 网关,负责流量转发、请求处理、静态资源、七层负载均衡;
  • Keepalived 是高可用(HA)工具,负责主备切换、虚拟 IP 漂移、故障自动转移,解决单点故障问题。
 
下面用最清晰的方式讲清楚两者的区别与配合关系。

一、Nginx 是干什么的?(七层应用层)

Nginx 是一个高性能 Web 服务器 / 反向代理 / 负载均衡器。
 
核心功能:
  • 接收 HTTP/HTTPS 请求
  • 反向代理到后端服务(Tomcat、Java、Node.js 等)
  • 负载均衡(轮询、IP hash、权重、最少连接)
  • 静态资源服务(HTML、JS、图片)
  • 限流、缓存、SSL 卸载、gzip 压缩
  • 七层(应用层)流量控制
一句话:Nginx 管 “流量怎么转发”。

二、Keepalived 是干什么的?(三层网络层)

Keepalived 是基于 VRRP 协议的高可用工具,用来解决单点故障。
核心功能:
  • 提供 虚拟 IP(VIP)
  • 主备节点自动切换(主挂了,备自动顶上去)
  • 检测 Nginx / 服务是否存活,失败自动切换
  • 实现高可用集群(HA)
 
一句话:Keepalived 管 “谁来提供服务,主挂了谁顶上”。

三、两者关系:Nginx 做转发,Keepalived 做高可用

 
最典型架构:
plaintext
用户 → VIP(Keepalived 提供) → Nginx(主/备) → 后端服务
  • Nginx 负责转发请求
  • Keepalived 负责保证 Nginx 不挂(高可用)
如果只有 Nginx:
  • Nginx 挂了 → 整个服务不可用(单点故障)
如果 Nginx + Keepalived:
  • 主 Nginx 挂了 → Keepalived 自动把 VIP 切到备 Nginx
  • 用户无感知,服务不中断

四、核心区别总结(面试必背)

 
维度NginxKeepalived
定位 反向代理 / 负载均衡 / 网关 高可用(HA)/ 主备切换
工作层 七层(应用层) 三层(网络层)
核心作用 转发流量、负载均衡、静态资源 虚拟 IP、故障切换、高可用
依赖协议 HTTP/HTTPS/TCP VRRP 协议
解决问题 性能、并发、流量分发 单点故障、服务高可用
典型部署 单机 / 集群 主备(2 台起步)
 
一句话总结:
 
Nginx 管转发,Keepalived 管高可用;Nginx 是 “干活的”,Keepalived 是 “保活的”。
 
posted @ 2026-02-04 10:43  野鹤闲人  阅读(13)  评论(0)    收藏  举报