• LVS四层负载均衡架构详解


    前言

    LVS本身负载均衡为了在高访问中达到一个高可用以及高可靠

    对于负载均衡有四层和七层

    1. 前沿知识

    LVS(Linux Virtual Server):Linux虚拟服务器,一个虚拟的服务器集群系统,可以在UNIX平台下实现负载均衡的功能

    对于负载均衡的功能:

    • 可用于访问高访问量的业务逻辑
    • 扩展应用程序(云服务器的实例可弹性扩容缩容)
    • 消除个别服务器故障的影响(对于个别实例故障,会自动屏蔽,分发的时候只分发给正常的服务器),实时屏蔽异常服务器来提高系统可用性
    • 高可用容灾(主分区故障,可在短时间内切换到备用分区。主分区修复之后可切回)
    • 跨区域容灾(不同区域发生故障,暂停对该区域访问。上层利用云解析做DNS解析到不同区域的服务器中)

    LVS的应用场景:

    • 海量数据的自动分发、抵御(例如音视频场景)等
    • 动态静态数据的分发(动态数据过大可通过负载均衡,静态数据可用CDN分发)
    • 多层次多区域分发(使用负载均衡对访问流量或者区域进行分发)

    LVS的基本术语:

    名称缩写说明
    虚拟IP地址(Virtual IP Address)VIPDirector用客户端计算机提供服务的ip地址
    真实IP地址(Real Server IP Address)RIP集群节点下使用的真实IP地址
    DirectorIP地址DIP用于连接内外网络的IP地址,物理网卡上的IP地址。负载均衡IP
    客户主机IP地址(Client IP Address)CIP请求服务端的IP地址,改地址用于发送给集群请求的源IP地址

    主要的实现过程:
    IPVS集群服务(IP加端口)定义为后端服务发送给后端服务器

    1. 用户通过CIP(客户端的请求ip地址)
    2. Director IP层中生成一个虚拟的IP地址(此为VIP,通过这个虚拟IP地址到达负载均衡器)
    3. 负载均衡器通过服务节点 响应 用户的请求数据(此为真实IP地址)

    配置LVS的时候,通过Keepalived软件直接管理ipvs,使用Ipvs的管理工具管理Ipvsadm

    • 真正实现LVS的调度工具主要在Linux中
    • LVS自带IPVS管理工具Ipvsadm
    • Keepalived实现管理工具IPVS以及负载均衡的高可用
    • Red Hat工具piranha web管理工具实现调度的工具IPVS

    2. 工作模式

    LAN下多采用DR模式,WAN下可采用TUN(已被haproxy、nginx、dns取代)

    LVS该集群下主要有4种工作模式:

    工作模式说明
    NAT(Network Address Translation)IP负载均衡技术通过网络地址转换(NAT)将一组服务器构成一个高可用高性能的虚拟服务器。
    TUN(Tunneling)隧道实现虚拟服务器
    DR(Direct Routing)直接路由实现虚拟服务器
    FULLNAT(Full Network Address Translation)完全NAT

    NAT模式特性(调度器LB重写请求报文中的目标地址,根据调度,发送给真实服务器地址,之后返回调度器的原地址也被重写在返回给客户)

    • 请求的报文(DNAT改写),响应的报文(SNAT改写)。改写的这两部分数据通过调度器转发给内部服务器
    • 调度器配置公网IP,私网以及RS节点(需配置成调度器私有LAN的IP地址)
    • 支持IP以及端口的转换(DR和TUN模式不具备)
    • 请求以及响应需经过调度器,访问量过大,调度器有瓶颈(TUN对此改进)

    TUN模式特性(改进调度器的瓶颈能力):将其请求的报文通过IP隧道转发到真实服务器,处理完后将其数据返回给客户端
    调度器根据服务器的负载,动态选择服务器,将其报文数据封装再另一个IP报文转发到真实服务器。服务器解封为虚拟IP地址(该地址再IP隧道中)并且处理请求,根据路由表将其返回给客户

    • 调度器只处理入站请求,吞吐量可以提高10倍以上(该模式有开销)
    • LAN下使用TUN不如DR效率高

    DR模式(直接路由),更改目的MAC

    • 调度器修改目的MAC地址转发(源IP是客户端IP,目的IP是虚拟IP)
    • 访问量大效率高,不过配置麻烦(需求低的被nginx替代)
    • 调度器无法改变报文目的地址

    三种模式的比较:

    大致情况NATTUNDR
    网络私有LAN/WANLAN
    节点数量10-20100100
    优点地址端口转换WAN性能高
    缺点调度器瓶颈需支持隧道协议不可跨LAN

    原本只有以上三种模式,更多的采用DR和NAT模式(真实服务器以及LVS要在同个vlan部署成本高),TUNNEL可跨vlan,但隧道也需要成本等。对此增加FULLNAT模式(可跨vlan,真实服务器只需连接内网),Packet IN可做DNAT以及SNAT

    FULLNAT大致模式如下:

    • 前:源IP客户端IP,目标ipIPIP
    • 处理:源IP为内网本地IP,目标IP为真实服务器IP
    • 输出:源IP为虚拟IP,目标IP为客户端IP

    3. 调度算法

    调度器根据其目标地址决定哪个集群处理数据

    • 固定调度:rr、wrr、dh、sh
    • 动态调度:wlc、lc、lblc、lblcr

    大致调度算法如下:

    调度算法大致情况
    轮询 rr(Round-Robin)依次分配给不同节点(适用节点性能差不多的)
    加权轮询 wrr(Weighted Round-Robin)依据不同节点权值分配,权值高的优先获取
    目的地址哈希 dh(Destination Hashing)通过目的地址关键字
    源地址哈希 sh(Source Hashing)通过源地址关键字
    加权最小连接数 wlc(Weighted Least-Connection)每台权值 / 当前TCP连接数最为判定
    最小连接数 lc(Least-Connection)IPVS存储所有连接,将其请求发送给最小的调度器
    基于地址最小连接数lblc(Locality-Based Least-Connection)将同一目的地请求分配给调度器,请求来的时候分发给最小的连接数服务器(前提未达到负荷)
    基于地址带重复的最小连接数目的地址对应有一个调度器的集合,将其请求分配给连接数最小的调度器

    适用场景:

    • 网络服务(Http、邮件、数据库):轮询、加权最小连接、加权轮询调度
    • 网站缓存、数据库缓存:一致性哈希
    • 防火墙集群:源地址哈希、目的地址哈希
  • 相关阅读:
    Docker 修改镜像的Digests值
    经纬恒润汽车电子研发新成果亮相重庆智博会
    【HCIA】动态路由协议分类、OSPF
    UUCTF WP
    后端老项目迁移方法
    基于内存的分布式NoSQL数据库Redis(三)常用命令
    2023年7月京东平板电脑行业品牌销售排行榜(京东销售数据分析)
    网络面试-ox07http中的keep-alive以及长/短连接
    WEB使用VUE3实现地图导航跳转
    霸榜SPC-1,成立才3年多,这家中国的存储初创公司凭什么?
  • 原文地址:https://blog.csdn.net/weixin_47872288/article/details/127158510