暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

负载均衡LVS知识学习

watson 2024-08-27
130

1. 负载均衡基础

负载均衡技术通过将请求分配到多台服务器,提升系统处理能力和可靠性。它分为硬件负载均衡和软件负载均衡两种类型。

常见的负载均衡算法包括轮询、加权轮询、最少连接和源地址哈希。

(另外也有DNS负载均衡或者说智能DNS,以后再展开)


为什么需要负载均衡?

负载均衡入门


2. LVS概览

LVS,即Linux Virtual Server,由章文嵩博士于1998年创建,是一个开源的负载均衡解决方案。它通过分发网络流量到多台后端服务器,提高系统的处理能力和可用性。

LVS的架构

  • Director:接收客户端请求,转发到Real Server。

  • Real Server:处理客户端请求的服务器。

  • Client:发起请求的用户或应用程序。

LVS的工作原理基于内核中的IPVS模块,根据预设算法转发请求。

为什么需要LVS(Linux Virtual Server):

  1. 提高吞吐量:

    • LVS允许通过添加后端服务器来线性增加吞吐量,而替换为更高端的单一服务器成本会显著增加。

    • 这种增加后端服务器的做法称为横向扩展(Scale Out),与纵向扩展(Scale Up)相比,成本效益更高。

  2. 实现冗余:

    • 管理员可以将后端服务器从LVS集群中移除进行升级,完成后再将其重新加入集群,这一过程不会影响客户端的使用。

  3. 适应性:

    • 如果评估显示吞吐量需要逐步增加或应对事件性的流量突增,增加后端服务器可以在不影响用户体验的情况下进行。


3. LVS的组成部分

LVS由ipvsadm和ipvs两部分组成:

  • ipvsadm:用户空间管理工具,用于配置和管理LVS。

  • ipvs:内核空间模块,负责请求的转发。

4. LVS的工作模式

LVS提供三种工作模式:NAT、DR和TUN,每种模式都有其特点和适用场景。

4.1 NAT模式

图片

NAT模式工作原理概括:

  1. 客户端请求:客户端将请求发送至负载均衡器,源地址为CIP,目标地址为VIP。

  2. 负载均衡器处理:负载均衡器根据规则修改请求报文的目标地址为RS的RIP,并根据算法将报文转发。

  3. RS处理:RS接收到报文,发现目标地址为自己,响应该请求。

  4. 响应返回:RS将响应报文发送给LVS,LVS修改源地址为自身地址后转发给客户端。

  5. 特殊配置:RS的网关必须指向LVS,确保响应能送达客户端。

配置要点:

  • 网关配置:RS的网关必须设置为LVS的内网地址。

  • IP配置:LB配置一个公网IP地址,RS使用内网IP。

  • 端口转换:支持IP地址和端口的转换,允许请求端口与RS端口不一致。

特点:

  • 地址改写:请求和响应报文都需要通过LB进行地址改写。

  • 瓶颈问题:高访问量时,LB可能成为瓶颈,限制了节点数量(一般10-20台)。

优点:

  • 操作系统兼容性:集群中的物理服务器可以使用任何支持TCP/IP的操作系统,只有LB需要合法IP。

缺点:

  • 扩展性限制:当节点数量增多时,LB成为系统瓶颈,影响性能。

适用场景建议:

  • NAT模式适用于节点数量较少的场景。当节点数量增多时,考虑使用其他模式或技术以避免瓶颈问题。



4.2 DR模式

  • DR模式工作原理概括:

  • 客户端请求:客户端将请求发送至前端负载均衡器,源地址为客户端IP(CIP),目标地址为虚拟IP(VIP)。

  • 负载均衡器处理:负载均衡器接收请求,检查规则后,将请求报文的源MAC地址改为自己的数据接口IP(DIP)的MAC地址,目标MAC地址改为后端服务器(RS)的MAC地址(RIP),然后将报文转发给RS。

  • RS处理:RS接收到请求后,处理请求并将响应报文通过本地回环接口(lo接口)发送给客户端,不经过负载均衡器。

  • 特殊配置:需要设置lo接口的VIP不响应局域网内的ARP请求,以避免IP冲突。

  • 配置要点:

  • MAC地址改写:负载均衡器通过改写数据包的MAC地址来实现请求的转发。

  • 响应效率:响应报文直接从RS发送至客户端,提高了并发访问的效率。

  • 局域网限制:所有RS节点和负载均衡器必须位于同一局域网内。

  • VIP绑定与ARP抑制:RS需要在lo接口上绑定VIP地址,并配置ARP抑制。

  • 网关配置:RS的默认网关应配置为上级路由的网关,而非负载均衡器。

  • 端口使用:由于不能改写目标端口,RS必须使用与VIP相同的端口提供服务。

  • IP使用:对外业务使用公网IP,内部服务使用内网IP。

  • 优点:

  • 高效性:与TUN模式相似,负载均衡器仅分发请求,响应包通过独立路由返回,提高了效率。

  • 适用性:可以使用大多数操作系统作为物理服务器,不依赖于隧道结构。

  • 缺点:

  • 配置复杂性:相比于使用haproxy/nginx等,DR模式配置更为复杂。

  • 局域网限制:所有RS节点和负载均衡器必须位于同一局域网内,限制了部署的灵活性。

  • 适用场景建议:

  • 对于日访问量1000-2000万PV或并发请求1万以下的公司,可以考虑使用haproxy/nginx作为替代方案。


4.3 TUN模式

TUNNEL模式工作原理概括:

  1. 客户端请求:客户端将请求发送至前端负载均衡器,源地址为CIP,目标地址为VIP。

  2. 负载均衡器处理:负载均衡器接收到请求后,根据规则在请求报文首部封装一层新的IP报文,源地址改为DIP,目标地址改为RIP,然后将封装后的包发送给RS。

  3. RS处理:RS收到请求报文后,拆开外层封装,识别内层IP首部的目标地址为自己的VIP,处理请求后,通过lo接口将响应报文直接发送给客户端。

  4. 特殊配置:lo接口的VIP不能在公网上出现,避免IP冲突。

配置要点:

  • VIP绑定:所有RS机器上必须绑定VIP的IP地址。

  • 通信方式:TUNNEL模式允许VIP到RS的包通过隧道进行通信,不受内网或外网限制。

  • 直接响应:RS将响应包直接发送给客户端,不经过负载均衡器。

  • 运维难度:由于使用隧道模式,运维相对复杂,一般不推荐使用。

优点:

  • 减少瓶颈:负载均衡器只负责分发请求,RS直接响应客户端,减少了负载均衡器的数据流量,提高了处理能力。

  • 扩展性:可以为多个RS进行分发,支持不同地域的分发。

缺点:

  • IP合法性:RS节点需要合法的IP地址。

  • 系统支持:需要服务器支持"IP Tunneling"协议,可能限制在部分Linux系统上。

适用场景建议:

  • 由于运维难度和系统支持限制,TUNNEL模式适用于特定场景,一般推荐使用其他负载均衡模式。

  • 工作原理:通过IP隧道转发请求。

  • 优点:高性能,支持分布式集群。

  • 缺点:配置复杂,需要IP隧道协议支持。


    三种工作模式对比

    工作模式VS/NATVS/TUNVS/DR
    Real server(节点服务器Config dr gwTunnelingNon-arp device/tie vip
    Server NetworkPrivateLAN/WANLAN
    Server number(节点数量)Low 10-20High 100High 100
    Real server gatewayLoad balanceOwn routerOwn router
    优点地址和端口转换Wan环境加密数据性能最高
    缺点效率低需要隧道支持不能跨域LAN


    LVS调度算法

    IPVS在内核中的连接调度算法已经实现了以下八种类型:

    1. 轮询调度(Round-Robin Scheduling)

      • 依次将请求分配给后端服务器。

    2. 加权轮询调度(Weighted Round-Robin Scheduling)

      • 根据权重将请求分配给后端服务器。

    3. 最小连接调度(Least-Connection Scheduling)

      • 将请求分配给连接数最少的后端服务器。

    4. 加权最小连接调度(Weighted Least-Connection Scheduling)

      • 根据权重和连接数分配请求。

    5. 基于局部性的最少链接(Locality-Based Least Connections Scheduling)

      • 考虑连接局部性,将请求分配给连接数最少的服务器。

    6. 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)

      • 在考虑连接局部性的基础上,增加请求的复制以提高效率。

    7. 目的地址散列调度(Destination Hashing Scheduling)

      • 根据目标地址的散列值分配请求。

    8. 源地址散列调度(Source Hashing Scheduling)

      • 根据源地址的散列值分配请求。

    调度算法分类:

    • 固定调度算法:

      • rr(轮询调度)

      • wrr(加权轮询调度)

      • dh(目标地址散列调度)

      • sh(源地址散列调度)

    • 动态调度算法:

      • lc(最小连接调度)

      • wlc(加权最小连接调度)

      • lblc(基于局部性的最少链接)

      • lblcr(带复制的基于局部性最少链接)


    一般应用场景常用调度算法
    一般的网络服务,如 http,mail,mysql轮询、加权最小连接、加权轮询
    防火墙集群源地址散列调度SH和目标地址散列调度DH
    web cache和DB cache局部最小、带复制的局部最小
    「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
    关注作者
    【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论