LVS项目全套知识点总结

一、集群基础概念

1. 什么是集群

集群(Cluster)是指将多台独立的服务器主机通过网络互联,组合成一个统一的、高性能的计算机服务群组。对外整体呈现为一个单一服务节点,对内多台服务器协同工作,共同承担业务请求、处理数据、提供服务。

集群核心目的:解决单台服务器的性能瓶颈、单点故障、并发压力问题,实现服务的高可用、高并发、高负载、可扩容。

通俗理解:单台服务器干活能力有限、容易宕机;集群就是多台服务器组队干活,分担压力、互相兜底,保证服务稳定不中断。

2. 集群分类

根据集群核心功能与应用场景,行业内将集群分为三大类,也是LVS学习的基础分类:

(1)负载均衡集群(LB,Load Balance)

核心作用:分发流量、分担压力。将用户的海量请求,按照指定算法均匀分发到后端多台真实服务器处理,避免单服务器过载。

特点:提升并发处理能力、提升业务响应速度、横向扩容简单。

典型工具:LVS、Nginx、HAProxy

(2)高可用集群(HA,High Availability)

核心作用:防止单点故障、保证服务不中断。通过主备切换机制,当主服务器宕机后,备用服务器立刻接管业务,实现服务秒级恢复。

特点:解决服务宕机问题,不提升并发能力,只保障可用性。

典型工具:Keepalived、Heartbeat

(3)高性能计算集群(HPC)

核心作用:聚合算力、处理超大型计算任务。将多台服务器的CPU、内存算力合并,共同完成大数据运算、科学计算、仿真建模等重型任务。

应用场景:气象预测、云计算算力调度、科研仿真

核心总结 :LVS属于负载均衡集群(LB),常搭配Keepalived高可用集群实现「负载均衡+故障自愈」的企业生产架构。

二、LVS核心作用

LVS(Linux Virtual Server,Linux虚拟服务器)是Linux内核级的四层负载均衡软件,由章文嵩博士开发,是目前企业后端服务器集群的核心负载均衡组件。

LVS核心功能与作用

  • 流量分发:基于IP+端口对用户请求进行智能分发,将海量并发请求均匀分配给后端真实服务器(RS)。

  • 压力分担:彻底解决单台服务器并发上限问题,支持十万、百万级高并发请求处理。

  • 屏蔽后端节点:对外仅暴露一个虚拟IP(VIP),隐藏后端真实服务器IP,提升服务安全性。

  • 健康检查:自动检测后端服务器状态,剔除故障节点,不再向故障机器分发流量。

  • 高可用适配:可结合Keepalived实现LVS自身的主备切换,消除负载均衡器单点故障。

  • 内核级高性能:工作在内核态,无需进程调度,转发效率远超Nginx(应用层),无并发瓶颈。

三、LVS的4种工作模式及原理(含图解逻辑+工作步骤)

LVS共有四种主流工作模式,优先级和使用场景不同,分别是:DR模式、NAT模式、TUN隧道模式、FULLNAT模式。以下为各模式原理详解、流量图解逻辑、工作步骤、优缺点

1. LVS NAT模式(网络地址转换模式)

(1)核心原理

通过修改数据包的IP地址实现流量转发。用户请求到达LVS调度器后,LVS将数据包的目标IP(VIP)修改为后端真实服务器IP(RIP);后端服务器响应数据返回时,再次经过LVS,将源IP修改为VIP,最终返回用户。

(2)流量图解逻辑

用户客户端 → 公网IP → LVS(VIP) → 改写目标IP → 后端RS服务器 → 响应返回LVS → 改写源IP → 返回客户端

(3)详细工作步骤

  1. 客户端发起请求,目标地址为LVS虚拟IP(VIP),数据包到达LVS调度器。

  2. LVS根据调度算法选中一台后端真实服务器(RS)。

  3. LVS修改数据包目标IP为RS的真实IP,保留客户端源IP,转发给RS。

  4. RS接收请求并处理业务,生成响应数据包,源IP为自身RIP,目标IP为客户端IP。

  5. 响应数据包传回LVS调度器,LVS修改数据包源IP为VIP。

  6. LVS将修改后的数据包转发给客户端,请求闭环完成。

(4)优缺点

优点:配置简单、支持端口映射、后端RS可以是任意系统、无需配置VIP;

缺点:所有请求和响应流量均经过LVS,LVS易成为性能瓶颈,并发能力有限。

2. LVS DR模式(直接路由模式,企业最常用)

(1)核心原理

基于MAC地址转发 ,不修改IP地址,仅修改数据帧的MAC地址。请求流量经过LVS调度转发,响应流量直接由后端RS返回客户端,不经过LVS,是性能最高的模式。

(2)流量图解逻辑

客户端 → LVS(修改MAC)→ 后端RS → 直接返回客户端(跳过LVS)

(3)详细工作步骤

  1. 客户端发送请求到VIP,数据帧目标MAC为LVS网卡MAC。

  2. LVS接收数据帧,根据算法选中后端RS。

  3. LVS仅修改数据帧的目标MAC地址为RS网卡MAC,IP地址全程不变,转发请求。

  4. 后端RS接收数据包,识别自身绑定的VIP,处理业务请求。

  5. RS直接封装响应数据包,以VIP为源IP,直接发送给客户端,不经过LVS。

(4)优缺点

优点:响应流量不经过LVS,无性能瓶颈、并发极高、稳定性强;

缺点:所有服务器必须在同一局域网、需要抑制RS的ARP响应、不支持端口映射。

3. LVS TUN隧道模式(IP隧道模式)

(1)核心原理

通过IP隧道封装技术转发请求。LVS将客户端原始数据包重新封装一层IP隧道协议,转发给跨网段的后端RS,RS解封装处理请求,响应直接回包给客户端。

(2)流量图解逻辑

客户端 → LVS(IP隧道封装)→ 跨网段RS(解封装处理)→ 直接返回客户端

(3)详细工作步骤

  1. 客户端请求到达LVS VIP。

  2. LVS通过IP隧道协议,对原始数据包进行二次封装,新IP头目标地址为远端RS的RIP。

  3. LVS将封装后的数据包转发给跨网段的后端RS。

  4. RS接收数据包,解封装获取原始请求数据,处理业务。

  5. RS直接以VIP为源IP,将响应数据返回客户端,不经过LVS。

(4)优缺点

优点:支持跨机房、跨网段部署后端服务器,突破局域网限制,高性能;

缺点:服务器需要开启IP隧道功能,配置复杂,部分系统不支持。

4. LVS FULLNAT模式(双向全地址转换)

(1)核心原理

对数据包源IP和目标IP同时修改。请求时:客户端IP→LVS本地IP,VIP→RSIP;响应时:RSIP→LVS本地IP,LVS本地IP→客户端IP,彻底隔离前后端网络。

(2)流量图解逻辑

客户端IP → LVS(改源+目标IP)→ RS → LVS(反向改IP)→ 客户端

(3)详细工作步骤

  1. 客户端请求到达LVS VIP。

  2. LVS将数据包源IP改为LVS本地内网IP,目标IP改为RS的RIP,转发请求。

  3. RS处理请求,响应数据包源IP为RIP,目标IP为LVS内网IP。

  4. 响应回到LVS,LVS将源IP改为VIP,目标IP改为客户端IP,转发给用户。

(4)优缺点

优点:前后端网络完全隔离、无需同网段、支持跨网段部署、配置简单;

缺点:所有流量经过LVS,性能略低于DR模式,内核版本要求较高。

四、LVS的13种调度算法(完整版分类+详解)

LVS官方共计13种调度算法,分为静态算法(4种) 和**动态算法(9种)**两大类。静态算法不感知后端服务器状态,动态算法会根据服务器负载、连接数动态调整分发权重。

1. 静态调度算法(固定规则,不自适应负载)

(1)RR 轮询算法

默认基础算法,将用户请求依次轮流分发到每一台后端服务器,所有服务器分配请求数量完全均等。适用于后端服务器配置、性能完全一致的场景。

(2)WRR 加权轮询算法

在轮询基础上增加权重,权重越高的服务器,分配的请求越多。根据服务器硬件配置差异分配权重,高配机器承担更多流量,低配机器承担少量流量,适配异构服务器集群。

(3)DH 目标地址哈希算法

根据用户请求的目标IP地址进行哈希计算,固定分发到某一台后端服务器。保证同一目标IP的请求始终访问同一RS,适合固定业务节点调度场景。

(4)SH 源地址哈希算法

根据用户客户端源IP哈希计算,同一客户端IP的请求始终分发到同一台后端服务器,简易实现会话保持效果。

2. 动态调度算法(感知负载,智能自适应)

(1)LC 最少连接算法

动态统计后端服务器当前活跃连接数,优先将请求分发到连接数最少的服务器,自动规避高负载节点,适配请求处理时长不一致的业务。

(2)WLC 加权最少连接算法(企业默认常用)

结合权重+最少连接,综合计算服务器负载值,权重高、连接数少的服务器优先分配请求。是生产环境最稳定、最常用的动态算法。

(3)SED 最短期望延迟算法

优化版WLC算法,优先分发请求到「处理延迟最短」的服务器,兼顾连接数和处理效率,提升整体响应速度。

(4)NQ 无队列算法

空闲服务器优先,只要有服务器无活跃连接,直接分发请求,不进入队列;所有服务器繁忙时,再按照SED算法调度,减少请求排队延迟。

(5)LBLC 基于本地的最少连接算法

适用于缓存集群,根据目标IP哈希绑定节点,节点空闲则优先分发,节点繁忙则动态调整,兼顾会话固定和负载均衡。

(6)LBLCR 带复制的本地最少连接算法

LBLC优化版,支持缓存数据复制,解决单点缓存失效问题,主要用于大型缓存集群负载调度。

(7)DRR 目标轮询算法

基于目标IP轮询分发,保证同一业务目标地址均匀分配流量,适合多业务节点均分场景。

(8)SRR 源轮询算法

基于客户端源IP轮询分发,兼顾流量均匀性和访问稳定性。

(9)FO 快速覆盖算法

极致性能算法,优先选择负载最低、响应最快的节点,适合高并发、低延迟核心业务。

五、LVS多端口轮询问题及完整解决方案

1. 多端口轮询问题现象

当LVS一台虚拟服务器(同一个VIP)需要监听多个端口 (如80、443、8080)时,默认轮询算法会出现端口调度混乱、端口绑定错乱、流量分配不均问题。

核心问题根源:LVS默认是基于服务维度调度,单VIP多端口时,不同端口的请求会共享调度队列,导致同一后端服务器被分配多个端口流量,出现业务冲突、负载失衡。

2. 官方完整解决方案(实操步骤)

方案核心:多端口独立服务调度(每个端口单独配置VS规则)

为VIP下的每一个业务端口,单独创建独立的虚拟服务(VS),每个端口拥有独立的调度队列、独立算法、独立权重,实现端口隔离轮询。

实操配置步骤

  1. 清空原有单端口全局调度规则,避免冲突:执行 ipvsadm -C 清空所有规则。

  2. 为80端口单独创建虚拟服务,配置独立轮询策略: ipvsadm -A -t 192.168.1.100:80 -s wrr

  3. 为443端口单独创建虚拟服务: ipvsadm -A -t 192.168.1.100:443 -s wrr

  4. 为8080端口单独创建虚拟服务: ipvsadm -A -t 192.168.1.100:8080 -s wrr

  5. 分别为每个端口添加后端真实服务器,独立配置权重: ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -g -w 100 ipvsadm -a -t 192.168.1.100:443 -r 192.168.1.10:443 -g -w 100

  6. 保存ipvsadm规则,开机自启,完成多端口独立轮询配置。

方案优势

各端口流量完全隔离、互不干扰,轮询均匀,彻底解决多端口调度错乱问题,支持不同端口配置不同算法、不同权重。

六、LVS会话粘滞(会话保持)问题及解决方案

1. 会话粘滞问题现象

LVS默认轮询调度中,用户的多次请求会被分发到不同的后端服务器。若业务需要同一用户全程访问同一台RS (如登录会话、购物车、表单提交),会出现会话丢失、登录失效、业务报错,这就是会话不粘滞问题。

2. 四种主流解决方案(由简到繁,含实操)

方案一:LVS SH源地址哈希算法(简易会话保持)

原理:基于客户端IP哈希,同一IP始终调度到同一台RS,实现基础会话保持。

配置命令:ipvsadm -A -t VIP:端口 -s sh

优缺点:配置简单,无需额外组件;缺点是多用户同IP(局域网)会被调度到同一节点,负载不均。

方案二:LVS持久化连接(Persistence)(企业常用)

原理:开启LVS会话持久化,指定超时时间,同一客户端在时效内的所有请求,固定分发到同一RS,完美实现会话粘滞。

实操步骤:

  1. 创建负载均衡规则,开启持久化会话(超时时间300秒): ipvsadm -A -t 192.168.1.100:80 -s wrr -p 300

  2. 添加后端RS节点,正常配置权重;

  3. 生效后,同一客户端5分钟内请求固定访问同一服务器。

优势:不改变原有调度算法,兼顾负载均衡+会话保持,稳定性极高。

方案三:后端统一会话共享(终极解决方案)

原理:彻底摆脱LVS会话绑定,所有后端服务器统一连接Redis/Memcached,将用户会话数据存入公共缓存,所有RS共享会话。无论用户访问哪台服务器,都能读取到会话信息。

适用场景:大型集群、分布式业务、需要无状态扩容的生产环境。

方案四:Cookie会话绑定(七层精准保持)

搭配Nginx七层负载,通过Cookie标记用户节点,精准实现会话保持,解决IP哈希的局限性,适合精细化业务调度。

七、知识点总结复盘

  1. 集群分为LB负载均衡、HA高可用、HPC高性能计算,LVS为四层LB负载均衡器;

  2. LVS四大模式:DR(最高性能)、NAT(配置简单)、TUN(跨网段)、FULLNAT(网络隔离);

  3. 13种算法分为静态4种、动态9种,WLC为生产默认最优算法;

  4. 多端口问题核心解决思路:单端口独立VS规则隔离调度

  5. 会话粘滞最优生产方案:LVS持久化连接(-p参数),大型业务搭配Redis会话共享。

相关推荐
ly76893 天前
负载均衡详解:从四层、七层到 LVS、Keepalived、Nginx 与 HAProxy
nginx·负载均衡·lvs
小马同学-6 天前
Keepaloved+LVS(DR) +MariaDN主主
linux·运维·lvs
暖核7 天前
Keepalived + LVS(DR)+ MariaDB 主主高可用架构实战指南
架构·mariadb·lvs
闲云野鹤在人间8 天前
项目实战:LNMP-电商平台-ECshop
linux·运维·nginx·apache·lvs
黑泽明*8 天前
LVS-负载均衡全解析
运维·负载均衡·lvs
小马同学-9 天前
负载均衡-LVS全解析
运维·负载均衡·lvs
Archy_Wang_114 天前
LVS+KeepAlived+Nginx实现企业级业务高可靠部署的实战教程
运维·nginx·lvs
tx112087635820 天前
LVS知识归纳与模式解析及常见问题复现解析
linux·运维·服务器·lvs·ipvsadm·nat/dr模式
輝太くん20 天前
LVS重新梳理
lvs
苍狗T20 天前
LVS相关知识总结
linux·运维·服务器·lvs