LVS 是 Linux Virtual Server 的缩写,中文叫 Linux虚拟服务器。它是一个基于Linux操作系统内核实现的、开源的、四层负载均衡器。
简单来说,LVS 就是负载均衡技术中,“四层负载均衡” 这一分类下的事实标准和经典实现。它完全运行在Linux内核空间,以极高的性能和稳定性著称,是构建大型网站架构的基石技术之一。
一、LVS的核心特点
- 工作在四层:LVS工作在内核空间,基于IP地址和端口号做转发。它不解析应用层内容(如HTTP的URL)。
- 性能极高:因为它在内核中处理数据包,不需要像Nginx(七层)那样在用户态和内核态之间频繁切换,所以抗并发能力极强,单机可以支撑百万级的并发连接。
- 稳定性极高:作为Linux内核的一部分,LVS非常成熟稳定,被广泛应用于金融、电商等核心生产环境。
- 透明性:对客户端而言,它们访问的是LVS提供的虚拟IP(VIP),后端服务器的变化对客户端完全透明。
二、LVS的核心术语
为了更好地理解LVS的工作原理,你需要先记住这三个角色:
| 角色 | 名称 | 说明 |
|---|---|---|
| VIP | 虚拟IP地址 | 负载均衡器对外提供服务的IP地址。客户端访问的都是这个IP,它绑定在LVS服务器上。 |
| DIP | 负载均衡器的内网IP | LVS服务器和后端真实服务器通信用的IP地址,通常位于同一个内网段。 |
| RIP | 后端真实服务器的IP地址 | 真正处理请求的服务器(如Web服务器)的内网IP。 |
三、LVS的三种工作模式
这是LVS最核心的技术部分。根据数据包转发方式和响应流量的路径,LVS有三种模式:
1. NAT模式(网络地址转换模式)
- 原理:
- 客户端请求到达LVS(VIP)。
- LVS修改数据包的目标IP地址(从VIP改为RIP),将请求转发给后端服务器。
- 后端服务器的响应数据必须先回给LVS,由LVS修改源IP地址(从RIP改回VIP),再发回给客户端。
- 特点:
- 优点:后端服务器可以运行任何操作系统,只需要配置私有IP。
- 缺点:进出流量都经过LVS,当响应流量很大时,LVS会成为瓶颈。通常用于流量不大的场景。
2. DR模式(直接路由模式,最常用)
- 原理:
- 客户端请求到达LVS(VIP)。
- LVS只修改数据包的目标MAC地址(改为后端服务器的MAC),不修改IP地址。数据包直接发给后端服务器。
- 关键点:后端服务器也需要配置VIP(通常配置在Loopback接口上,且不响应ARP),这样服务器收到包后,一看目标IP是VIP(自己),就会接收并处理。
- 响应数据由后端服务器直接回给客户端,不再经过LVS。
- 特点:
- 优点:性能极高。LVS只处理入站请求,出站流量直接从服务器走,LVS不再是瓶颈,特别适合流量巨大的读服务。
- 缺点:LVS和后端服务器必须在同一个物理二层网络内,不能跨网段;后端服务器需要额外配置VIP。
3. TUN模式(IP隧道模式)
- 原理:
- 客户端请求到达LVS(VIP)。
- LVS通过IP隧道技术(在原有的IP包外面再包一层IP头),将请求转发给后端服务器。
- 后端服务器解封装后处理请求,响应数据直接回给客户端。
- 特点:
- 优点:LVS和后端服务器可以跨地域(不在同一个物理网络),通过互联网连接。
- 缺点:隧道封装/解封装有额外开销,配置相对复杂。
三种模式对比
| 维度 | NAT模式 | DR模式 | TUN模式 |
|---|---|---|---|
| 请求/响应路径 | 请求经LVS,响应经LVS | 请求经LVS,响应直接回 | 请求经LVS,响应直接回 |
| 后端服务器要求 | 任何操作系统 | 必须配置VIP(抑制ARP) | 支持IP隧道协议 |
| 网络要求 | 可跨网段 | 必须在同一个物理二层网络 | 可跨地域 |
| 性能 | 一般(LVS有瓶颈) | 极高(最常用) | 高 |
| 应用场景 | 小规模、响应体较小 | 大型网站、流量巨大 | 后端服务器异地部署 |
四、LVS的调度算法
LVS支持多种算法来分发请求到后端服务器,和之前提到的负载均衡算法一致:
- 静态算法:
- RR(轮询):轮流分配。
- WRR(加权轮询):按权重分配。
- 动态算法:
- LC(最少连接):分配给当前连接数最少的服务器。
- WLC(加权最少连接):带权重的LC,是LVS默认且最常用的算法。
- SED(最短期望延迟)、NQ(永不排队)等。
五、LVS在云架构中的位置(与之前内容的关联)
结合你之前提到的负载均衡和云网络架构,可以这样理解LVS的角色:
| 技术 | 与LVS的关系 |
|---|---|
| 负载均衡(通用概念) | LVS是负载均衡概念下的一种具体实现,专攻四层高性能转发。 |
| Nginx/Haproxy | 它们通常是七层负载均衡,工作在用户态,处理应用层逻辑。经典架构中,LVS作为第一层入口(四层转发),Nginx作为第二层(七层路由),层层分流。 |
| 云厂商的SLB/ALB | 云厂商的负载均衡服务(如阿里云的SLB、AWS的ELB)底层很多都采用了基于LVS的技术,或者借鉴了LVS的DR模式思想(即确保转发路径的高效)。 |
| VPC/物理网络 | LVS的DR模式要求LVS和后端服务器在同一个二层网络,这与云数据中心Spine-Leaf架构下的大二层网络设计理念是一致的。 |
总结
- LVS是什么:Linux内核自带的四层负载均衡器。
- 核心优势:性能极高、极其稳定。
- 核心模式:DR模式(直接路由),实现请求转发、响应直回,性能最佳,应用最广。
- 在技术栈中的位置:通常作为大型分布式系统的流量入口第一层,负责海量并发连接的接入,然后将流量分发给后端的Nginx或Web应用服务器。
发表回复