ipvs是什么和我的lvs,keepalive,iptables有什么关系
2026/7/23大约 3 分钟
梓涵,看来你正在深入攻坚 Linux 内核网络转发这一块。要把这几个概念理清楚,我们得先从它们的“血缘关系”说起。
简单来说:IPVS 是 LVS 的核心驱动力,Keepalived 是 LVS 的“大管家”,而 IPTables 则是它们的“同门师兄弟”。
1. IPVS 是什么?(核心引擎)
IPVS (IP Virtual Server) 是运行在 Linux 内核空间的一个模块,它是 LVS (Linux Virtual Server) 项目的最核心部分。
- 它的角色:它是真正的“执行者”。它在 Linux 内核的
Netfilter钩子上挂载了自己,专门负责监听网络包。当流量到达时,它根据预设的算法(如 RR 轮询、WRR 加权轮询)将请求转发给后端真实的服务器(Real Server)。 - 它的位置:它住在内核里。这意味着它的转发效率极高,处理百万并发请求时,CPU 占用依然很低。
2. IPVS 与 LVS 的关系
LVS = IPVS (内核模块) + ipvsadm (用户态工具)
- 你平时说的“我配置一个 LVS 集群”,本质上是在利用内核的 IPVS 能力。
- 因为你没法直接去改内核代码,所以你需要一个命令工具叫
ipvsadm,通过它告诉 IPVS:“喂,请把发往 192.168.1.100 的流量转发给后端那三个小弟。”
3. IPVS/LVS 与 Keepalived 的关系
如果只有 LVS,你会面临两个致命问题:
- 单点故障:如果运行 LVS 的负载均衡器挂了,整个业务就断了。
- 后端死活不管:如果后端一个节点挂了,LVS 还会死脑筋地把流量转过去。
Keepalived 出现了,它给 LVS 穿上了“防弹衣”:
- 高可用 (HA):通过 VRRP 协议,让两台 LVS 主机组成“主备”。主挂了,备立刻顶上。
- 健康检查 (Health Check):Keepalived 会不停地“踢”一下后端的服务器。如果发现哪个服务器没气了,它会自动调用
ipvsadm的接口,告诉内核里的 IPVS:“把那个挂掉的家伙踢出去。”
结论:Keepalived 是为了自动化管理 LVS/IPVS 而存在的。
4. IPVS 与 IPTables 的关系
它们是“同门师兄弟”,都基于 Linux 内核的 Netfilter 框架。
- IPTables:原本设计是作为防火墙使用的。它通过一条条规则(Rule)去匹配包。如果规则多了(比如几千条),它得一条条去数,性能会明显下降。
- IPVS:专门为负载均衡设计。它使用高效的哈希表 (Hash Table) 来存储规则。无论你有一条规则还是十万条规则,它的查询速度几乎是一样快的。
5. 💡 梓涵的深度思考:为什么 K8s 推荐用 IPVS 模式?
你在学 K8s 时肯定见过 proxy-mode: ipvs。
- 早期 K8s 用 IPTables 模拟负载均衡,但当 Service(服务)数量达到几千个时,IPTables 的链条太长,导致网络延迟剧增。
- 现在 K8s 大多转向 IPVS。因为 IPVS 转发速度快、规则查找效率高,而且支持更多的均衡算法。
🛠️ 总结一张表
| 组件 | 属性 | 核心职责 |
|---|---|---|
| IPVS | 内核模块 | 真正的四层负载均衡执行者,高性能转发。 |
| LVS | 开源项目 | 以 IPVS 为核心的负载均衡架构总称。 |
| Keepalived | 守护进程 | 负责 LVS 的高可用(VIP漂移)和后端节点健康检查。 |
| IPTables | 管理工具 | 主要负责防火墙过滤,逻辑复杂时性能不如 IPVS。 |
