LVS负载均衡集群介绍

1、LVS简介

1.1 LVS基本介绍

  • LVS(Linux Virtual Server)是一个开源的负载均衡解决方案,它基于Linux平台,通过将多个服务器组成一个虚拟服务器集群,实现高效的流量分发和管理。LVS的核心功能是在网络的第四层(传输层)上进行智能的流量分配,从而提高网络吞吐量和系统可用性。

  • LVS项目由章文嵩博士在1998年发起,是中国最早出现的自由软件项目之一。它被集成到Linux内核中,利用内核模块实现IP层面的数据请求负载均衡调度。LVS能够使得终端用户通过外部负载均衡服务器访问后端的Web服务器,而用户感知到的是一个统一的服务,实际上请求被分配到了后端的多个服务器上。

1.2 LVS体系架构

1.2.1 物理层面的组成

  • 负载调度器(Load Balancer / Director Server)

    • 这是LVS体系结构的前端节点,对外表现为一个具有单一IP地址(VIP)的服务器。

    • 它的主要任务是接收客户端的请求,并根据预定的调度算法将这些请求分发到后端的真实服务器上。

  • 真实服务器池(Server Pool / Real Servers)

    • 由多台服务器组成,它们是实际执行客户端请求的处理工作负载的机器。

    • 这些服务器可以是Web服务器、数据库服务器、邮件服务器等,执行各种服务。

  • 共享存储(Shared Storage)

    • 为服务器池提供统一的存储空间,确保所有服务器提供相同的数据和服务。

    • 共享存储对于保持集群中数据的一致性至关重要。

1.2.2 软件层面的组成

  • IPVS(IP Virtual Server)

    • 工作在内核空间的一段代码,是LVS实现负载均衡的核心组件。

    • IPVS负责处理网络流量的分发,将请求根据调度规则转发给真实的服务器。

  • IPVSADM

    • 工作在用户空间的命令行工具,用于配置IPVS规则。

    • 它定义了集群服务、真实服务器以及调度策略等,并将这些规则传递给IPVS内核模块。

1.2.3 LVS企业架构示意图

1.2.4 LVS中的IP地址术语

IP类型缩写描述用途
虚拟IPVIP (Virtual IP)LVS集群对外提供服务的IP地址,客户端请求直接发送到此地址接收进入的请求并分发到后端真实服务器
调度器IPDIP (Director IP)LVS调度器用于与后端真实服务器通信的IP地址在NAT模式下,作为私网接口与真实服务器通信
真实服务器IPRIP (Real IP)后端真实服务器的IP地址,与LVS调度器通信接收来自LVS的请求并处理,然后直接或通过LVS发送响应

1.3 LVS的工作模式

1.3.1 LVS/NAT模式

  • 网络地址转换(NAT):在这种模式下,LVS充当一个路由器和NAT设备。客户端的原始请求到达LVS后,LVS会修改请求的数据包,将目标IP地址从VIP改为选定的真实服务器(RS)的IP地址(RIP),同时也会修改目标端口(如果使用端口映射)。然后,请求被发送到后端的RS。

  • 数据流向:RS处理请求并生成响应,响应包的源IP是RS的IP地址,目标IP是客户端的IP地址。当响应包返回到LVS时,LVS再次修改数据包,将源IP地址从RS的IP地址改为VIP,并将源端口改回客户端的端口,然后将响应转发给客户端。

  • 特点:NAT模式下,LVS处理所有的请求和响应,因此可能成为性能瓶颈。但它的优点是安全性较高,因为RS的IP地址不会被客户端直接看到。

1.3.2 LVS/DR模式(直接路由模式)

  • 直接路由(Direct Routing):在DR模式下,LVS仅修改请求数据包的目标MAC地址,使其直接发送到选定的RS,而不是通过LVS转发。这样,请求的IP地址保持不变,目标MAC地址改为RS的MAC地址。

  • 数据流向:RS处理请求后,响应包的源MAC和源IP是RS的地址和IP,目标MAC和目标IP是客户端的地址和IP,因此响应包直接发送给客户端,不再经过LVS。

  • 网络要求:由于MAC地址是针对特定网络段的,所以RS和LVS必须位于同一个物理网络段中。

1.3.3 LVS/TUN模式(隧道模式)

  • IP隧道(IP Tunneling):LVS为每个请求创建一个IP隧道,将原始的IP数据包封装在一个新的IP数据包内,新数据包的目标IP是RS的IP地址。

  • 数据流向:RS处理请求后,响应包的源IP是VIP,目标IP是客户端的IP。响应包通过RS的隧道接口直接发送给客户端,不经过LVS。

  • 网络要求:与DR模式类似,RS和LVS也必须位于同一个物理网络段中。

1.3.4 模式选择的考虑因素

  • 性能:DR和TUN模式因为响应流量不经过LVS,通常能提供比NAT模式更高的性能。

  • 安全性:NAT模式可以隐藏RS的IP地址,提供额外的安全性。

  • 网络结构:选择哪种模式也取决于网络的物理布局和拓扑结构

1.3.5 淘宝研发的LVS第四种工作模式

  • FULLNAT模式是淘宝基于传统LVS的NAT模式研发的一种新的负载均衡转发模式。这种模式在处理网络请求时,会同时修改请求数据包的源IP地址和目标IP地址,与标准的NAT模式相比,它提供了一些额外的优势:

特性/模式LVS/NAT模式LVS/DR模式LVS/TUN模式FULL NAT模式
IP地址修改修改目标IP修改MAC地址封装IP包源目IP都修改
网络要求任意网络同一局域网同一局域网任意网络
请求处理经过LVS经过LVS经过LVS经过LVS
响应处理经过LVS直接返回直接返回直接返回
安全性较高较低较低
性能受限高效高效高效
系统瓶颈LVS可能成为瓶颈无瓶颈无瓶颈无瓶颈
端口映射支持支持不支持不支持支持
操作系统要求任意任意Linux任意
网络负载较高较低较低较低
隐藏RS IP
  • LVS/NAT模式:传统的网络地址转换模式,安全性高,但请求和响应都经过LVS,可能成为瓶颈。

  • LVS/DR模式:直接路由模式,请求经过LVS,响应直接返回给客户端,效率高,要求LVS和RS在同一局域网。

  • LVS/TUN模式:IP隧道模式,通过封装IP包来转发请求,响应直接返回给客户端,要求LVS和RS在同一局域网。

  • FULL NAT模式:淘宝研发的模式,同时修改请求报文的源IP和目标IP,提高了安全性和性能,对网络环境适应性强。

1.4 LVS的十二种调度算法

调度算法名称缩写描述
轮询RR将请求按顺序轮流分发到每台服务器。
加权轮询WRR根据服务器权重将请求轮流分发,权重高的服务器接收更多请求。
源地址哈希SH来自同一IP地址的请求总是分发到同一台服务器。
目标地址哈希DH目标地址相同的请求总是分发到同一台服务器。
最少连接LC将请求分发到当前活跃连接数最少的服务器。
加权最少连接WLC考虑服务器权重的最少连接算法,权重高的服务器可以有更多连接。
最短预期延迟SED将请求分发到预期延迟(包括服务时间和队列延迟)最低的服务器。
永不排队NQ将请求均匀分配到服务器,如果服务器忙碌,则使用SED算法调度。
基于地域的最少连接LBLC根据服务器地理位置和负载状态进行调度,适用于Web缓存等应用。
带复制功能的基于地域的最少连接LBLCR解决LBLC算法中负载不均的问题,将请求复制到负载较轻的服务器。
加权故障转移FO在服务器过载时,选择未过载且权重最高的服务器进行调度。
超量连接OVF根据服务器权重和活动连接数进行调度,直到达到权重限制。
  • 加权故障转移(FO)和超量连接(OVF)是4.15版本中新增的调度算法,可能在一些LVS的较新版本中提供,但使用频率相对较低。

1.5 LVS与其他负载均衡解决方案对比

特性/方面LVSHAProxyNginx
工作层次网络第四层(传输层)网络第四层(传输层)和第七层(应用层)网络第四层(传输层)和第七层(应用层)
支持Web服务是,HTTP/HTTPS是,HTTP/HTTPS
性能高性能,适合大量并发高效,适合大量并发性能较好,但通常用于HTTP/HTTPS负载
CPU消耗较低较低相对较高
内存使用较低较低相对较高
稳定性高,适用于关键业务高,适用于关键业务稳定,但通常用于Web服务器
配置复杂度较复杂中等简单,易于上手
健康检查有限支持更复杂的健康检查支持端口检测和更简单的健康检查
扩展性通过Keepalived实现高可用通过多进程或多线程提升扩展性通过模块化提供扩展性
协议支持支持多种协议,如TCP/UDP/HTTP支持TCP和HTTP协议主要支持HTTP/HTTPS协议
应用场景适合大规模流量分发适合需要会话保持或七层处理的站点适合Web服务器和反向代理
开发社区活跃,但相对小众活跃,有广泛的社区支持非常活跃,有庞大的用户和开发者社区
多核支持通过内核模块支持多线程,较好地利用多核单线程,多进程模型
负载均衡算法轮询、加权轮询、最小连接等轮询、加权轮询、最少连接、哈希等轮询、加权轮询、最少连接、IP哈希等
商业支持开源,社区支持开源,社区支持开源,有商业版Nginx Plus
特点高性能,高稳定性,配置复杂灵活性好,功能全面功能丰富,易于配置,适用于Web应用
  • LVS主要工作在网络的第四层,它提供了高性能的负载均衡,尤其适合于流量巨大的场景,但它不支持直接作为Web服务器使用。

  • HAProxy同样可以工作在第四层和第七层,提供了丰富的健康检查和负载均衡策略,适用于需要复杂负载均衡策略的场景,并且可以作为Web服务器使用。

  • Nginx主要工作在第七层,除了作为负载均衡器外,它还可以作为Web服务器、反向代理服务器、静态内容服务器等多种角色使用。

  • 29
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值