一、集群
集群是将多台独立物理服务器通过网络整合为一个逻辑整体,对外统一提供服务,外部客户端仅感知到一个访问入口。集群分为两大角色:
- 调度器 Director:流量分发入口(LVS 服务器);
- 真实服务器 RS:后端执行业务、处理请求的服务器集群。 核心价值:解决单机性能瓶颈、单点故障、高并发承载问题。
搭建简易集群思路步骤
- 准备多台服务器,划分调度器、RS 节点;
- 配置网络互通,规划 VIP、内网 IP;
- 部署负载均衡调度规则,完成集群搭建。
二、集群分类
按 OSI 层级分类
四层负载均衡:LVS(基于 IP + 端口,内核转发,性能极高);
七层负载均衡:Nginx、Apache(基于 HTTP 等应用协议,功能丰富)。
按部署地域分类
本地局域网集群、异地跨机房集群。
选型步骤
业务并发高优先选 LB;
业务不能中断搭配 HA;
海量计算场景选用 HPC。
三、lvs的作用
LVS 全称 Linux Virtual Server,是 Linux 内核原生四层负载均衡模块,工作在内核态,转发损耗极低。
核心作用:
流量分发:将海量请求均衡分发至多台 RS;
横向扩容:突破单机带宽、CPU、连接数上限;
故障屏蔽:自动下线故障 RS,保证服务稳定;
统一入口:VIP 统一对外,简化运维;
高并发支撑:可承载百万级并发连接。
VIP:虚拟IP CIP :客户端IP DIP :调度器本身真实的内网IP RIP:后端服务器真实的IP
部署落地步骤
确认 Linux 内核自带 ipvs 模块;
安装管理工具 ipvsadm;
定义 VIP、添加 RS、配置调度算法,完成负载均衡。
四、lvs的四种模式及其原理
1.NAT模式
原理:客户端请求到达调度器,调度器修改数据包目标 IP + 端口为后端 RS 内网 IP,转发给 RS;RS 回包时,必须以调度器为网关,数据包经过调度器修改源 IP 为 VIP 后,再返回客户端。
特点:入站、出站流量全部经过调度器,调度器易成为带宽瓶颈;支持端口映射,配置最简单;后端 RS 使用私有 IP,安全性高。
适用场景:小规模集群、需要端口映射的业务。
客户端→IP 目标 VIP→LVS 改目标 IP 为 RSIP→RS 处理→回包改源 IP 为 VIP→客户端
2.DR直接路由
原理:仅修改二层数据帧目标 MAC 地址,IP 全程不变;调度器将请求 MAC 改为选中 RS 的 MAC,局域网转发;RS 收到数据包直接处理,响应数据包不经过调度器,直接发回客户端。
关键配置:所有 RS 在 lo 回环网卡绑定 VIP(32 位掩码),抑制 ARP 广播,防止 RS 抢占 VIP。
特点:出站流量脱离调度器,性能最优,集群节点数量上限高;不支持端口映射;所有节点必须在同一局域网。
适用场景:大规模 Web 业务、高并发互联网业务。
客户端→数据包 MAC 指向 LVS→LVS 修改 MAC 为 RSMAC→RS 处理→直连回包客户端
3.TUN隧道模式
原理:不修改原数据包,在原 IP 报文外层封装一层新 IP 首部,通过 IP 隧道跨网段转发给异地 RS;RS 拆封外层 IP,读取原始请求处理,响应包直接回客户端。
特点:支持跨公网、异地机房部署;内核需要开启 IP 隧道模块;封装存在少量性能损耗。
适用场景:异地多机房容灾、跨地域集群。
客户端→原始数据包→外层封装 IP→跨网转发 RS→拆封原始包→RS 直连回包
4.FULLNAT全地址转换
原理:同时修改数据包源 IP + 目标 IP:请求时目标 IP 改为 RSIP、源 IP 改为调度器内网 IP;回包时还原 IP 地址。
特点:无需同网段、无需隧道,组网灵活;流量依旧全经过调度器,性能弱于 DR;原生内核不支持,多为厂商补丁版本。
适用场景:复杂内网隔离架构。
五、lvs的13种算法
分为静态算法(无状态、不参考负载)、动态算法(参考实时连接负载)两大类:
(一)静态调度算法(5 种)
RR 轮询:请求依次轮流分配给每台 RS,所有服务器权重均等。
WRR 加权轮询:根据服务器硬件性能配置权重,权重越高分到的请求越多。
DH 目标地址哈希:根据客户端访问的目标 IP 哈希固定分配 RS,多用于缓存集群。
SH 源地址哈希:根据客户端源 IP 哈希绑定 RS,简易实现会话粘连。
SCH 最短期望延迟:综合权重与连接数分配,优先分配给 “连接数 / 权重” 比值最小的 RS。
(二)动态调度算法(8 种)
LC 最小连接:实时统计 RS 活跃连接数,新请求分给连接最少的服务器。
WLC 加权最小连接(默认算法):在 LC 基础上加入权重,计算公式:活跃连接数/权重,比值最小优先分配。
LBLC 基于本地的最小连接:目标 IP 绑定固定 RS,仅当 RS 超载时重新调度,用于缓存业务。
LBLCR 带复制的 LBLC:缓存集群优化算法,限制单台 RS 绑定的目标 IP 数量。
SED 最短预期延迟:公式(连接数+1)/权重,解决 WLC 对低权重节点分配不公平问题。
DH、SH:哈希类动态优化版本。
FO、OVF:流量带宽优先调度,多用于带宽敏感业务。
六、lvs的多端口轮询问题解决方案
1. 问题描述
同一 VIP 下 80、443 等多端口独立调度,同一客户端不同端口被分发至不同 RS,会话错乱。
2. 主流方案:防火墙标记 FWMARK(推荐)
原理
给多个业务端口打上统一数字标记,LVS 基于标记统一调度,多端口共用一套 RS 集群。
图解
客户端 → VIP:80 / VIP:443 → iptables 打标记(如 6666) → LVS 按标记分发 → RS1/RS2/RS3
环境预设:
VIP:10.0.0.100,RS1:10.0.0.101,RS2:10.0.0.102,工作模式 DR,调度算法 WLC
1.调度器配置防火墙标记
2.配置 LVS 标记调度规则
3.RS 基础 DR 前置配置(lo 绑定 VIP+ARP 抑制)
所有 RS 执行:
4.RS 搭建简易测试页面
rs1
rs2
测试
七、lvs的会话粘滞解决方案
问题
用户登录、购物车、Session 存在某台 RS 上。如果下次被调度到别的 RS,就会掉线、重新登录。
四类解决方案
方案一:LVS 持久连接 Persistence(生产中小型集群首选,四层原生)
原理
调度器维护会话持久表,指定超时时间内,同一客户端源 IP 固定调度至同一 RS。
测试
客户端访问
方案二:源地址哈希 SH 调度
原理
基于客户端 IP 哈希计算,永久绑定固定 RS,无超时限制。
方案三:Redis 集中会话共享(大型集群根治方案)
原理
所有后端 RS 不再本地存储 Session,统一将会话存入公共 Redis,无论调度至哪台 RS 均可读取会话,彻底摆脱 LVS 会话粘连依赖。
方案四:Cookie 定向绑定(七层 Nginx 方案)
原理
Nginx 在 Cookie 中写入后端服务器标识,下次请求根据 Cookie 定向转发,多用于七层负载均衡场景。