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
- 用户无感知,服务不中断
四、核心区别总结(面试必背)
| 维度 | Nginx | Keepalived |
|---|---|---|
| 定位 | 反向代理 / 负载均衡 / 网关 | 高可用(HA)/ 主备切换 |
| 工作层 | 七层(应用层) | 三层(网络层) |
| 核心作用 | 转发流量、负载均衡、静态资源 | 虚拟 IP、故障切换、高可用 |
| 依赖协议 | HTTP/HTTPS/TCP | VRRP 协议 |
| 解决问题 | 性能、并发、流量分发 | 单点故障、服务高可用 |
| 典型部署 | 单机 / 集群 | 主备(2 台起步) |
一句话总结:
Nginx 管转发,Keepalived 管高可用;Nginx 是 “干活的”,Keepalived 是 “保活的”。
*
备注:公众号清汤袭人能找到我,那是随笔的地方
备注:公众号清汤袭人能找到我,那是随笔的地方

浙公网安备 33010602011771号