IPVS 知识点总结

IPVS 知识点总结

一、IPVS 概述

IPVS(IP Virtual Server) 是运行在 Linux 内核中的四层负载均衡技术,是 LVS(Linux Virtual Server)的核心组件。

  • 发展历程:早在 Linux 2.2 内核时以补丁形式出现,从 2.4.24 版本起正式并入 Linux 官方标准内核
  • 工作层级:四层(传输层),根据 IP 加端口号分发请求
  • 核心功能:负载均衡器根据指定调度算法和服务器负载,将客户端请求转发给后端真实服务器(RS)
  • 高可用支持:主备 IPVS 通过 UDP 组播同步连接状态,故障转移时备份节点可继承大多数连接状态

二、三种工作模式

1. NAT 模式(Network Address Translation)

核心原理:通过网络地址转换实现请求转发,请求和响应都经过调度器。

工作流程:

  1. 客户端向 VIP(虚拟IP)发送请求
  2. LVS 调度器收到请求后,根据调度算法选择一台 RS
  3. DNAT:将请求报文的目标地址 VIP 改写为 RS 的 RIP,目标端口也可改写
  4. 请求转发给后端 RS 处理
  5. RS 处理完后将响应发回调度器
  6. SNAT:调度器将响应报文的源地址 RIP 改回 VIP
  7. 响应返回给客户端,客户端认为响应来自 VIP

模式总结:

  • 请求通过 DNAT 改写目标地址,响应通过 SNAT 改写源地址
  • 调度器需要同时配置公网 WAN IP 和内网 LAN IP
  • RS 的默认网关必须指向调度器的内网 IP(LDIP)
  • 支持 IP 加端口转换(如 80 到 8080),DR/TUN 不支持
  • RS 只需配置私有 IP 即可
  • 需要开启内核转发 net.ipv4.ip_forward=1

优缺点:

优点 缺点
配置简单,易于理解 调度器是瓶颈,请求响应都经过 LB
支持端口映射 节点数量有限,一般 10 到 20 台
RS 只需内网 IP 性能较低

2. DR 模式(Direct Routing 直接路由)

LVS 默认模式,应用最广泛。

核心原理:通过改写请求报文的目标 MAC 地址实现转发,响应直接由 RS 返回客户端,不经过调度器。

工作流程:

  1. 客户端向 VIP 发送请求
  2. LVS 调度器收到请求后,选择一台 RS
  3. 改写目标 MAC:将请求的目标 MAC 改为 RS 的 MAC 地址,源 IP / 目标 IP / 端口均保持不变(CIP 到 VIP)
  4. 请求通过二层转发给 RS
  5. RS 发现目标 IP 是自己 lo 接口上绑定的 VIP,处理请求
  6. RS 直接将响应返回给客户端(源 IP 为 VIP)

模式总结:

  • 仅修改目的 MAC 地址,源 IP 仍是 CIP,目的 IP 仍是 VIP
  • 请求经过调度器,响应不经过,并发量大时效率很高
  • 所有 RS 和调度器必须在同一个局域网(LAN) 内
  • RS 需要在 lo 接口绑定 VIP,并解决 ARP 抑制 问题
  • RS 的默认网关不需要指向调度器 DIP,直接指向上级路由器
  • 调度器无法改变目标端口(不支持端口映射)

ARP 抑制配置:

/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce

优缺点:

优点 缺点
性能最高,吞吐量好 不能跨 LAN(同一二层网络)
响应直接返回,无调度器瓶颈 需要配置 ARP 抑制
无隧道开销 不支持端口映射

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

核心原理:将请求报文封装一层新的 IP 首部,通过 IP 隧道转发给 RS,RS 解封后处理并直接返回响应。

工作流程:

  1. 客户端向 VIP 发送请求(源 CIP,目标 VIP)
  2. 调度器收到请求后,选择一台 RS
  3. IP 封装:在原 IP 报文外再封装一层 IP 首部。外层是源 DIP 和目标 RIP,内层是源 CIP 和目标 VIP(保持不变)
  4. 通过隧道将报文发给 RS
  5. RS 收到后拆除外层 IP,发现内层目标是自己 lo 上的 VIP
  6. RS 处理请求,直接将响应返回给客户端(源 VIP,目标 CIP)

模式总结:

  • 请求报文不修改原地址,而是在外层再封装一层 IP(IP-in-IP)
  • 响应直接由 RS 返回客户端,调度器只处理入站请求
  • 集群系统吞吐量可提高 10 倍以上,但隧道有一定系统开销
  • 支持跨 LAN / WAN,RS 可以在不同地理位置
  • 所有 RS 需要绑定 VIP,需抑制 ARP
  • 不支持端口转换
  • RS 需要支持 IP 隧道协议(ipip / ipsec)

优缺点:

优点 缺点
可跨 LAN/WAN,扩展性好 配置复杂,需 IP 隧道支持
响应不经过调度器,性能好 隧道封装有系统开销
支持跨地域部署 LAN 环境下效率不如 DR 模式

三、三种模式对比

NAT 模式的核心是改 IP 地址。客户端访问 VIP,调度器把请求的目标 IP 改成后端 RS 的 IP,这是 DNAT。RS 处理完把响应发回调度器,调度器再把响应的源 IP 从 RS 改回 VIP,这是 SNAT。所以请求和响应两头都过调度器,调度器是明显瓶颈,支持的节点少,一般十到二十台。但它的好处是支持端口映射,比如 80 端口转到后端的 8080,而且 RS 只需要内网 IP,配置最简单。缺点是 RS 的默认网关必须指向调度器,还要开启内核转发。

DR 模式的核心是改 MAC 地址。请求到达调度器后,调度器把报文的目 MAC 改成目标 RS 的 MAC,而源 IP、目标 IP、端口全部保持不变,靠二层直接转发给 RS。RS 的 lo 接口上绑定了 VIP,收到后处理请求,然后把响应直接回给客户端,不经过调度器。所以调度器只处理入站请求这一半流量,性能最高,在局域网内是默认首选。它的限制是同在一个二层网络内,不能跨 VLAN 或跨机房,还需要在 RS 上做 ARP 抑制,也不支持端口映射。

TUN 模式的核心是加一层 IP 头。调度器不修改原报文,而是在原 IP 包外面再封装一层新的 IP 首部,外层源是 DIP 目标是 RIP,内层保持源 CIP 目标 VIP 不变,通过 IP 隧道发给 RS。RS 解封后处理,响应直接回给客户端。因为走隧道,所以能跨 LAN 甚至 WAN,RS 可以在不同地域部署,这是它相对 DR 的最大优势。缺点是隧道封装有系统开销,局域网内效率不如 DR,配置也更复杂,同样不支持端口映射,RS 要支持隧道协议。

总结:NAT 是改地址双向都过调度器,简单便宜但性能差;DR 是改二层 MAC 响应直回,局域网内最快;TUN 是再加一层 IP 头响应直回,能跨地域但有开销。选型看场景,局域网要性能选 DR,要端口映射或图省事选 NAT,跨地域选 TUN。

对比项 NAT 模式 DR 模式 TUN 模式
转发方式 DNAT 加 SNAT(改写IP) 改写目标 MAC IP 隧道封装
请求是否经过 LB 是 是 是
响应是否经过 LB 是 否 否
网络要求 同一 LAN 同一 LAN(二层) LAN / WAN 均可
RS 网关 必须指向 LB 不指向 LB 不指向 LB
端口映射 支持 不支持 不支持
VIP 绑定位置 LB 上 LB 加 RS 的 lo LB 加 RS 的 lo
ARP 抑制 不需要 需要 需要
节点数量 少(10 到 20 台) 多(100 台级) 多(100 台级)
性能 低(瓶颈在 LB) 最高 高(有隧道开销)
适用场景 小规模、需端口映射 局域网内高性能 跨地域 / 跨机房

四、调度算法

IPVS 提供 10 种调度算法,分两大类:

固定调度算法:

  • RR(轮询):依次分配
  • WRR(加权轮询):按权重分配
  • SH(源地址哈希):同一客户端 IP 固定到同一 RS
  • DH(目标地址哈希):同一目标地址固定到同一 RS

动态调度算法(根据负载状态):

  • LC(最少连接):连接数最少的优先
  • WLC(加权最少连接):默认算法,连接数除以权重最小者优先
  • SED(最短期望延迟)、NQ(最少队列)
  • LBLC(基于局部的最少连接)、LBLCR(带复制的 LBLC)

Read more

青藤云一面

青藤云一面

1、自我介绍 面试官您好,我叫XX,来自重庆。本科就读于重庆城市科技学院信息安全专业,是27届应届毕业生。今天应聘的是贵公司的技术支持工程师岗位。 我的技术方向主要围绕网络运维和云原生这一块。在校系统学过计算机网络、操作系统、数据库、云计算这些课程。技能上,我熟悉RedHat、Ubuntu这些主流Linux发行版,能独立完成服务器的系统部署、权限管理、日志分析和安全加固;数据库方面会 MySQL的基本的增删改查操作;自动化这块,我会用Shell写运维脚本,能用Ansible做批量运维,也了解CI/CD流水线的搭建。另外我也熟悉Docker的基本操作,也了解 Kubernetes 核心资源的基础应用与日常排查。 我做事有规划,责任心强,有较好的执行力,希望能够加入贵公司,把自己的专业技能转化为实际工作能力。 2、大学参加的社团活动中,让你意向深刻的 XXX 3、如果你和其他部门约定好在会议室一起规划活动时,对方迟迟没有来的话你会怎么解决 一、主动沟通。 先确认时间和地点有没有沟通清楚,然后主动联系对方,礼貌问一下是不是有什么事情耽搁了、大概多久能到,不干等、也不

By Admin
Linux 运维文件写入操作

Linux 运维文件写入操作

面向 Linux 运维/SRE 的文件写入操作参考手册。既讲每条命令怎么用,也讲它背后的机制(为什么这么行为),配真实输出示例与边界情况,最后给出常见陷阱速查表与标准动作模板。 目录 1. 总览:运维"写文件"的全景 2. Shell 重定向:机制与基础符号 3. 重定向顺序的坑:为什么 2>&1 > f 不行 4. 文件描述符与 exec:持久打开、交换、关闭 5. 防止误覆盖:noclobber 与 >| 6. Here 文档与 Here 字符串 7. tee:

By Admin