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会话共享。

相关推荐
Stewie1213817 小时前
LVS 项目知识点总结
lvs
Y_cheng_20 小时前
LVS知识梳理
运维·服务器·lvs
高卧怡怡1 天前
LVS认识及基础详解
lvs
椿.湫1 天前
lvs技术
服务器·网络·lvs
懒神降世1 天前
LVS负载均衡集群项目总结(二)
运维·负载均衡·lvs
高磊20052 天前
LVS(Linux virual server)
linux·服务器·lvs
梦Arrebol2 天前
lvs项目知识点总结
lvs
养海绵宝宝的小蜗2 天前
LVS(Linux Virtual Server)项目知识点总结
linux·运维·lvs
池以遇2 天前
云原生——LVS
运维·云原生·lvs