LVS 负载均衡集群

发布时间:2026/7/30 11:57:11
LVS 负载均衡集群 一、集群和分布式1、什么是集群集群是为了解决某个特定问题将多台计算机组合起来形成的单个系统2、集群的类型LB:LoadBalancing负载均衡由多个主机组成每个主机只承担一部分访问HAHigh Availability 高可用消除单点故障保障服务持续运行HPCHigh Performance Computing 高性能计算大规模并行运算3、分布式将一个完整业务拆分为多个子服务各服务器功能不同所有节点组合才构成完整业务单一子节点故障会导致对应功能失效。分布式存储Ceph、GlusterFS、FastDFS分布式计算Hadoop、Spark分布式应用微服务架构二、LVS的作用LVSLinux Virtual Server即Linux虚拟服务器是由中国开发者章文嵩博士发起的一个开源项目现已成为Linux内核的一部分。LVS的核心作用是作为一个四层传输层负载均衡器。它工作于Linux内核中通过修改数据包的目标地址或端口将客户端的请求按照特定的算法分发给后端的真实服务器Real Server从而实现一个高可用、高性能的虚拟服务器集群。LVS的四个优点1.高性能直接工作在内核空间处理网络包的效率极高远超Nginx等七层代理。2.高可靠可与Keepalived结合实现调度器自身的高可用。3.低成本使用廉价的普通服务器即可构建强大的集群系统。4.透明性对客户端而言它访问的只是一个单一的IP地址VIP后端复杂集群是透明的。三、LVS的四种工作模式及原理1. NAT模式网络地址转换原理类似DNAT技术。调度器Director接收客户端请求根据算法选择一台Real Server将请求报文的目标IP和端口改为Real Server的IP和端口然后转发。Real Server处理完响应后将数据包返回给调度器调度器再将源IP修改为VIP返回给客户端。特点所有请求和响应都经过调度器调度器易成瓶颈。RS可以使用私有IP更安全。支持端口映射。2. DR模式直接路由原理这是最常用的模式。调度器接收请求后不修改IP首部只通过修改数据帧的目标MAC地址将请求在局域网内直接转发给选中的Real Server。Real Server处理完请求后直接将响应发送给客户端不再经过调度器。关键点Real Server必须在回环接口lo上配置VIP并抑制ARP响应避免与调度器冲突。特点性能极高请求报文经由调度器响应报文直接返回客户端。但要求调度器和RS必须在同一物理网段。3. TUN模式IP隧道原理调度器接收请求后将原始IP报文封装在一个新的IP报文中新报文的源IP是DIP目标IP是RIP。Real Server收到后解封装处理请求并将响应直接发送给客户端。特点解决了DR模式要求同网段的限制RS可以部署在不同的地理位置。但需要RS支持IP隧道协议配置稍复杂。4. FULLNAT模式原理作为NAT模式的增强版它同时转换了源IP和目的IP。调度器将请求的源IPCIP转换为自己的本地IPDIP目标IPVIP转换为RIP。RS的响应包回到调度器调度器再做相反的转换。特点解决了NAT模式要求RS网关指向调度器的限制使得LVS和RS可以跨网段部署便于大规模水平扩展。但性能比NAT模式稍有下降。四、LVS的13种调度算法1.LVS调度算法类型静态方法仅根据算法本身进行调度不考虑RS的负载情况动态方法主要根据每RS当前的负载状态及调度算法进行调度Overheadvalue较小的RS将被调度2.LVS静态调度算法RR 轮询请求均匀循环分配所有 RS 性能一致时使用WRR 加权轮询配置权重高性能服务器分配更多请求SH 源 IP 哈希同一客户端 IP 永久调度同一 RS原生会话保持DH 目标 IP 哈希同一目标 IP 固定 RS缓存代理场景提升命中率3.LVS动态调度算法LC 最小连接无权重仅看连接数WLC 加权最小连接官方默认算法适配混合配置服务器SED 最短预期延迟(活跃连接1)/权重优先空闲高权重节点NQ 永不排队有空闲节点直接分配无空闲退化为 SEDLBLC 本地最少连接目标 IP 优先原节点负载过高则分流LBLCR 带复制 LBLC缓存集群专用均衡目标 IP 负载FO 加权故障转移按权重遍历分配给第一个未过载节点灰度发布使用OVF 溢出调度高权重服务器连接达阈值后新请求溢出至次一级节点BLLC 平衡本地最少连接优化 LBLC 负载倾斜问题三、LVS部署的相关命令首先部署环境安装软件包-A#添加-E#修改-t#tcp服务-u#udp服务-s#指定调度算法默认为WLC-p#设置持久连接超时持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver-f#firewall mask火墙标记是一个数字对于相关命令的使用管理集群中RealServer的增删改查增加修改删除四、lvs的多端口轮询问题解决方案问题描述以http和https为例当我们在RS中同时开放80和443端口那么默认控制是分开轮询的这样我们就出现了一个轮询错乱的问题当我第一次访问80被轮询到RS1后下次访问443仍然可能会被轮询到RS1上解决方案防火墙标记解决轮询调度问题通过Linux的iptables工具在mangle表中为需要“捆绑”的端口如80和443打上相同的防火墙标记。然后LVS不再基于端口号而是基于这个防火墙标记FWM来创建虚拟服务。这样所有带着相同标记的请求无论来自哪个端口都会被LVS当作同一个服务来处理并始终调度到同一台后端服务器。配置步骤打标记给80和443端口打上6666的标记设定调度规则五、lvs的会话粘滞解决方案问题描述在无状态的负载均衡环境下一个用户连续的操作如果被分发到了不同的服务器会导致其会话状态丢失。解决这个问题的手段称为“会话粘滞”或“持久连接”。解决方案LVS提供了三种主要的解决途径方案一源地址哈希SH算法原理使用-s sh算法LVS会根据客户端的源IP地址计算哈希值将来自同一源IP的所有请求都定向到同一台Real Server。优点实现简单。缺点如果大量用户来自同一个NAT网关即源IP相同会导致负载严重不均。方案二LVS持久连接Persistent Connection原理在创建虚拟服务时添加-p参数并指定超时时间。在超时时间内来自同一个客户端的任何新连接即使源端口变化都会被定向到之前选择的同一台Real Server上。优点可以很好地处理HTTP和HTTPS两种端口的问题效果比SH算法更好。方案三防火墙标记FWMARK结合持久连接这是解决多端口轮询问题与会话粘滞需求的终极方案。它先通过防火墙标记将多个端口“捆绑”然后在此标记上同时应用持久连接策略。通过这种方式无论用户访问的是HTTP还是HTTPS在设定的超时时间内他的所有请求都会稳定地落在同一台Real Server上完美解决了会话保持和多端口轮询的难题。六、总结LVS作为Linux内核级的高性能负载均衡器是现代高并发、高可用架构的重要基石。理解其集群分类、四种工作模式的原理与优劣、十三种调度算法的应用场景并掌握解决多端口轮询和会话粘滞问题的实战方法是构建稳定、高效的网络服务集群的必备技能。

相关新闻

最新新闻

日新闻

周新闻

月新闻