LVS 负载均衡知识点

📅 2026/7/31 4:48:47
LVS 负载均衡知识点
一、什么是集群1. 定义集群Cluster将多台独立的物理服务器 / 虚拟主机通过网络组合成一个整体对外提供服务对外表现为单一服务节点对内由多台机器共同分担压力。2. 核心价值提升并发承载能力性能扩容实现故障自动转移高可用一台宕机不影响整体横向无限水平扩展性价比高于单台高配服务器二、集群三大分类1. 负载均衡集群 LBLoad Balance代表LVS、Nginx、HAProxy核心请求分发把用户流量按规则打散到后端多台 Real Server目标分担压力、提高吞吐量解决单台服务器并发瓶颈本次 LVS 属于此类集群2. 高可用集群 HAHigh Availability代表Keepalived、CorosyncPacemaker核心故障自动切换消除单点故障典型架构主备Master-Backup主节点挂了备节点立刻接管 VIP本次项目搭配 KeepalivedVRRP 实现 LVS 调度器高可用3. 高性能计算集群 HPCHigh Performance Computing代表分布式计算、大数据集群核心把巨型计算任务拆分给多台服务器并行运算多用于科学计算、渲染、大数据运算Web 架构极少使用三、LVS 是什么与作用1. LVS 全称Linux Virtual ServerLinux 虚拟服务器由章文嵩博士开发Linux 内核四层负载均衡模块ipvs。2. 核心定位工作在OSI 四层传输层基于 IP 端口做转发性能极强百万级并发无压力几乎不消耗 CPU 资源。3. 主要作用四层流量负载均衡分发 TCP/UDP 请求到后端 RS 真实服务器配合 KeepalivedVRRP 实现调度器双机高可用解决 LVS 单点故障构建大规模 Web 服务集群支撑高并发访问屏蔽后端服务器真实 IP提高内网安全性。4. 架构角色固定名词Director调度器 / DSLVS 所在机器KA1、KA2做流量分发Real ServerRS 后端真实服务器提供业务服务节点rs1、rs2VIP虚拟浮动 IP用户访问入口172.25.254.100DIP调度器内网物理 IPRIP后端 RS 内网真实 IP。四、LVS 四种工作模式原理重点模式 1DR 直接路由模式本次项目使用最常用原理用户请求→VIP→DirectorLVS 只修改二层 MAC 地址目标 MAC 改为某一台 RS 网卡 MAC数据包通过交换机二层转发直达 RSRS 本地 lo 回环网卡绑定 VIP/32 掩码ARP 内核抑制接收数据包响应数据包不经过 DirectorRS 直接网关回包给客户端。优缺点✅ 性能最高、Director 压力最小❌ 要求DS 和 RS 必须在同一个局域网、同一 VLANRS 必须配置 lo 绑定 VIParp_ignore/arp_announce 参数。本次项目配置要点RSlo.nmconnection 绑定172.25.254.100/32 sysctl ARP 抑制四条参数。模式 2NAT 网络地址转换模式原理入站Director 修改数据包目标 IPVIP→RIP转发给 RS出站RS 回包必须经过 Director修改源 IPRIP→VIP再发给客户端本质依靠调度器做 SNATDNAT 双向地址转换。优缺点✅ 跨网段可用RS 可以在不同子网配置最简单❌ 所有返回流量都经过 DSDirector 容易成为瓶颈并发上限低。模式 3TUN IP 隧道模式原理Director 在原有 IP 包外层封装一层新 IP 头IPIP 隧道发给 RSRS 内核解封装取出内层数据包发现目标是 VIP处理请求响应包直接原路返回客户端不经过 DS。优缺点✅ 支持跨公网、跨网段部署RS 可以异地机房❌ 需要所有服务器开启 IPIP 隧道模块配置复杂公网环境有 MTU 问题。模式 4FULLNAT 完全 NAT 模式内核较新版本支持原理同时做入站目的 IP VIP→RIP入站源 IP CIP→DIP双向全部转换请求和回包都经过 DS。特点可以实现客户端 IP 透传、跨网段但是性能损耗最大生产极少使用。五、LVS 13 种调度算法ipvsadm 调度策略分为静态算法固定规则不看后端状态和动态算法根据负载 / 连接数自动调整一静态算法 4 种RR 轮询请求挨个依次分发平均分配不考虑服务器性能差异WRR 加权轮询给 RS 设置权重权重越高分到请求越多性能好机器权重拉高DH 目标地址哈希同一客户端目标 IP 固定分配到同一台 RSSH 源地址哈希同一客户端源 IP 固定调度到同一 RS简易会话保持。二动态算法 9 种推荐生产使用LC 最少连接当前活跃连接数最少的 RS 优先调度WLC 加权最少连接默认算法带权重的最少连接LVS 默认策略LBLC 基于本地的最少连接目标 IP 做哈希同时兼顾连接数LBLCR 带复制的 LBLC缓存热点请求减轻后端压力SED 最短期望延迟计算公式(active1)*256/weight值越小越优先NQ 永不排队空闲 RS 直接分配无空闲再走 SEDFO 流量均衡根据上下行流量负载调度OVF 溢出调度基于溢出阈值分发PEBLC预测型最少连接预判后端负载波动。生产选型最简建议服务器配置一致RR / LC服务器性能不同WRR / WLC最通用需要简单会话绑定SH 源哈希六、LVS 多端口轮询问题 解决方案1. 问题描述LVS 一个 VS 虚拟服务默认只能绑定单个端口例如-A -t 172.25.254.100:80。如果后端同时提供 80HTTP、443HTTPS、22SSH、3306MySQL 多端口服务单条规则无法实现统一 VIP 访问。解决方案1.在rs主机中同时开始http和https两种协议[rootRS1 ~]# dnf install httpd -y[rootRS1 ~]# systemctl restart httpd[rootRS2 ~]# dnf install httpd -y[rootRS2 ~]# systemctl restart httpd2.在vsnode中添加https的轮询策略1首先安装ipvsadm的安装包2增加策略-A新增虚拟服务 VS-tTCP 协议-s rr轮询算法-a添加后端 RS-r后端真实服务器 IP-gDR 直接路由模式Forward 列显示 Route代表 DR1.创建 80 端口 VS 服务轮询调度 rrDR 模式 (-g)[rootvsnode ~]# ipvsadm -A -t 192.168.0.200:80 -s rr[rootvsnode ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20 -g[rootvsnode ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10 -g2.创建 443 端口第二条 VS同一组后端[rootvsnode ~]# ipvsadm -A -t 192.168.0.200:443 -s rr[rootvsnode ~]# ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.10:443 -g[rootvsnode ~]# ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.20:443 -g3. ipvsadm -Ln输出结果Route DR 模式生效Weight 权重都是 1RR 轮询均分请求ActiveConn/InActConn 为 0暂无客户端访问正常[rootvsnode ~]# ipvsadm -Ln以上配置解决了LVS 多端口轮询问题多端口新建多条 VS 规则最直观、最易维护的方案。3当上述设定完成后http和https是独立的service轮询会出现重复问题错误展示这种错误分两种情况情况 A你没有分开创建 80、443 两条 VS如果你只配置了单一端口 VS例如只做 80自然不会出现这个现象。情况 B虽然两条 VS但是测试命令不一样截图测试命令curl 192.168.0.200;curl -k https://192.168.0.200就是连续发起 2 条独立连接2 次 TCP 连接分别匹配 80、443 两个独立调度组如果测试方式是1. 反复只 curl http只走 80 VS→ 正常交替 RS1、RS2看不到问题2. 反复只 curl https只走 443 VS→ 正常交替 RS1、RS2看不到问题只有一次 http 一次 https 组合测试才容易复现 “两次落在同一台 RS” 的 bug解决方案使用火墙标记访问vip的80和443的所有数据包设定标记为6666然后对此标记进行负载把 VIP:80 和 VIP:443 合并成同一个调度服务不再分开调度iptables mangle 表给访问 VIP 的 80、443 数据包统一打上标记 6666[rootvsnode ~]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 6666ipvsadm 不基于端口创建 VS基于 fwmark 创建 VS[rootvsnode ~]# ipvsadm -A -f 6666 -s rr[rootvsnode ~]# ipvsadm -a -f 6666 -r 192.168.0.10 -g[rootvsnode ~]# ipvsadm -a -f 6666 -r 192.168.0.20 -g此时访问 80、443 流量进入同一个调度器轮询统一管理不会出现跨端口调度紊乱。七、LVS 会话保持会话粘滞解决方案1. 业务场景登录状态、购物车、验证码依赖 Session同一用户整个会话必须始终访问同一台 RS否则登录失效。2.解决方案会话粘滞解决方案-p 超时时间LVS 内核持久连接表指定时间内同一客户端 IP 永远调度同一台 RS属于四层原生会话保持比 SH 源哈希更稳定企业常用注意测试 1 秒太短正式改为 -p 更多时间[rootvsnode ~]# ipvsadm -A -f 6666 -s rr -p 1Service already exists[rootvsnode ~]# ipvsadm -Ln测试 [rootclient ~]# curl 192.168.0.200RS1 - 192.168.0.10监控观察[rootvsnode ~]# watch -n 1 ipvsadm -Lnc