LVS DR模式工作原理群集部署
文章目录
- [LVS DR模式工作原理群集部署](#LVS DR模式工作原理群集部署)
- 前言
- 一、核心集群类型详解
-
- [1.负载均衡集群(Load Balancing Cluster,LBC)](#1.负载均衡集群(Load Balancing Cluster,LBC))
- 2.集群分为三类
- 二、LVS三种工作模式
- 三、LVS虚拟服务器
- 1、LVS介绍
- 2、负载调度算法
- 3、LVS-DR工作原理
- [四、DR模式 LVS负载均衡群集](#四、DR模式 LVS负载均衡群集)
-
- [1. DR模式工作原理(Direct Routing)](#1. DR模式工作原理(Direct Routing))
-
- [1.1 数据包流向分析(4步完整流程)](#1.1 数据包流向分析(4步完整流程))
- [1.2 DR模式核心特点](#1.2 DR模式核心特点)
- [2. DR模式部署步骤(含详细注释)](#2. DR模式部署步骤(含详细注释))
-
- [2.0 环境规划(部署前必看)](#2.0 环境规划(部署前必看))
-
- [2.0.1 服务器角色与IP分配](#2.0.1 服务器角色与IP分配)
- [2.0.2 环境架构说明](#2.0.2 环境架构说明)
- [2.1 配置负载调度器(Director Server,IP:192.168.10.23)](#2.1 配置负载调度器(Director Server,IP:192.168.10.23))
- [2.2 配置节点服务器(Real Server,IP:192.168.10.16 和 192.168.10.17)](#2.2 配置节点服务器(Real Server,IP:192.168.10.16 和 192.168.10.17))
-
- [两台Real Server配置完全一致,以下步骤同时在两台服务器执行](#两台Real Server配置完全一致,以下步骤同时在两台服务器执行)
- (1)配置VIP到lo接口(本地回环接口)
- (2)调整ARP参数(避免MAC地址冲突,关键步骤)
- (3)安装并配置Web服务(提供测试页面,验证负载均衡)
- [2.3 测试LVS群集(验证部署结果)](#2.3 测试LVS群集(验证部署结果))
- [3. LVS相关面试知识点(DR模式重点)](#3. LVS相关面试知识点(DR模式重点))
-
- [3.1 LVS三种工作模式对比(重点关注DR模式)](#3.1 LVS三种工作模式对比(重点关注DR模式))
- [3.2 LVS调度算法(DR模式常用算法)](#3.2 LVS调度算法(DR模式常用算法))
- [3.3 Nginx vs LVS vs HAProxy 核心区别(DR模式LVS定位)](#3.3 Nginx vs LVS vs HAProxy 核心区别(DR模式LVS定位))
- 总结
前言
在互联网架构朝着高并发、高可用演进的过程中,负载均衡技术始终是保障业务稳定运行的核心支撑 ------ 它通过将海量请求合理分配至后端节点服务器,有效避免单点过载,同时提升整体服务的响应效率与容错能力。Linux Virtual Server(LVS)作为 Linux 内核原生的负载均衡方案,凭借 "内核态转发" 的特性,具备百万级并发处理能力,成为超大规模集群场景下的优选技术之一。
一、核心集群类型详解
1.负载均衡集群(Load Balancing Cluster,LBC)
通过 "调度算法" 将外部请求(或任务)均匀分发到集群中的多台后端服务器,避免单台服务器过载,同时最大化集群的整体处理能力。
本质是 "任务分流",核心解决 "单节点压力过大导致的响应变慢、服务不可用" 问题。
高可用集群(High Availability Cluster,HAC)
通过 "冗余设计" 和 "故障自动切换",确保集群中的核心服务在任意节点故障时,能快速切换到备用节点,避免服务中断。
本质是 "故障兜底",核心解决 "单点故障导致的服务不可用" 问题,追求 "99.9% 以上的服务可用性"(如 99.99% 意味着每年 downtime 不超过 52 分钟)。
高性能运算集群(High Performance Computing Cluster,HPC)
由大量计算节点(CPU/GPU 密集型)通过高速网络互联,协同完成单台服务器无法承载的 "大规模、高复杂度计算任务"。
本质是 "算力聚合",核心解决 "单节点算力不足导致的计算任务无法完成或耗时过长" 问题,追求 "极致的计算速度"
简单来说,就是将多个主机作为一个整体,对外提供相同的服务。
2.集群分为三类
负载均衡(LB):减少响应的延迟 、提高并发处理能力。
高可用(HA):强调了系统的稳定性、连续性、减少服务器中断时间,减少损失。
高可用(HPC):提高运算能力、并发、分布式
二、LVS三种工作模式
1、地址转换(NAT模式)
调度器作网关,是访问请求的入口,也是响应访问的出口,在高并发场景中负载压力很高。nat转换可以提高安全性。
2、TUN模式
仅是访问请求的入口,响应不经过调度器,但是需要大量的公网ip,还需要专门的ip隧道,数据转发受ip隧道影响。
3、DR模式
调度器是访问请求的入口,响应数据不经过调度器,节点服务器和调度器在同一个物理网络,数据在转发中不受额外的影响。
4.LVS集群管理(ipvsadm)
创建虚拟服务器
添加、删除服务器节点
查看群集及节点情况
保存负载分配策略 选项
-A:添加虚拟服务器
-D:删除整个虚拟服务器
-s:指定负载调度算法 (轮询:rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc )
-a:表示添加真实服务器 (节点服务器)
-d:删除某一个节点
-t:指定 VIP地址及 TCP端口
-r:指定 RIP地址及 TCP端口
-m:表示使用 NAT群集模式.
-g:表示使用 DR模式
-i:表示使用 TUN模式
-w:设置权重 (权重为 0 时表示暂停节点)
-p 60:表示保持长连接60秒
-l:列表查看 LVS 虚拟服务器 (默认为查看所有)
-n:以数字形式显示地址、端口等信息,常与 "-l" 选项组合使用。ipvsadm -ln
5.Nginx、LVS和HAProxy之间的区别
Nginx:轻量、全能,适合 Web 服务和中小型负载均衡。
LVS:极致性能,适合四层超大规模集群,但功能单一。
HAProxy:专业负载均衡器,四层+七层都行,健康检查能力最强。
三、LVS虚拟服务器
1、LVS介绍
LVS 工作在 OSI 模型的 传输层(四层),通过 IP 负载均衡技术将客户端请求分发到后端多台真实服务器(Real Server,RS),核心价值是提高服务的并发处理能力,广泛应用于高并发生产环境(如电商秒杀、大型网站集群)。
与 Nginx(七层负载均衡)相比,LVS 完全运行在内核态,转发效率极高(几乎无性能损耗),支持百万级并发连接,但功能相对专注(仅负责四层转发,不处理应用层逻辑),常与 Nginx 配合形成 "LVS 四层调度 + Nginx 七层代理" 的高性能架构。
2、负载调度算法
2.1、轮询
将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载
2.2、加权轮询
根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多保证性能强的服务器承担更多的访问流量
2.3、最少连接
根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
2.4、加权最少连接
在服务器节点的性能差异较大时,可以为真实服务器自动调整权重
性能较高的节点将承担更大比例的活
3、LVS-DR工作原理
LVS-DR数据包流向分析
客户机先将 源IP 目标VIP 发送到 路由器
##1.路由器收到客户端请求 发送广播 寻找目标VIP ARP问题一:每个节点VIP对应的MAC地址不一致,出现ARP絮乱。
2.DR调度器收到 源IP和目标VIP 会调度给 RS节点服务器
3.RS节点服务器 更换源IP和目标IP 交给路由器 ARP问题二:RS节点VIP对应的MAC和DR调度器的VIP对应的MAC不一致,路由器会覆盖VIP对应的MAC地址表为RS节点的MAC地址。导致路由器和DR调度器失联。
4.交换机 最后将数据再转发给 客户机 客户机在整个传输的过程中不会知道实际提供服务的机器。

四、DR模式 LVS负载均衡群集
1. DR模式工作原理(Direct Routing)
1.1 数据包流向分析(4步完整流程)
- 客户端 → Director(负载均衡器):客户端发送请求到虚拟IP(VIP),数据包会先到达Director Server(负载调度器)的内核空间。
- Director → Real Server(真实服务器):Director检测到数据包目标IP是VIP,判定为集群服务请求,仅修改数据包的MAC地址(目标MAC改为选中的Real Server的MAC,源MAC改为Director自身的MAC),IP地址(源IP:客户端CIP,目标IP:VIP)保持不变,随后将数据包转发给对应的Real Server。
- Real Server 处理请求:Real Server接收数据包(目标MAC为自身),通过本地lo接口(已配置VIP)处理请求;处理完成后,生成响应报文,响应报文的源IP为VIP,目标IP为客户端CIP,不经过Director,直接发送给客户端。
- 客户端接收响应:客户端直接接收Real Server的响应报文,完成一次请求-响应流程。
1.2 DR模式核心特点
- 网络约束:Director Server与Real Server必须在同一物理网络(同网段)。
- IP灵活:Real Server可使用私有IP或公网IP。
- 角色定位:Director仅作为请求入口(转发请求),不作为网关,不处理响应报文。
- 流量特点:所有请求经过Director转发,响应报文由Real Server直接发送给客户端(减轻Director压力)。
- 网关配置:Real Server的网关不能指向Director Server(避免响应报文绕回Director)。
- VIP配置:Real Server必须在lo接口(本地回环接口)配置VIP(确保能处理目标IP为VIP的数据包)。
2. DR模式部署步骤(含详细注释)
2.0 环境规划(部署前必看)
2.0.1 服务器角色与IP分配
| 服务器角色 | IP地址 | 核心作用 |
|---|---|---|
| DR服务器(Director) | 192.168.10.23 | 负载调度器,接收请求并转发 |
| Web服务器1(Real Server) | 192.168.10.16 | 实际处理请求,提供Web服务 |
| Web服务器2(Real Server) | 192.168.10.17 | 实际处理请求,提供Web服务(冗余) |
| 虚拟IP(VIP) | 192.168.10.180 | 客户端访问入口,对外统一暴露 |
| 客户端 | 192.168.10.200 | 测试访问集群服务 |
2.0.2 环境架构说明
- 客户端通过VIP(192.168.10.180)访问集群服务。
- Director(192.168.10.23)通过ens33:0别名配置VIP,负责转发请求。
- 两台Real Server通过lo:0接口配置VIP,直接响应客户端。
- 网络链路:客户端→路由器/交换机→Director→Real Server(请求);Real Server→客户端(响应)。
2.1 配置负载调度器(Director Server,IP:192.168.10.23)
(1)系统基础配置(关闭防火墙、安装依赖工具)
bash
# 1. 关闭防火墙(避免拦截LVS转发的数据包和VIP通信)
systemctl stop firewalld.service
# 2. 关闭SELinux(避免安全策略限制内核模块加载和IP转发)
setenforce 0
# 3. 加载ip_vs内核模块(LVS的核心模块,实现四层负载均衡功能)
modprobe ip_vs
# 4. 安装ipvsadm工具(LVS的命令行管理工具,用于配置调度规则)
yum -y install ipvsadm
(2)配置虚拟IP(VIP:192.168.10.180)
bash
# 1. 进入网卡配置文件目录(Linux网卡配置文件默认存放路径)
cd /etc/sysconfig/network-scripts/
# 2. 复制ens33网卡配置文件,创建虚拟网卡别名ens33:0(避免修改原网卡配置,独立管理VIP)
cp ifcfg-ens33 ifcfg-ens33:0
# 3. 编辑虚拟网卡配置文件
vim ifcfg-ens33:0
# 配置文件内容(逐行注释)
DEVICE=ens33:0 # 虚拟网卡设备名(ens33的别名,:0表示第一个别名)
ONBOOT=yes # 系统启动时自动激活该网卡
IPADDR=192.168.10.180 # 虚拟IP(VIP),客户端访问的入口
NETMASK=255.255.255.255 # 子网掩码设为255.255.255.255(主机路由,仅本机可用该VIP通信)
# 4. 激活虚拟网卡(使配置生效)
ifup ens33:0
# 5. 验证虚拟网卡配置(查看ens33:0是否正常启动,IP是否正确)
ifconfig ens33:0
(3)调整内核参数(优化DR模式网络转发,避免冲突)
bash
# 1. 编辑内核参数配置文件
vim /etc/sysctl.conf
# 添加以下参数(逐行注释)
net.ipv4.ip_forward = 0 # DR模式不需要IP转发(仅修改MAC地址转发,IP不变),设为0禁用
net.ipv4.conf.all.send_redirects = 0 # 禁止所有网卡发送ICMP重定向包(避免客户端收到重定向后绕过Director)
net.ipv4.conf.default.send_redirects = 0 # 禁止默认网卡发送ICMP重定向包
net.ipv4.conf.ens33.send_redirects = 0 # 禁止Director的物理网卡(ens33)发送ICMP重定向包
# 2. 使内核参数立即生效(无需重启系统)
sysctl -p
(4)配置LVS服务及调度规则(核心步骤)
bash
# 1. 清空现有LVS规则(避免旧规则干扰,首次配置必执行)
ipvsadm -C
# 2. 创建虚拟服务器(VIP:端口),指定调度算法
# -A:添加虚拟服务器;-t:指定TCP协议;192.168.10.180:80:VIP和服务端口(HTTP默认80);-s rr:调度算法为轮询(rr)
ipvsadm -A -t 192.168.10.180:80 -s rr
# 3. 添加Real Server节点(192.168.10.16)
# -a:添加真实节点;-r 192.168.10.16:80:Real Server的IP和端口;-g:指定DR模式(Gateway模式)
ipvsadm -a -t 192.168.10.180:80 -r 192.168.10.16:80 -g
# 4. 添加Real Server节点(192.168.10.17)
ipvsadm -a -t 192.168.10.180:80 -r 192.168.10.17:80 -g
# 5. 查看LVS配置及节点状态(验证配置是否生效)
# -l:以列表形式显示;-n:不解析IP为域名(显示纯IP,更清晰);输出中"Route"表示DR模式
ipvsadm -ln
2.2 配置节点服务器(Real Server,IP:192.168.10.16 和 192.168.10.17)
两台Real Server配置完全一致,以下步骤同时在两台服务器执行
(1)配置VIP到lo接口(本地回环接口)
bash
# 1. 进入网卡配置文件目录
cd /etc/sysconfig/network-scripts/
# 2. 复制lo接口配置文件,创建别名lo:0(lo接口是本地回环,配置VIP后可处理目标IP为VIP的数据包)
cp ifcfg-lo ifcfg-lo:0
# 3. 编辑lo:0配置文件
vim ifcfg-lo:0
# 配置文件内容(逐行注释)
DEVICE=lo:0 # lo接口的别名,用于绑定VIP
ONBOOT=yes # 系统启动时自动激活
IPADDR=192.168.10.180 # 绑定VIP(与Director的VIP一致)
NETMASK=255.255.255.255 # 子网掩码设为255.255.255.255(主机路由,仅本机可见)
# 4. 激活lo:0接口(使配置生效)
ifup lo:0
# 5. 验证lo:0配置
ifconfig lo:0
# 6. 添加主机路由(指定VIP的数据包通过lo:0接口转发,确保本地处理VIP请求)
route add -host 192.168.10.180 dev lo:0
(2)调整ARP参数(避免MAC地址冲突,关键步骤)
bash
# 1. 编辑内核参数配置文件
vim /etc/sysctl.conf
# 添加以下参数(逐行注释)
net.ipv4.conf.lo.arp_ignore = 1 # lo接口收到ARP请求时,仅响应目标IP为本地物理IP的请求(不响应VIP的ARP请求,避免暴露VIP)
net.ipv4.conf.lo.arp_announce = 2 # lo接口发送ARP广播时,仅通告本地物理IP(不通告VIP,防止其他设备缓存VIP的MAC为当前服务器)
net.ipv4.conf.all.arp_ignore = 1 # 所有接口遵循lo的ARP忽略规则
net.ipv4.conf.all.arp_announce = 2 # 所有接口遵循lo的ARP通告规则
# 2. 使内核参数立即生效
sysctl -p
(3)安装并配置Web服务(提供测试页面,验证负载均衡)
bash
# 1. 安装httpd服务(Linux自带Web服务器,用于提供测试页面)
yum -y install httpd
# 2. 启动httpd服务
systemctl start httpd
# 3. 设置httpd开机自启(避免服务器重启后Web服务失效)
systemctl enable httpd
# 4. 创建测试页面(两台服务器的页面内容不同,便于验证轮询效果)
# 对于192.168.10.16服务器:
echo 'this is 192.168.10.16 web01!' > /var/www/html/index.html
# 对于192.168.10.17服务器:
echo 'this is 192.168.10.17 web02!' > /var/www/html/index.html
2.3 测试LVS群集(验证部署结果)
测试步骤:
- 打开客户端(192.168.10.200)的浏览器,输入URL:
http://192.168.10.180/。 - 首次访问应显示其中一台Web服务器的测试页面(如"this is 192.168.10.16 web01!")。
- 刷新浏览器(注意:LVS默认会话保持时间为50秒,需等待50秒后刷新,或清除浏览器缓存后刷新),应切换到另一台Web服务器的测试页面(如"this is 192.168.10.17 web02!"),说明轮询调度生效。
测试成功标准:
- 客户端能通过VIP正常访问Web服务。
- 多次刷新(间隔50秒以上)后,页面内容在两台Web服务器之间切换,证明负载均衡生效。
3. LVS相关面试知识点(DR模式重点)
3.1 LVS三种工作模式对比(重点关注DR模式)
| 模式 | 核心原理 | 优点 | 缺点 |
|---|---|---|---|
| NAT(VS/NAT) | Director修改数据包目标IP,Real Server响应包需返回Director | 节点服务器可使用任意操作系统 | Director是性能瓶颈(需处理所有请求和响应) |
| DR(VS/DR) | Director仅修改数据包目标MAC,Real Server直接响应客户端 | 性能高(Director不处理响应),无瓶颈 | 节点服务器需与Director同网段 |
| TUN(VS/TUN) | Director封装IP包到隧道,Real Server解封后直接响应 | 节点服务器可跨网段部署 | 节点需支持IP隧道协议,配置复杂 |



3.2 LVS调度算法(DR模式常用算法)
| 算法类型 | 算法名称 | 核心描述 | 适用场景 |
|---|---|---|---|
| 固定调度 | rr(轮询) | 所有Real Server平均分配请求 | 节点服务器性能一致的场景 |
| 固定调度 | wrr(加权轮询) | 按权重分配请求,权重高的节点分配更多请求 | 节点服务器性能不一致的场景 |
| 固定调度 | dh(目的地址哈希) | 同一客户端请求始终分配到同一节点 | 需会话保持的场景(如购物车) |
| 固定调度 | sh(源地址哈希) | 同一客户端请求始终分配到同一节点 | 需会话保持的场景 |
| 动态调度 | lc(最少连接数) | 优先分配请求到当前连接数最少的节点 | 请求连接时长不一致的场景 |
| 动态调度 | wlc(加权最少连接) | 结合权重和连接数,权重高、连接数少的节点优先分配 | 节点性能不一致且连接时长波动的场景 |
| 动态调度 | lblc(基于地址的最少连接) | 结合目的地址哈希和最少连接,兼顾会话保持和负载均衡 | 大型分布式集群场景 |
3.3 Nginx vs LVS vs HAProxy 核心区别(DR模式LVS定位)
| 特性 | Nginx | LVS(DR模式) | HAProxy |
|---|---|---|---|
| 定位 | Web服务器+反向代理+负载均衡 | 内核级四层负载均衡 | 专业四层+七层负载均衡器 |
| 工作层级 | 四层(TCP)+ 七层(HTTP/HTTPS) | 四层(TCP/UDP,传输层) | 四层+七层 |
| 性能 | 高(软件级,单机十万级并发) | 极高(内核态转发,单机百万级并发) | 高(接近Nginx,专注负载均衡) |
| 核心优势 | 功能丰富(静态资源、缓存、反向代理),易上手 | 性能最强、稳定性高,无响应转发瓶颈 | 健康检查强大,支持会话保持、SSL卸载 |
| 核心劣势 | 七层性能不如LVS/HAProxy | 仅支持四层,功能单一,配置复杂 | 不自带Web服务,依赖其他组件提供内容 |
| 适用场景 | Web代理、动静分离、中小型集群 | 超大规模集群、核心业务四层调度 | 高可用集群、对健康检查要求高的业务 |
一句话总结:
DR模式LVS是极致性能的四层负载均衡方案,适合超大规模集群的核心调度场景,但功能单一,需配合Web服务器(如httpd、Nginx)使用;若需兼顾Web服务和中小型负载均衡,可选择Nginx;若需强大的健康检查和七层调度,可选择HAProxy。
总结
DR 模式作为 LVS 负载均衡群集中的核心应用模式,其 "请求经调度器转发、响应由节点直连客户端" 的设计,从根本上解决了传统 NAT 模式下调度器的响应瓶颈问题,凭借内核态转发的高性能优势,成为支撑超大规模集群稳定运行的关键技术之一。通过前文的梳理可知,DR 模式的价值不仅体现在 "百万级并发处理" 的性能表现上,更在于其对资源的高效利用 ------ 调度器仅负责修改数据包 MAC 地址,无需承担响应转发压力,让后端 Real Server 的算力得以充分释放。