• 运维特工,战胜心魔!!
  • 有些事情其实没有那么难,只是我们感觉难,走出第一步!
  • 你所浪费的今天,是昨天死去的人奢望的明天!!!
  • 欢迎访问 unixfbi.com 运维特工社区http://unixfbi.com/
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧
  • 运维特工:http://www.unixfbi.com
  • 人生没有白走的路,每一步都算数!!
  • 空杯心态,沉淀自己!

LVS调度算法介绍

LVS unixfbi 1年前 (2018-04-08) 13729次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

LVS 调度算法介绍

1.LVS 简单介绍

在 1998 年 5 月,章博士成立了 Linux Virtual Server 的自由软件项目,进行 Linux 服务器集群的开发工作。同时,Linux Virtual Server 项目是国内最早出现的自由软件项目之一。
Linux Virtual Server 项目的目标 :使用集群技术和 Linux 操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。

IPVS(lvs)发展史
LVS 负载均衡调度技术是在 linux 内核中实现的,我们使用配置 LVS 时,不是直接配置内核中的 IPVS,而是通过 IPVS 的管理工具
在 linux2.2 内核时,IPVS 就已经以内核补丁的形式出现
从 2.4。24 版本以后 IPVS 已经成为 linux 内核官方标准内核的一部分

2.LVS 调度算法介绍

针对不同的网络服务需求和服务器配置,IPVS 调度器实现了如下八种负载调度算法。
8 种调度方法可以分为静态调度算法和动态调度算法。
静态调度方法
仅根据算法本身进行调度;
rrwrrdhsh
动态调度算法
根据算法及各 RS 的当前负载状态进行调度;
lcwlclblclblcrSED(Shortest Expection Delay)、NQ(Never Queue)(后两种官方站点没有提到,编译 LVS,make 过程可以看到 rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)
下面我们来详细介绍这 8 种调度算法:

  • 轮叫(Round Robin)
    调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
  • 加权轮叫(Weighted Round Robin)
    调度器通过"加权轮叫"调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
  • 最少链接(Least Connections)
    调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。
  • 加权最少链接(Weighted Least Connections)
    在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
  • 基于局部性的最少链接(Locality-Based Least Connections)
    "基于局部性的最少链接" 调度算法是针对目标 IP 地址的负载均衡,目前主要用于 Cache 集群系统。该算法根据请求的目标 IP 地址找出该目标 IP 地址最近使用的服务器,若该服务器 是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用"最少链接"的原则选出一个可用的服务 器,将请求发送到该服务器。
  • 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)
    "带复制的基于局部性最少链接"调度算法也是针对目标 IP 地址的负载均衡,目前主要用于 Cache 集群系统。它与 LBLC 算法的不同之处是它要维护从一个 目标 IP 地址到一组服务器的映射,而 LBLC 算法维护从一个目标 IP 地址到一台服务器的映射。该算法根据请求的目标 IP 地址找出该目标 IP 地址对应的服务 器组,按"最小连接"原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器,若服务器超载;则按"最小连接"原则从这个集群中选出一 台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的 程度。
  • 目标地址散列(Destination Hashing)
    destination hash , 将对同一个目标的请求始终发往同一个 RS;
    "目标地址散列"调度算法根据请求的目标 IP 地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
  • 源地址散列(Source Hashing)
    实现 session 保持的机制:将来自同一个 IP 的请求始终调度至同一个 RS;
    "源地址散列"调度算法根据请求的源 IP 地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

参考文档

http://www.linuxvirtualserver.org/zh/
http://www.linuxvirtualserver.org/zh/lvs4.html
http://www.linuxvirtualserver.org/zh/lvs1.html
http://blog.51cto.com/wuhf2015/1654648


UnixFBI 运维特工 , 版权所有丨如未注明 , 均为原创丨 转载请务必注明原文链接http://www.unixfbi.com/439.html
喜欢 (0)
[支付宝]
分享 (0)
unixfbi
关于作者:
运维工程师一枚,做有价值的事情!
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址