LVS四层负载均衡架构详解

目录

  • 前言
  • 1. 前沿知识
  • 2. 工作模式
  • 3. 调度算法

前言

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

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

  • 四层的负载均衡(LVS),位于内核层,将其报文中的目标地址和端口调度
  • 七层的负载均衡(类似Nginx),位于应用层,将其报文内容进行调度。
    关于Nginx可看我这篇文章:
    Nginx从入门到精通(全)
    Nginx配置静态网页访问(图文界面)

1. 前沿知识

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

对于负载均衡的功能:

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

LVS的应用场景:

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

LVS的基本术语:

名称 缩写 说明
虚拟IP地址(Virtual IP Address) VIP Director用客户端计算机提供服务的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替代)
  • 调度器无法改变报文目的地址

三种模式的比较:

大致情况 NAT TUN DR
网络 私有 LAN/WAN LAN
节点数量 10-20 100 100
优点 地址端口转换 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、邮件、数据库):轮询、加权最小连接、加权轮询调度
  • 网站缓存、数据库缓存:一致性哈希
  • 防火墙集群:源地址哈希、目的地址哈希

你可能感兴趣的:(架构,lvs,负载均衡,架构)