发布时间:2026/7/31 1:56:41
20260730-lvs 一、什么是集群集群把多台独立服务器节点通过网络连接起来组成一个整体对外提供服务。 外部客户端看起来如同一台高性能服务器内部多机协同实现负载分担、故障冗余、算力扩容。二、集群主流分类分类 1按照用途1. 负载均衡集群 LB作用分发用户请求到后端多个节点特点所有节点同时对外提供服务典型产品Nginx、LVS、F5、HAProxy场景Web 网站、接口服务、网关2. 高可用集群 HA俗称主备集群作用防止单点故障故障自动切换模式Active/Passive主备也有双活 Active/Active典型软件Keepalived、PacemakerCorosync场景数据库主备、存储、核心业务系统3. 高性能计算集群 HPC作用多节点并行运算提升算力特点任务拆分给多个节点同时计算最后汇总结果场景气象模拟、仿真建模、大数据科学计算4. 分布式存储集群作用多节点共同组成统一存储池数据分片多副本典型Ceph、MinIO、GlusterFS特点数据分散存放支持扩容、数据自愈三、LVS 作用核心定义LVS 是Linux 内核层面的四层负载均衡软件工作在传输层 TCP/UDP由章文嵩开发集成在 Linux 内核性能极高。核心作用将客户端请求分发到后端多台真实服务器RS实现负载均衡集群。关键要点层级四层负载均衡基于 IP 端口转发只处理数据包的 IP、端口不解析 HTTP 协议。 对比Nginx 是七层负载均衡可以解析 http、host、url、cookie。角色划分VSDirector 调度器LVS 服务器RSReal Server 后端真实业务服务器三大核心功能① 请求调度根据调度算法把用户流量分配给不同后端 RS ② 集群屏蔽对外只暴露一个虚拟 IPVIP用户只访问 VIP感知不到后端多台服务器 ③ 构建 LB 集群横向扩展后端服务器提升并发承载能力。四、LVS 四种工作模式NAT 模式网络地址转换请求、响应流量都经过 Director后端 RS 网关指向 VS。 缺点Director 容易成为瓶颈。DR 模式直接路由生产最常用请求经过 VS响应数据包直接由 RS 返回客户端不经过调度器性能最高限制VS 和 RS 必须在同一个局域网。TUN 模式IP 隧道跨网段部署VS 封装 IP 报文发给 RSRS 直接回包支持跨机房。FULLNAT同时转换源 IP 和目标 IP可以跨网段内核新版本支持。常用调度算法静态轮询 rr、加权轮询 wrr、源地址哈希 sh 动态最少连接 lc、加权最少连接 wlc生产默认五、LVS 四种工作模式原理详解LVS 有四种工作模式通过ipvsadm的不同参数区分-mNAT、-gDR、-iTUN、FullNAT。5.1 NAT 模式网络地址转换流程说明请求阶段客户端发请求到 VIPVS 修改数据包的目标 IP为后端 RS 的 RIP转发给 RS响应阶段RS 处理完后响应报文发回 VS因为 RS 网关指向 VSVS 修改源 IP为 VIP返回给客户端关键要求RS 的默认网关必须指向 VS 的内网 IPNAT 模式完整部署步骤环境准备VS双网卡外网 VIP172.25.254.100内网 DIP192.168.0.100RS1192.168.0.10网关指向192.168.0.100RS2192.168.0.20网关指向192.168.0.100步骤 1VS 开启内核转发bash# 开启 IP 转发NAT 模式必须echo net.ipv4.ip_forward1 /etc/sysctl.confsysctl -p步骤 2安装 ipvsadmbashdnf install ipvsadm.x86_64 -y步骤 3配置 LVS 规则bash# 清空旧规则ipvsadm -C# 创建虚拟服务指定 VIP:端口 调度算法ipvsadm -A -t 172.25.254.100:80 -s wrr# 添加后端 RS-m 指定 NAT 模式-w 设置权重ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m -w 1ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m -w 1# 查看规则ipvsadm -Ln步骤 4RS 配置网关bash# 设置默认网关为 VS 内网 IPnmcli connection modify eth0 ipv4.gateway 192.168.0.100nmcli connection reloadnmcli connection up eth0# 验证网关route -n步骤 5RS 部署 Web 服务bash# RS1 上执行dnf install httpd -ysystemctl enable --now httpdecho RS1 - 192.168.0.10 /var/www/html/index.html# RS2 上执行dnf install httpd -ysystemctl enable --now httpdecho RS2 - 192.168.0.20 /var/www/html/index.html步骤 6测试验证bash# 在 VS 上测试轮询效果for i in {1..10}; do curl 172.25.254.100; done步骤 7规则持久化bash# 保存规则到文件ipvsadm-save -n /etc/sysconfig/ipvsadm# 设置开机自启systemctl enable --now ipvsadm.service5.2 DR 模式直接路由参数-gDirect Route直接路由流程说明请求阶段VS 仅修改数据包的目标 MAC 地址为 RS 的 MAC三层 IP 不变源 IP 还是 CIP目标 IP 还是 VIP响应阶段RS 收到请求后发现目标 IP 是自己 lo 网卡上的 VIP直接处理然后直接回包给客户端响应报文不经过 VS关键要求VS 和 RS 必须在同一个局域网同一二层网络RS 的 lo 网卡上必须绑定 VIPRS 必须抑制 VIP 的 ARP 响应避免 IP 冲突DR 模式配置命令bash# VS 端添加 RS-g 指定 DR 模式ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10 -g -w 1ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20 -g -w 1# RS 端lo 网卡绑定 VIPifconfig lo:0 172.25.254.100 netmask 255.255.255.255 up# RS 端抑制 ARP 响应echo 1 /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 /proc/sys/net/ipv4/conf/lo/arp_announceecho 1 /proc/sys/net/ipv4/conf/all/arp_ignoreecho 2 /proc/sys/net/ipv4/conf/all/arp_announce5.3 TUN 模式IP 隧道流程说明请求阶段VS 在原始 IP 报文外层再封装一层 IP 隧道头外层源 IP 是 DIP目标 IP 是 RIP通过公网/跨网段发送给 RS响应阶段RS 收到后解封装外层隧道读取内层 VIP 请求处理后直接回包给客户端不经过 VS关键要求RS 内核必须支持ipip隧道模块RS 的 tunl0 网卡绑定 VIPTUN 模式配置命令bash# VS 端添加 RS-i 指定 TUN 模式ipvsadm -a -t 172.25.254.100:80 -r 192.168.1.10 -i -w 1# RS 端加载 ipip 模块modprobe ipip# RS 端tunl0 网卡绑定 VIPifconfig tunl0 172.25.254.100 netmask 255.255.255.255 up5.4 FULLNAT 模式工作原理FULLNAT 同时转换源 IP 和目标 IP请求方向CIP → VIP→ VS 转换为DIP → RIP响应方向RIP → DIP→ VS 转换为VIP → CIP六、LVS 13 种调度算法完整解析LVS 调度算法决定了流量如何分配到后端 RS分为静态算法和动态算法两大类。6.1 静态调度算法4 种静态算法不感知后端实时连接数按固定规则分配。算法全称说明适用场景rrRound Robin轮询请求依次平均分配到所有 RS后端性能相近的场景wrrWeighted Round Robin加权轮询按权重比例分配权重越高分到越多后端服务器性能不均的场景shSource Hash源地址哈希同一客户端 IP 固定分配到同一 RS需要会话保持但不想用持久化的场景dhDestination Hash目标地址哈希同一目标 IP 固定分配到同一 RS缓存集群、代理服务器场景6.2 动态调度算法9 种动态算法实时统计后端连接数和负载动态调整分配。算法全称说明适用场景lcLeast Connections最少连接新请求分给当前连接数最少的 RS后端性能相近连接时长差异大的场景wlcWeighted LC加权最少连接系统默认算法综合权重和连接数生产最常用后端性能不均的场景lblcLocality-Based LC基于局部性最少连接同一目标 IP 优先分配到同一 RSWeb Cache 缓存集群lblcrLocality-Based LC with Replication带复制的局部最少连接支持缓存节点间复制缓存集群提高缓存命中率sedShortest Expected Delay最短期望延迟计算单连接等待时间优先轻负载节点响应时间敏感的业务nqNever Queue永不排队有空闲服务器直接分配无空闲再走 sed避免请求排队追求低延迟foWeighted Failover加权故障转移主节点故障才切到备节点主备模式场景ovfOverflow溢出调度主节点满了才溢出到备节点峰值溢出场景lblcr_rLBLC with Replication (extended)扩展本地复制调度高级缓存场景七、LVS 多端口轮询问题解决方案防火墙标记 fwmark7.1 问题描述故障场景网站同时开放 80HTTP和 443HTTPS端口分别创建了两条 LVS 虚拟服务。用户访问 80 端口时被调度到 RS1登录后跳转到 443 端口结果被调度到 RS2导致会话丢失、购物车清空用户体验极差。7.2 根因分析不同端口属于独立的集群服务调度逻辑完全隔离无法保证同一用户的不同端口请求落到同一台 RS。7.3 解决方案防火墙标记 fwmark通过iptables给同一 VIP 下的所有业务端口打上相同的防火墙标记然后 LVS 基于标记创建统一的集群服务这样多个端口就共享同一套调度逻辑。7.4 完整配置步骤步骤 1iptables 打标记bash# 给 80 端口打标记 66iptables -t mangle -A PREROUTING -d 172.25.254.100 -p tcp --dport 80 -j MARK --set-mark 66# 给 443 端口打相同标记 66iptables -t mangle -A PREROUTING -d 172.25.254.100 -p tcp --dport 443 -j MARK --set-mark 66步骤 2基于标记创建 LVS 集群bash# 基于防火墙标记 66 创建集群-f 代替 -t 端口ipvsadm -A -f 66 -s wrr -p 3000步骤 3添加后端 RSbash# 向标记集群添加 RS无需指定端口ipvsadm -a -f 66 -r 192.168.0.10 -mipvsadm -a -f 66 -r 192.168.0.20 -m步骤 4验证查看bashipvsadm -Ln步骤 5删除标记集群bashipvsadm -D -f 667.5 原理总结客户端请求80/443端口|▼iptables mangle 表给数据包打上标记 66|▼LVS 基于标记 66 调度多端口共享同一套调度规则|▼同一用户的所有端口请求 → 同一台 RS八、LVS 会话粘滞解决方案持久连接 -p方案三PNMPP 标记持久生产最优方案特点fwmark 防火墙标记 -p持久化组合一次性解决多端口统一调度 会话粘滞双重问题。bash# 打标记iptables -t mangle -A PREROUTING -d 172.25.254.100 -p tcp --dport 80 -j MARK --set-mark 66iptables -t mangle -A PREROUTING -d 172.25.254.100 -p tcp --dport 443 -j MARK --set-mark 66# 标记集群 持久化ipvsadm -A -f 66 -s wrr -p 3000

相关新闻

2026/7/31 1:56:41

AI 已经能生成多页面应用,为什么还需要一套“产品生成系统”?

从一次生成,走向可追踪、可执行、可验证的完整产品生产线 关于这个系列的表达方式 过去介绍 Mihua Design 时,我们更常展示结果,并把复杂结构压缩成便于快速理解的概念。随着系统进入产品建模、生成执行和质量验证,过度简化也会…

2026/7/31 1:56:41

玄铁E906 RISC-V开发环境搭建与编译实战指南

1. 项目缘起:为什么是玄铁 E906?最近在 RISC-V 的圈子里,平头哥的玄铁 E906 处理器核热度一直不低。无论是做 IoT 终端、边缘计算盒子,还是想深入理解 RISC-V 微架构,E906 都是一个绕不开的经典选择。它定位在低功耗、…

2026/7/31 1:56:41

STM32 ADC多通道DMA采集:原理、配置与实战避坑指南

1. 项目概述:为什么ADCDMA是嵌入式数据采集的“黄金搭档”在嵌入式开发,特别是基于STM32这类MCU的项目里,数据采集是家常便饭。无论是读取传感器数据、监控电池电压,还是做音频信号处理,都离不开模数转换器&#xff08…

2026/7/31 3:11:45

DS1302/DS1307 RTC芯片不起振?时钟停止位与写保护位配置详解

1. 项目概述:当你的实时时钟芯片“罢工”时搞嵌入式开发的朋友,尤其是经常和单片机、树莓派这类板子打交道的,对DS1302和DS1307这两款经典的实时时钟(RTC)芯片肯定不会陌生。它们价格便宜、接口简单(I2C或三…

2026/7/31 3:11:45

防火墙规则与 nmcli 命令使用指南

防火墙规则与 nmcli 命令使用指南1. 防火墙(firewall-cmd)常用命令firewall-cmd 是 Linux 系统中管理 firewalld 防火墙的主要命令行工具。1.1 服务管理添加服务:firewall-cmd --add-service 服务名移除服务:firewall-cmd --remov…

2026/7/31 3:11:45

从移动开发到AI Agent:程序员技术转型实战指南

1. 移动互联网时代的程序员生存法则回顾2007年iPhone的发布开启了移动互联网的黄金十年,那会儿我刚入行做Android开发。记得最早用Eclipse写XML布局时,一个简单的ListView要折腾半天适配不同屏幕尺寸。后来Android Studio和ConstraintLayout的出现&#…

2026/7/31 3:11:45

VMware Workstation Pro 17 保姆级教程:从零创建与优化 Windows 11 虚拟机

1. 项目概述:为什么需要一台Windows 11虚拟机?如果你是一名开发者、测试工程师,或者只是对新技术充满好奇的电脑爱好者,那么拥有一台Windows 11虚拟机几乎是必备技能。它就像在你的电脑里开辟了一个独立的、可随时重置的“数字沙盒…

2026/7/31 3:11:45

Mr. English慢速听力训练:科学提升小学生英语听力能力

你是不是也遇到过这样的情况:孩子学了好几年英语,单词背了不少,语法题也能做对,但一到听英语对话或看英文视频时,就跟不上节奏了?这其实不是孩子不够努力,而是传统的英语教学往往忽略了听力训练…

2026/7/29 22:32:30

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

2026/7/31 0:01:11

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:01:11

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:01:11

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:38:56

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…