1. LVS的结构

LVS方式的cluster从结构上可分为两部分:前端的负载均衡器(称之为director)和后端的真实服务器(称之为real server)。cluster前端的director将来自外界的请求调度到cluster后端不同的real server去执行。real server负责真正的提供各种应用服务,比如:Web、FTP、Mail等服务。real server的数量可以根据实际需求进行增加、减少。

2. LVS的三种包转发方式
LVS提供了三种包转发方式:NAT(网络地址映射)、IP Tunneling(IP隧道)、Direct Routing(直接路由)。不同的转发模式决定了不同的cluster的网络结构,下面对三种转发方式分别介始:
NAT(网络地址映射)
NAT方式可支持任何的操作系统,以及私有网络,并且只需一个Internet IP地址,但是整个系统的性能受到限制。因为执行NAT每次需要重写包,有一定的延迟;另外,大部分应用有80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对负载均衡器形成很大压力,成为了新的瓶颈。
IP Tunneling(IP隧道)
director分配请求到不同的real server。real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。IP Tunneling技术极大地提高了director的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过100个节点。real server可以在任何LAN或WAN上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。服务器必须拥有正式的IP地址用于与客户机直接通信,并且所有服务器必须支持IP隧道协议。
Direct Routing(直接路由)
与IP Tunneling类似,负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性。Direct Routing与IP Tunneling相比,没有IP封装的开销,但由于采用物理层(修改MAC地址)技术,所有服务器都必须在一个物理网段。

3. LVS的八种调度算法

LVS已实现了以下八种调度算法:

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)

注:如果想了解关于以上几点的技术细节,LVS的主页查询。

1.轮叫调度(Round Robin)

调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

2.加权轮叫(Weighted Round Robin)

调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

3.最少链接(Least Connections)

调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。

4.加权最少链接(Weighted Least Connections)

在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

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

“基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接” 的原则选出一个可用的服务器,将请求发送到该服务器。

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

“带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标 IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

7.目标地址散列(Destination Hashing)

“目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

8.源地址散列(Source Hashing)
“源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
了解这些算法原理能够在特定的应用场合选择最适合的调度算法,从而尽可能地保持Real Server的最佳利用性。当然也可以自行开发算法,不过这已超出本文范围,请参考有关算法原理的资料。

以下网上找到的另外两种算法:

9. 最短的期望的延迟(Shortest Expected Delay Scheduling SED)
基于wlc算法。这个必须举例来说了
ABC三台机器分别权重123 ,连接数也分别是123。那么如果使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个。使用sed算法后会进行这样一个运算
A:(1+1)/1
B:(1+2)/2
C:(1+3)/3

根据运算结果,把连接交给C 。

10.最少队列调度(Never Queue Scheduling NQ)
无需队列。如果有台realserver的连接数=0就直接分配过去,不需要在进行sed运算。

转载于:https://blog.51cto.com/dwlinux/722882

LVS三种请求转发方式和八种调度算法简介相关推荐

  1. LVS:三种负载均衡方式与八种均衡算法

    1.什么是LVS? 首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术.调度器具有很 ...

  2. GPIO的工作方式/STM32八种IO口模式区别

    GPIO基本结构 GPIO工作方式 4种输入模式: 输入浮空 输入上拉 输入下拉 模拟输入 4种输出模式: 开漏输出 开漏复用功能 推挽式输出 推挽式复用功能 最近在看数据手册的时候,发现在 Cort ...

  3. java p代表哪种数据类型_java数据类型(八种基本数据类型+三种引用类型)

    1.整型 类型           占用字节                                        取值范围 byte                  1           ...

  4. 你知道吗?OAuth2客户端有两种,认证方式有七种。

    OAuth2客户端按照它们与授权服务器进行安全认证的能力可以分为机密类型(Confidential)和公共类型(Public). 机密类型的自身会有个密码凭据,比如Web服务器后端程序:而公共类型则没 ...

  5. Selenium Webdriver元素定位的八种常用方式

    在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下 ...

  6. nginx-启动gzip、虚拟主机、请求转发、负载均衡

    一.启用gzip 1 gzip on; 2 gzip_min_length 1k; 3 gzip_buffers 4 16k; 4 gzip_http_version 1.1; 5 gzip_comp ...

  7. httpservletresponse 重定向浏览器不变的原因_JavaWeb——Servlet——请求转发与响应重定向...

    导语:在实际的软件开发过程中,往往需要多个Servlet来实现不同的功能,就需要对多个Servlet进行组合调用.多个Servlet之间如何进行通信和跳转?而这就需要用到请求转发与响应重定向技术. 原 ...

  8. 请求转发、请求重定向与页面跳转问题

    请求转发 请求转发是服务器行为,即用户向服务器发送了一次http请求,该请求可能会经过多个信息资源处理以后返回给用户,各个信息资源使用请求转发机制互相转发请求,从用户的感官上来看,是感觉不到请求转发的 ...

  9. 非主流茶馆: CIO的八种死法

    本文讲的是 :  非主流茶馆: CIO的八种死法  , [IT168 案例]当我写这个题目时,想到了古时的一个笑话,一个囚徒到了临刑的时候,国王问他,你想选择何种死法啊?囚徒想了想,说道他想在家老死. ...

最新文章

  1. 使用带有用户名和密码的cURL?
  2. solrcloud java_SolrCloud之zookeeper中使用java代码创建集合
  3. 2021-03-15 深入理解SLAM技术【1】 基础知识
  4. LightGBM 重要参数、方法、函数理解及调参思路、网格搜索(附例子)
  5. Linux查看机器负载
  6. 征稿 | MIUA 2022 医学影像理解与分析会议
  7. kettle使用数据库来生成序列_kettle专题5:数据转换
  8. oracle安装选取字符集,oracle10g字符集问题及设置PL/SQL、sqlplus字符集
  9. nginx: [warn] conflicting server name localhost on 0.0.0.0:80, ignored
  10. 用excel绘制统计图
  11. 基于ESP32制作流光溢彩氛围灯
  12. 睡眠多少分钟一个循环_列出正常的睡眠周期及循环时间?
  13. 微信消息模板——巨坑
  14. 解决pymysql.err.InternalError: (1054, Unknown column '某某某' in 'field list') 的问题
  15. python——自动化报告word(1)
  16. 域名防红直连防封怎么布置?
  17. mysql模糊查找表名
  18. 仿抖音 抖音接口开发文档
  19. 概率抽奖常用两种方式
  20. 1367:查找二叉树(tree_a)

热门文章

  1. [转载] 深入理解Linux修改hostname
  2. vim上下左右键输出A B
  3. Arduino 各种模块篇 DHT11 温度湿度 数字模块 单总线
  4. php中的boolean(布尔)类型
  5. 软件整合--硬件整合--平台整合
  6. 诗与远方:无题(八十)- 吸烟而作
  7. 诗与远方:无题(四)
  8. 关于maven依赖中的scope的作用和用法
  9. element-ui表单校验
  10. 鲲鹏服务器项目背景_华为鲲鹏产业生态加速算力升级,企业数字化转型在山西吹响号角...