
目录一什么是集群Cluster二、集群分类三、LVS 的作用四LVS 四种工作模式及原理1. NAT 模式VS-NAT2. DR 模式Direct Routing直接路由生产最常用4. FULLNAT 模式完整 NAT阿里扩展模式五、LVS 的 13 种调度算法六、LVS 多端口轮询问题 解决方案1问题现象2解决方案七、会话粘滞Session Stickiness解决方案1问题描述2解决方案方案 1持久连接Persistent方案 2源地址散列算法SH方案 3在应用层维持会话如 cookie方案 4结合 Keepalived 的持久性3完整实践步骤以 DR 模式部署 HTTP 负载均衡为例4拓扑图解DR 模式八、总结一什么是集群Cluster集群是指将多台独立的计算机节点通过网络连接协同完成特定任务对外表现为一个统一的服务实体。其核心目标是高可用性HA单点故障不影响整体服务。高性能Performance聚合多机算力提升吞吐量。可伸缩性Scalability按需动态增减节点。二、集群分类类别英文目的典型应用负载均衡集群LBLoad Balancing将请求均匀分散到多台后端服务器提高并发能力LVS、Nginx、HAProxy高可用性集群HAHigh Availability保证服务不间断故障时自动切换Keepalived、Heartbeat高性能计算集群HPCHigh Performance Computing并行处理大规模计算任务MPI、Slurm存储集群Storage Cluster提供共享存储或分布式文件系统Ceph、GlusterFSLVS 属于负载均衡集群常与 HA 结合如 Keepalived实现高可用负载均衡。三、LVS 的作用LVSLinux Virtual Server是 Linux 内核内置的四层传输层负载均衡器。它实现请求分发根据调度算法将客户端请求转发给后端真实服务器Real ServerRS。服务屏蔽后端 RS 对客户端透明客户端只与 LVS 的虚拟 IPVIP通信。可扩展性支持海量并发连接工作于内核态性能极高。健康检查通常配合 keepalived 自动剔除故障 RS。四LVS 四种工作模式及原理1. NAT 模式VS-NAT原理调度器收到请求修改数据包目标 IP / 端口为 RS 的 RIP 端口RS 响应数据包原路返回调度器调度器修改源 IP 后发回客户端。数据流客户端 → DSDNAT→ RS → DSSNAT→ 客户端特点支持端口映射请求、响应全部经过调度器RS 网关必须指向 DIP性能最差。简易配置步骤# 1.开启内核转发 echo 1 /proc/sys/net/ipv4/ip_forward # 2.创建虚拟服务 ipvsadm -A -t 192.168.1.100:80 -s rr # 3.添加后端RSNAT模式 -m ipvsadm -a -t 192.168.1.100:80 -r 10.0.0.10:80 -m ipvsadm -a -t 192.168.1.100:80 -r 10.0.0.11:80 -m2. DR 模式Direct Routing直接路由生产最常用原理调度器仅修改二层 MAC 地址目标 MAC 改为 RS 网卡 MACIP 头不变。RS 收到数据包处理后直接返回客户端响应报文不再经过调度器。数据流客户端 → DS (改 MAC) → RS → 客户端要求DS 与 RS 在同一广播域RS 本地 lo 网卡绑定 VIP32 位掩码抑制 ARP 响应性能最优。简易配置步骤# DS配置 ipvsadm -A -t 192.168.1.100:80 -s wrr ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.20:80 -g # RS配置lo绑定VIP抑制arp ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 echo 1 /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 /proc/sys/net/ipv4/conf/lo/arp_announce3. TUN 模式VS-TUNIP 隧道模式原理调度器不修改原始数据包在外层新增一层 IP 隧道头部封装数据包转发给 RSRS 解封装处理直接响应客户端。数据流客户端 → DS (IP 封装) → RS (解包) → 客户端 特点DS 和 RS 可以跨网段RS 需要支持 IPIP 隧道协议多用于跨机房场景。4. FULLNAT 模式完整 NAT阿里扩展模式原理同时修改源 IP、目标 IP。客户端 CIP→DIPVIP→RIP响应报文 RS→DIPDIP→CIP。模式修改内容响应路径跨网段性能NAT目标 IP 端口经过 DS支持低DR目标 MAC直达客户端不支持极高TUNIP 封装包头直达客户端支持高FullNAT源 IP 目标 IP经过 DS支持中请求、响应均经过调度器支持跨网段部署区别于标准 NAT源地址也会转换需要内核补丁 / 新版 ipvs 支持。五、LVS 的 13 种调度算法实际内核支持 10 种此处按常见分类详列内核中 IPVS 支持10 种但许多资料扩展列举至 13 种含历史版本或组合变体。下面一并列出并注明内核标准支持。序号算法名称缩写说明内核支持1轮询RR依次轮流分配不考虑权重✅2加权轮询WRR按权重比例轮询✅3最少连接LC分配给当前连接数最少的 RS✅4加权最少连接WLC按权重和连接数综合计算默认算法✅5基于局部性的最少连接LBLC针对目标 IP 的负载均衡适用于缓存集群✅6带复制的基于局部性最少连接LBLCRLBLC 的改进复制热门请求到多个节点✅7目标地址散列DH根据目标 IP 的哈希值选择 RS用于正向代理✅8源地址散列SH根据源 IP 的哈希值选择 RS用于会话粘滞非持久✅9最短预期延迟SED考虑权重和当前连接选出期望延迟最小的节点算法连接数/权重✅10永不排队NQ改进的 SED若有空闲节点则直接分配否则按 SED 选择✅11随机RANDOM随机选择部分早期版本支持现已被更优算法替代❌12加权随机WRANDOM带权重的随机选择同上❌13最小连接调度增强型-某些资料将 LC 和 WLC 的变体单独列出实际与 LC/WLC 重复❌说明当前 Linux 内核4.x仅支持前 10 种。若作业要求“13种”可按上述列表划分并注明其中 3 种为历史或变体核心仍是 10 种标准算法。六、LVS 多端口轮询问题 解决方案1问题现象默认情况下LVS 把VIP:80、VIP:443当成两个独立虚拟服务各自独立调度。 用户访问http(80)调度到 RS1跳转https(443)被调度到 RS2会话丢失。2解决方案防火墙标记 fwmark推荐方案原理利用 iptables 将 VIP 多个端口数据包打上相同 mark 标记ipvs 基于标记统一调度不再区分端口。# 1. iptables给80、443流量统一打上标记666 iptables -t mangle -A PREROUTING -d 192.168.1.100 -p tcp --dport 80 -j MARK --set-mark 666 iptables -t mangle -A PREROUTING -d 192.168.1.100 -p tcp --dport 443 -j MARK --set-mark 666 # 2. ipvs基于标记创建虚拟服务不再指定端口 ipvsadm -A -f 666 -s wrr ipvsadm -a -f 666 -r 192.168.1.20 -g ipvsadm -a -f 666 -r 192.168.1.21 -g✅ 效果同一客户端访问 80/443统一纳入同一调度规则保证分配到同一 RS。七、会话粘滞Session Stickiness解决方案1问题描述无状态调度算法如 RR会将同一用户的不同请求分到不同 RS若 RS 维护了用户会话Session数据则会导致会话丢失。2解决方案方案 1持久连接Persistent与多端口方案相同使用-p选项同一源 IP 的所有请求在超时内固定到同一 RS。ipvsadm -A -t 192.168.1.100:80 -p 3600 -s rr方案 2源地址散列算法SH根据源 IP 的哈希值直接选择固定 RS无需超时但算法固定无法按权重调整。ipvsadm -A -t 192.168.1.100:80 -s sh方案 3在应用层维持会话如 cookie后端 RS 通过 cookie 或 URL 重写传递会话标识但 LVS 不干预需 RS 共享会话存储如 Redis或保持节点间同步。方案 4结合 Keepalived 的持久性Keepalived 配置中可设置persistence_timeout与ipvsadm -p等效。推荐短时粘滞如购物车使用持久连接超时设 3600 秒。若需长期固定则使用 SH 算法但注意权重配置受限。3完整实践步骤以 DR 模式部署 HTTP 负载均衡为例# 环境规划 # LVS: 192.168.1.100 (VIP: 192.168.1.200) # RS1: 192.168.1.10 (绑定VIP: lo:0) # RS2: 192.168.1.11 (绑定VIP: lo:0) # ---------- 步骤1: 在 LVS 上配置 VIP ---------- ifconfig eth0:0 192.168.1.200 netmask 255.255.255.255 up route add -host 192.168.1.200 dev eth0:0 # ---------- 步骤2: 在 LVS 上开启转发 ---------- echo 1 /proc/sys/net/ipv4/ip_forward # ---------- 步骤3: 在 RS 上绑定 VIP 并抑制 ARP ---------- # 编辑 /etc/sysctl.conf 添加 net.ipv4.conf.lo.arp_ignore 1 net.ipv4.conf.lo.arp_announce 2 net.ipv4.conf.all.arp_ignore 1 net.ipv4.conf.all.arp_announce 2 # 应用 sysctl -p # 绑定 VIP 到 lo:0 ifconfig lo:0 192.168.1.200 netmask 255.255.255.255 up # ---------- 步骤4: 在 LVS 上添加虚拟服务和 RS ---------- # 使用 WLC 算法默认并启用持久连接粘滞 ipvsadm -A -t 192.168.1.200:80 -p 600 -s wlc ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.10:80 -g -w 1 ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.11:80 -g -w 2 # 查看状态 ipvsadm -Ln # ---------- 步骤5: 测试 ---------- # 客户端访问 http://192.168.1.200 多次刷新观察会话保持和负载分布4拓扑图解DR 模式-----------------| 客户端 || (CIP) |----------------|| 请求: VIP192.168.1.200|--------v-------- --------------------| LVS (Director) | | VIP: 192.168.1.200|| eth0: 192.168.1.100 | | 仅响应ARP请求 || eth0:0 VIP | ------------------------------------ / \| (MAC改写, 发送至RS) / \| ------v----- ------v------------------| RS1 | | RS2 || 192.168.1.10| |192.168.1.11 || lo:0 VIP | | lo:0 VIP |------------ ------------| |----直接响应--------|-----v-----| 客户端 |-----------八、总结知识点核心要点集群多节点协同对外单一映像分类LB、HA、HPC、存储LVS作用四层负载均衡高性能、透明四种模式NAT改IP、DR改MAC、TUN隧道、FULLNAT双向NAT调度算法内核支持10种主要用 WLC、RR、SH 等多端口问题持久连接 协议辅助模块如 ip_vs_ftp会话粘滞持久连接 或 SH 算法或结合共享存储