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

1、什么是LVS?

  首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。

  为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。一般来说,LVS集

  群采用三层结构,其体系结构如图所示:

  LVS集群的体系结构

  2、LVS主要组成部分为:

  负载调度器(load balancer/ Director),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。

  服务器池(server pool/ Realserver),是一组真正执行客户请求的服务器,执行的服务一般有WEB、MAIL、FTP和DNS等。

  共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

  3、LVS负载均衡方式:

  ◆Virtual Server via Network Address Translation NAT(VS/NAT)

  VS/NAT是一种最简单的方式,所有的RealServer只需要将自己的网关指向Director即可。客户端可以是任意操作系统,但此方式下,一个Director能够带动的RealServer比较有限。在VS/NAT的方式下,Director也可以兼为一台RealServer。VS/NAT的体系结构如图所示。

  VS/NAT的体系结构

  ◆Virtual Server via IP Tunneling(VS/TUN)

  IP隧道(IP tunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。IP隧道技术亦称为IP封装技术(IP encapsulation)。IP隧道主要用于移动主机和虚拟私有网络(Virtual Private Network),在其中隧道都是静态建立的,隧道一端有一个IP地址,另一端也有唯一的IP地址。它的连接调度和管理与VS/NAT中的一样,只是它的报文转发方法不同。调度器根据各个服务器的负载情况,动态地选择一台服务器,将请求报文封装在另一个IP报文中,再将封装后的IP报文转发给选出的服务器;服务器收到报文后,先将报文解封获得原来目标地址为 VIP 的报文,服务器发现VIP地址被配置在本地的IP隧道设备上,所以就处理这个请求,然后根据路由表将响应报文直接返回给客户。

  VS/TUN的体系结构

  VS/TUN的工作流程:

  ◆Virtual Server via Direct Routing(VS/DR)

  VS/DR方式是通过改写请求报文中的MAC地址部分来实现的。Director和RealServer必需在物理上有一个网卡通过不间断的局域网相连。 RealServer上绑定的VIP配置在各自Non-ARP的网络设备上(如lo或tunl),Director的VIP地址对外可见,而RealServer的VIP对外是不可见的。RealServer的地址即可以是内部地址,也可以是真实地址。

  VS/DR的体系结构

  VS/DR的工作流程

  VS/DR的工作流程如图所示:它的连接调度和管理与VS/NAT和VS/TUN中的一样,它的报文转发方法又有不同,将报文直接路由给目标服务器。在VS/DR中,调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的MAC地址,再将修改后的数据帧在与服务器组的局域网上发送。因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到这个数据帧,从中可以获得该IP报文。当服务器发现报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据路由表将响应报文直接返回给客户。

  VS/DR的工作流程

  4、三种负载均衡方式比较:

  ◆Virtual Server via NAT

  VS/NAT 的优点是服务器可以运行任何支持TCP/IP的操作系统,它只需要一个IP地址配置在调度器上,服务器组可以用私有的IP地址。缺点是它的伸缩能力有限,当服务器结点数目升到20时,调度器本身有可能成为系统的新瓶颈,因为在VS/NAT中请求和响应报文都需要通过负载调度器。我们在Pentium166 处理器的主机上测得重写报文的平均延时为60us,性能更高的处理器上延时会短一些。假设TCP报文的平均长度为536 Bytes,则调度器的最大吞吐量为8.93 MBytes/s. 我们再假设每台服务器的吞吐量为800KBytes/s,这样一个调度器可以带动10台服务器。(注:这是很早以前测得的数据)

  基于 VS/NAT的的集群系统可以适合许多服务器的性能要求。如果负载调度器成为系统新的瓶颈,可以有三种方法解决这个问题:混合方法、VS/TUN和 VS/DR。在DNS混合集群系统中,有若干个VS/NAT负调度器,每个负载调度器带自己的服务器集群,同时这些负载调度器又通过RR-DNS组成简单的域名。

  但VS/TUN和VS/DR是提高系统吞吐量的更好方法。

  对于那些将IP地址或者端口号在报文数据中传送的网络服务,需要编写相应的应用模块来转换报文数据中的IP地址或者端口号。这会带来实现的工作量,同时应用模块检查报文的开销会降低系统的吞吐率。

  ◆Virtual Server via IP Tunneling

  在VS/TUN 的集群系统中,负载调度器只将请求调度到不同的后端服务器,后端服务器将应答的数据直接返回给用户。这样,负载调度器就可以处理大量的请求,它甚至可以调度百台以上的服务器(同等规模的服务器),而它不会成为系统的瓶颈。即使负载调度器只有100Mbps的全双工网卡,整个系统的最大吞吐量可超过 1Gbps。所以,VS/TUN可以极大地增加负载调度器调度的服务器数量。VS/TUN调度器可以调度上百台服务器,而它本身不会成为系统的瓶颈,可以用来构建高性能的超级服务器。VS/TUN技术对服务器有要求,即所有的服务器必须支持“IP Tunneling”或者“IP Encapsulation”协议。目前,VS/TUN的后端服务器主要运行Linux操作系统,我们没对其他操作系统进行测试。因为“IP Tunneling”正成为各个操作系统的标准协议,所以VS/TUN应该会适用运行其他操作系统的后端服务器。

  ◆Virtual Server via Direct Routing

  跟VS/TUN方法一样,VS/DR调度器只处理客户到服务器端的连接,响应数据可以直接从独立的网络路由返回给客户。这可以极大地提高LVS集群系统的伸缩性。跟VS/TUN相比,这种方法没有IP隧道的开销,但是要求负载调度器与实际服务器都有一块网卡连在同一物理网段上,服务器网络设备(或者设备别名)不作ARP响应,或者能将报文重定向(Redirect)到本地的Socket端口上。

  三种LVS负载均衡技术的优缺点归纳以下表:

  VS/NATVS/TUNVS/DR

  服务器操作系统任意支持隧道多数(支持Non-arp)

  服务器网络私有网络局域网/广域网局域网

  服务器数目(100M网络)10~20100大于100

  服务器网关负载均衡器自己的路由自己的路由

  效率一般高最高

  注:以上三种方法所能支持最大服务器数目的估计是假设调度器使用100M网卡,调度器的硬件配置与后端服务器的硬件配置相同,而且是对一般Web服务。使 用更高的硬件配置(如千兆网卡和更快的处理器)作为调度器,调度器所能调度的服务器数量会相应增加。当应用不同时,服务器的数目也会相应地改变。所以,以上数据估计主要是为三种方法的伸缩性进行量化比较。

  5、负载均衡调度算法

  ◆最少的连接方式(Least Connection):传递新的连接给那些进行最少连接处理的服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配, 直到其恢复正常。

  ◆最快模式(Fastest):传递连接给那些响应最快的服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。

  ◆观察模式(Observed):连接数目和响应时间以这两项的最佳平衡为依据为新的请求选择服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。

  ◆预测模式(Predictive):BIG-IP利用收集到的服务器当前的性能指标,进行预测分析,选择一台服务器在下一个时间片内,其性能将达到最佳的服务器相应用户的请求。(被BIG-IP 进行检测)

  ◆动态性能分配(Dynamic Ratio-APM):BIG-IP 收集到的应用程序和应用服务器的各项性能参数,动态调整流量分配。

  ◆动态服务器补充(Dynamic Server Act.):当主服务器群中因故障导致数量减少时,动态地将备份服务器补充至主服务器群。

  ◆服务质量(QoS):按不同的优先级对数据流进行分配。

  ◆服务类型(ToS): 按不同的服务类型(在Type of Field中标识)负载均衡对数据流进行分配。

  ◆规则模式:针对不同的数据流设置导向规则,用户可自行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排查 .NET开发的工厂MES系统 内存泄漏分析

一:背景 1. 讲故事上个月有位朋友加微信求助,说他的程序跑着跑着就内存爆掉了,寻求如何解决,截图如下:从聊天内容看,这位朋友压力还是蛮大的,话说这貌似是我分析的第三个 MES 系统了&#xff0c…

DataGirdView 常用操作

1、将数据源的某列添加到已有DataGirdView的列 例如:将文件夹下所有文件名添加到DataGirdView 的文件名一列,图片如下: 首先在datagridview把文件名列的DATAPROPERTYNAME设为你要显示的数据列的名字.此处我绑定的是folder.Name,所以直接在DAT…

Android之Android studio Gradle sync failed: Unknown host ‘services.gradle.org

错误描述: Gradle sync failed: Unknown host services.gradle.org. You may need to adjust the proxy settings in Gradle.Consult IDE log for more details (Help | Show Log)解决办法: 下载gradlectrlalts 然后输入gradle;在project-…

使用aconda3-5.1.0(Python3.6.4) 搭建pyspark远程部署

参考:http://ihoge.cn/2018/anacondaPyspark.html 前言 首次安装的环境搭配是这样的: jdk8 hadoop2.6.5 spark2.1 scala2.12.4 Anaconda3-5.1.0 一连串的报错让人惊喜无限,尽管反复调整配置始终无法解决。 坑了一整天后最后最终发现…

假如人类长出翅膀,会变成这种怪样子

鲁迅曾经说过:“不会画漫画的段子手不是好英语老师”咳咳~ 图图君就是这样一位专注知识科普的双语漫画家长按二维码带你去图图君家串串门儿想知道人类长出翅膀的怪样子吗?长按二维码关注回复“翅膀”寻找答案吧在这里你不仅可以大口呼吸知识还能顺便学个…

CSS3实战开发: 纯CSS实现图片过滤分类显示特效

CSS3实战开发: 纯CSS实现图片过滤分类显示特效 原文:CSS3实战开发: 纯CSS实现图片过滤分类显示特效各位网友大家好,今天我要带领大家开发一个纯CSS的图片分类显示的网址导航,单纯看标题大家可能有些困惑,依照以往惯例,我先给大家演…

C# WPF DataGrid获取单元格并改变背景色

01—概述WPF 自带了一个表格控件datagrid,这个控件类似winfrom中的datagridview,在数据显示的时候也经常会用到,这节主要讲解如何从后台代码获取到单元格控件并改变其相关属性:背景色、前景色、字体等。02—效果演示03—代码后台c…

PingingLab传世经典系列《CCNA完全配置宝典》-3.4 Trunk进阶配置

3.4 Trunk进阶配置实验目的:1、掌握Native vlan和Allow vlan的配置。2、理解Native vlan和Allow vlan的功能。实验拓扑:实验步骤:1、依据图中拓扑配置4台主机的IP地址,其中PC通过路由器模拟,配置如下:PC1(c…

python浮点数类型与数学_Python3标准库:decimal定点数和浮点数的数学运算

1. decimal定点数和浮点数的数学运算 decimal模块实现了定点和浮点算术运算,使用的是大多数人所熟悉的模型,而不是程序员熟悉的模式(即大多数计算机硬件实现的IEEE浮点数运算)。Decimal实例可以准确的表示如何数,对其上火其下取整&#xff0c…

业务功能中包含邮件发送,怎么测试?

前言网站开发中,经常碰到需要发送邮件的场景。比如,重置用户密码,需要执行下列流程:用户在重置页面输入邮箱地址进入邮箱,使用获得的重置链接打开重置页面输入新密码一般来说,重置链接都需要包含一个token值…

如何用CSS让一个容器水平垂直居中?

- 第一类&#xff08;被居中的元素有固定的宽高&#xff09; 效果&#xff1a; 第一种方法&#xff08;绝对定位 负margin&#xff09;<div class"div1"> <div class"div2"></div> </div><style type"text/css"&g…

和男朋友出去玩,该去哪里​?

1 当代熬夜人的脑回路&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 确实需要找一下眼珠子&#xff08;via.剪怪不怪&#xff0c;侵删&#xff09;▼3 原来是老师想太多&#xff08;via.万事屋纸纸酱&#xff0c;侵删&#xff09;▼4 有一个会英语的妈妈&#x…

查询表结构的语句总结

四种方式&#xff1a;① DESC 表名② DESCRIBE 表名③ SHOW COLUMNS FROM 表名④ SHOW CREATE TABLE 表名从以上图片结果中可以看出&#xff1a;show columns 和 desc 和 describe 的结果是一样的&#xff0c;即&#xff1a;会将查询的表的每个字段的具体信息列出来,查询的行数…

ch340串口驱动_关于串口下载问题和超时

串口下载适用于mini、精英、战舰、探索者、阿波罗429不适用于阿波罗767&#xff0c;H743&#xff0c;号令者1052保证板子在独立供电状态下&#xff0c;电源灯处于亮灯状态下&#xff0c;USB线接板子上USB_232&#xff0c;RXD 和 PA9(STM32 的 TXD)TXD 和 PA10(STM32的 RXD)通过…

tcpdump抓取HTTP包

http://blog.csdn.net/kofandlizi/article/details/8106841 cpdump -XvvennSs 0 -i eth0 tcp[20:2]0x4745 or tcp[20:2]0x4854 0x4745 为"GET"前两个字母"GE" 0x4854 为"HTTP"前两个字母"HT" 说明&#xff1a; 通常情况下:一…

cobbler工作流分析

官网 http://cobbler.github.io/ 介绍 Cobbler是一个快速网络安装linux的服务&#xff0c;而且在经过调整也可以支持网络安装windows。该工具使用python开发&#xff0c;小巧轻便&#xff0c;使用简单的命令即可完成PXE网络安装环境的配置&#xff0c;同时还可以管理DHCP、DNS、…

数学到底有多难难难难?看完这个,瞬间觉得智商都提高了!

▲ 点击查看数学家陈省身曾说过&#xff0c;我们每个人一生都花了很多时间学数学&#xff0c;但我们其实只是学会了计算&#xff0c;而不是数学。不知道你有没有听说过这样一句话&#xff1a;想要学好数学&#xff0c;就要靠刷题。尽管我们不得不承认&#xff0c;确实需要不断地…

matlab机械臂工作空间代码_【ROS-Moveit!】机械臂控制探索(3)——基于python的API示例代码分析...

本文参考Moveit!官方文档。系统&#xff1a;ubuntu 18.04 / 16.04ROS&#xff1a;Melodic / Kinetic概述基于python的运动组API是最简单的MoveIt!用户接口。其中提供了用户常用的大量功能封装&#xff0c;例如&#xff1a;设置目标关节控制或笛卡尔空间位置创建运动规划移动机器…

竟然有如何奇葩的如厕方式......

1 密集恐惧症一下子都好啦&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 请选择适合您的如厕方式&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 为什么当年的粉丝没有现在像这样互掐&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 怕什么…