LVS的调度算法-个人理解

1、LVS的调度算法

我们对LVS的调度算法分为两类:静态算法和动态算法。

1.1、静态算法

仅根据算法本身进行调度,而不考虑后端真实服务器的实际连接情况和负载情况。

1.1.1 轮询(RR)--Round Robin

负载调度器将用户请求按顺序轮流分配到后端的真实服务器上。

它均等的对待每一台真实服务器,而不管服务器实际的连接数和系统负载。权重值相同,权重值若为0则表示真实服务器不可用。

1.1.2 加权轮询(WRR)--Weighted Round Robin

负载调度器会根据权重值来判断后端真实服务器的性能,优先将请求分配到后端性能较好的真实服务器上。

假如主机A的权重值为2、主机B的权重值为1,则主机A的性能是B的两倍,调度顺序会变为AAB,权重值若为0则表示真实服务器不可用。

1.1.3 源地址散列(SH)--Source Hash

这种调度算法一般用于需要会话保持的WEB集群中。

当用户请求时,负载调度器会将同一个来源IP的请求转发给同一台真实服务器处理。

当用户第一次请求时,负载调度器会根据轮询算法按顺序将请求转发到后端的真实服务器上,并会将用户请求的源IP+转发到后端的真实服务器对应关系以散列键=值的方式存放到一张散列表(哈希表)中,当用户再一次请求时,负载调度器会根据请求的源IP,匹配散列表中对应关系,将请求分发到后端的同一台真实服务器上。若后端的真实服务器超载或不可用,则会返回空。

1.1.4 目标地址散列(DH)--Destination Hash

当用户请求时,负载调度器始终会将请求发往以真实服务器为目标IP的真实服务器上。

若后端的真实服务器超载或不可用,则会返回空。

这种调度算法一般用于后端真实服务器为缓存服务器的场景下,我们希望将所有请求可以一直都匹配到缓存,通过缓存服务器直接返回响应给用户,这种调度算法就基本失去了负载均衡的意义,基本上不会用。

1.2、动态算法

根据算法及真实服务器当前的负载状态进行调度。

1.2.1 最少连接(LC)--Least Connection

负载调度器会将用户请求分配到后端连接数最少的真实服务器上;

当所有的真实服务器连接数都为0时则会按照轮询按顺序将请求转发至后端;

负载调度器会记录每个真实服务器已建立的连接数,当一个请求被调度到后端某台真实服务器上时,则活动连接数(Active)+1,当连接中止或超时,活动连接数-1,即非活动连接(InActive)+1,当非活动连接超过空闲等待时间,则-1。权重值若为0则表示真实服务器不可用。

1.2.2 加权的最少连接(WLC)--Weighted Least Connection

负载调度器会将用户请求分配到后端连接数最少、性能最优的真实服务器上;

当所有的真实服务器连接数都为0时则会按照轮询按顺序将请求转发至后端,不管权重值大小。

负载调度器会记录每个真实服务器已建立的连接数,同时也可以通过权重值来判断真实服务器的性能。

1.2.3 最少期望延迟(SED)--Shortest Expected Delay Scheduling

负载调度器会将用户请求分配到后端连接数最少、性能最优的真实服务器上;

当所有的真实服务器连接数都为0时则会根据权重值来判断真实服务器的性能,并将请求转发至后端。

SED算法弥补了WLC算法的不足。

1.2.4 永不排队(NQ)--Never Queue

在主机A权重值为1,主机B权重值为5的环境下,如果根据SED算法分配请求的话,则可能前4次请求都会交给主机A处理,而主机B为空闲状态,这并不是我们期望所看到的,所以NQ算法又是SED算法的改进;

当所有的真实服务器连接数都为0时则会根据权重值来判断真实服务器的性能,并将请求转发至后端;

当有新的用户请求,有一台真实服务器活动连接数为0时,则会立即转发、无需排队等待;

当所有的真实服务器都在处理连接时,则负载调度器会将用户请求分配到后端连接数最少、性能最优的真实服务器上。

1.2.5 基于局部性的最少连接(LBLC)--locality Based Least Connections

这种算法是DH算法的改进算法,一般也应用于后端真实服务器是缓存服务器的场景下,弥补了DH算法的不足,其实基本上也不常用,可以实现后端缓存服务器的高可用。

当用户请求时,负载调度器始终会将请求发往以真实服务器为目标IP的真实服务器上。

若后端的真实服务器超载或不可用,则会将请求转发到后端最少连接的可用的真实服务器上。

1.2.6 带复制的基于局部性的最少连接(LBLCR)--Locality Based Least Connections with Replication

LBLCR算法是LBLC算法的升级版。LBLC维护一台为目标的真实服务器,而LBLCR则维护一组为目标的真实服务器,实现目标的负载均衡,目前主要用于缓存集群。

当用户请求时,负载调度器从一组真实服务器中找出一台连接数最少的服务器处理请求。

若服务器超载时,则负载调度器会按照最少连接数原则从真实服务器中选出一台服务器,将其加入到组中并处理请求,当组一段时间没有发生变动,则会将最忙的真实服务器从组中删除。

原文地址:http://blog.51cto.com/10978134/2122127

时间: 2024-10-14 15:55:00

LVS的调度算法-个人理解的相关文章

LVS的调度算法

LVS的调度算法(Scheduling Method)一共有10种 一.静态方法:仅根据算法本身进行调度 1.rr(Round Robin):轮询 2.wrr(Werghted Round Robin):加权轮询 3.sh(Source Hashing):源地址hash 4.dh(dh):目标地址hash 二.动态方法:根据算法及RS当前的负载状况 1.lc(Least Connection):最少连接 算法:Overhead=Active*256+Inactive Overhead:最小负载

负载均衡集群介绍,LVS介绍,LVS的调度算法,LVS的NAT模式搭建

笔记内容: 18.6负载均衡集群介绍 18.7 LVS介绍 18.8 LVS的调度算法 18.9/18.10 LVS NAT模式搭建 笔记日期:2017-11-11 18.6负载均衡集群介绍 首先我们先介绍一下什么是负载均衡: 负载平衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群).网络连接.CPU.磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用.最大化吞吐率.最小化响应时间.同时避免过载的目的.这是来自维基百科的介绍.负载均衡的目的,就在于平衡计算机

Linux集群架构(2)LVS介绍、LVS的调度算法、NAT模式搭建、 DR模式、keepalive

             负载均衡集群介绍                 LVS介绍 1.LVS NAT模式:(,目标ip转发.适用于小型集群,机器数量不多10台左右) 2.LVS IP Tunnel模式(将目标ip进行更改) (在这个模式下的rs机器都是配置有公网ip) 3.LVS DR模式(把数据包的MAC地址修改) NAT模式适合小型集群,机器在10台左右.其优势是节省公网ip. IP TUNNEL和DR 相差不大,能使用在较大的集群模式下,但是每台rs服务器都要配置有公网ip,这样会比

负载均衡集群介绍、LVS介绍、LVS的调度算法、LVS NAT模式搭建

负载均衡集群介绍 ?主流开源软件LVS.keepalived.haproxy.nginx等 ?其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,也可以当做7层使用 ?keepalived的负载均衡功能其实就是lvs ?lvs这种4层的负载均衡是可以分发除80外的其他端口通信的,比如MySQL的,而nginx仅仅支持http,https,mail,haproxy也支持MySQL这种 ?相比较来说,LVS这种4层的更稳定,能承受更多的请求,而nginx这

六十二、负载均衡集群介绍、LVS介绍、LVS的调度算法、LVS NAT模式搭建

一.负载均衡集群介绍 主流开源软件LVS.keepalived.haproxy.nginx等 其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,也可以当做7层使用. OSI简介:OSI采用了分层的结构化技术,共分七层,物理层.数据链路层.网络层.传输层.会话层.表示层.应用层. keepalived的负载均衡功能其实就是lvs,内置的功能. lvs这种4层的负载均衡是可以分发除80外的其他端口通信的,比如MySQL的,而nginx仅仅支持http,h

负载均衡集群介绍,LVS介绍,LVS的调度算法,LVSNAT模式搭建

负载均衡集群介绍 主流开源软件LVS.keepalived.haproxy.nginx等 其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,也可以当做7层使用 keepalived的负载均衡功能其实就是lvs lvs这种4层的负载均衡是可以分发除80外的其他端口通信的,比如MySQL的,而nginx仅仅支持http,https,mail,haproxy也支持MySQL这种 相比较来说,LVS这种4层的更稳定,能承受更多的请求,而nginx这种7层的更

LVS专题: LVS的工作模型和调度算法介绍

LVS专题: LVS的工作模型和调度算法介绍 前言 什么是负载均衡? 什么是LVS? LVS的架构: LVS的实现模型: NAT实现原理: DR实现原理: TUN实现原理: FULLNAT实现原理: LVS的调度算法 静态调度算法(4种) 动态调度算法(6种): 总结 前言 本文大概介绍一下LVS的工作方式和实现的模型以及调度算法,流程图方面只上了两张图, 如果有需要LVS各工作模式的流程图请看张小凡:LVS原理详解 什么是负载均衡? 当单台服务器性能不足时我们有两种对其进行扩展的方式, 分别是

LVS集群十种调度算法及负载均衡理论

一.LVS概念 LVS(Linux Virtual Server):Linux 虚拟server: LVS是个负载均衡设备.它不提供不论什么服务.用户请求到这里的时候.它是将客户需求转发至后端真正提供服务的服务.所以说后端的服务称作real server: LVS分为两段,前一段称为ipvsadm(管理集群服务的命令行工具),后面一段叫做ipvs(内核模块): [提示]LVS和iptables不能同一时候使用: 二.LVS类型 LB(Load Balancing):负载均衡集群 特性:为了添加能

LVS集群之十种调度算法及负载均衡-理论

一.LVS概念 LVS(Linux Virtual Server):linux 虚拟服务器 LVS是个负载均衡设备,它不提供任何服务,用户请求到这里的时候,它是将客户需求转发至后端真正提供服务的服务,所以说后端的服务称作real server.LVS分为两段,前一段称为ipvsadm(管理集群服务的命令行工具),后面一段叫做ipvs(内核模块)[提示:LVS和iptables不能同时使用]. 二.LVS类型 LB(Load Balancing):负载均衡集群 特性:为了增加能力能力 HA(Hig