集群体系和调度算法

LVS集群体系架构

	1)使用LVS架设的服务器集群系统有三个部分组成:
最前端的负载均衡层,用Load Balancer表示,
中间的服务器群组层,用Server Array表示,
最底端的数据共享存储层,用Shared Storage表示,
在用户看来,所有的内部应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。 2) Load Balancer层:
位于整个集群系统的最前端,有一台或者多台负载调度器(Director Server)组成,LVS模块就安装在Director Server上。
Director的主要作用类似于一个路由器,它含有完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给Server Array层的应用服务器(Real Server)上。
同时,在Director Server上还要安装对Real Server服务的监控模块Ldirectord,此模块用于监测各个Real Server服务的健康状况,在Real Server不可用时把它从LVS路由表中剔除,恢复时重新加入。 3)Server Array层:
由一组实际运行应用服务的机器组成,Real Server可以是WEB服务器、MAIL服务器、FTP服务器、DNS服务器、视频服务器中的一个或者多个,每个Real Server之间通过高速的LAN或分布在各地的WAN相连接。
在实际的应用中,Director Server也可以同时兼任Real Server的角色。 4)Shared Storage层:
是为所有Real Server提供共享存储空间和内容一致性的存储区域。
在物理上,一般有磁盘阵列设备组成,为了提供内容的一致性,一般可以通过NFS网络文件系统共享数据。
但是NFS在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统,例如Red hat的GFS文件系统,oracle提供的OCFS2文件系统等。 5)从整个LVS结构可以看出:
Director Server是整个LVS的核心,目前用于Director Server的操作系统只能是Linux和FreeBSD。
linux2.6内核不用任何设置就可以支持LVS功能,而FreeBSD作为Director Server的应用还不是很多,性能也不是很好。
对于Real Server,几乎可以是所有的系统平台,Linux、windows、Solaris、AIX、BSD系列都能很好的支持。

LVS负载均衡调度算法

	负载调度器是根据各个服务器的负载情况,动态地选择一台Real Server响应用户请求,那么动态选择是如何实现呢,其实也就是我们这里要说的负载调度算法,根据不同的网络服务需求和服务器配置,IPVS实现了如下10种负载调度算法。

	根据其调度时是否考虑各RS当前的负载状态,分为两种:静态方法和动态方法
静态方法:仅根据算法本身进行调度,包含有rr,wrr,sh,dh。
动态方法:主要根据各RS当前的负载状态及调度算法进行调度,通过计算法RS当前的overhead值来进行选择,Overhead=value较小的RS将被调度,包含有lc.wlc,sed,nq,lblc,lblcr。 rr:轮叫调度(Round Robin)
“轮叫”调度也叫1:1调度,调度器通过“轮叫”调度算法将外部用户请求按顺序1:1的分配到集群中的每个Real Server上,这种算法平等地对待每一台Real Server,而不管服务器上实际的负载状况和连接状态。
缺点:
1.每台服务器的工作性能可能有差异,应该能者多劳,轮询没法达到这个效果。
2.session无法保持,用第一次请求发送到A服务器,第二次请求发送到B服务器,这将是两个不同的会话。
wrr:加权轮叫调度(Weighted Round Robin) 
“加权轮叫”调度算法是根据Real Server的不同处理能力来调度访问请求。可以对每台Real Server设置不同的调度权值,对于性能相对较好的Real Server可以设置较高的权值,而对于处理能力较弱的Real Server,可以设置较低的权值,这样保证了处理能力强的服务器处理更多的访问流量。充分合理的利用了服务器资源。同时,调度器还可以自动查询Real Server的负载情况,并动态地调整其权值。
lc:最少链接调度(Least Connections)
“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。
overhead=active*256+inactive
当计算结果相同时,就按照自上而下的轮询方式进行选择
wlc:加权最少链接调度(Weighted Least Connections)(默认调度算法)
“加权最少链接调度”是“最少连接调度”的超集,每个服务节点可以用相应的权值表示其处理能力,而系统管理员可以动态的设置相应的权值,缺省权值为1,加权最小连接调度在分配新连接请求时尽可能使服务节点的已建立连接数和其权值成正比。
overhead=(active*256+inactive)/weight
计算结果相同时,自上而下选择,一般首次所有Real Server都先轮询一遍,每个都处理一个请求,第二轮开始才发挥效果,但是第一次响应请求的有可能是性能最差的服务器(如果性能最差的服务器排在最上面的话)
sed:最小期望延迟(Shortest Expections Delay)
overhead=(active+1)*256/weight
改进版的wlc,这种算法保证了是有权重最高的Real Server首先响应服务,而非初始计算值都是相同造成的轮询。但是,会出现权重大的Real Server过多负载,而权重小的Real Server过于空闲。
nq:永不排队(Never Queue)
此算法首次会按照权重挑选,由大到小轮询一遍,之后再按照sed算法来选择,避免了权重小的Real Server过于空闲。
dh:目的地址哈希调度(Destination Hashing)
以目的地址为关键字查找一个静态hash表来获得需要的Real Server。此算法一般在有多个防火墙时的场景下应用,在防火墙基于状态追踪的机制下,保证响应报文能够通过同一防火墙发送出去。
sh:源地址哈希调度(Source Hashing)
客户端的首次请求按照其他算法选择Real Server,后续请求只要是源地址相同都发送同一台Real Server,这样一定程度上解决了session的问题。
即以源地址为关键字查找一个静态hash表来获得需要的Real Server。
缺席:
现在多数用户是通过snat方式访问互联网的,如一个上百台主机的局域网环境都指向同一个网关,所以对DR而言,源地址都是同一个,而实际上是来自不同客户端的请求,这些请求都经发送到一个Real Server上处理,会严重损害了负载的均衡效果。
lblc:基于地址的最小连接数调度(Locality-Based Least-Connection)
将来来自同一目的地址的请求分配给同一台Real Server,如果这台服务器尚未满负荷的话。
否则分配给连接数最小的Real Server,并以它为下一次分配的首先考虑。
lblcr:基于地址的带重复最小连接数调度(Locality-Based Least-Connection)
对于某一目的地址,对应有一个Real Server子集。对此地址的请求,为它分配子集中连接数最小的Real Server。
如果子集中所有的服务器均已满负荷,则从集群中选择一个连接数较小的服务器,将它加入到此子集并分配连接。若一定时间内,这个子集未被做任何修改,则将子集集中负载最大的节点从子子集删除。

LVS集群体系和调度算法的更多相关文章

  1. LVS集群之工作原理和调度算法(2)

      LVS的工作机制 LVS里Director本身不响应请求,只是接受转发请求到后方,Realservers才是后台真正响应请求. LVS 工作原理基本类似DNAT,又不完全相像,它是一种四层交换,默 ...

  2. 负载均衡之LVS集群

    h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...

  3. LVS集群之NAT模式实现

    LVS集群之NAT模式实现 一.集群的种类 集群系统主要分为 1.HA:高可用集群,又叫双机热备.   (a)原理      2台机器A,B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至 ...

  4. Linux系统(四)负载均衡LVS集群之NAT模式

    序言 提到LVS,就从章文嵩博士开始吧,反正也不知道如何下笔来写这一篇.章大博士,读博时候创建这个lvs软件项目,但是他提倡开源精神,在用户的建议和反馈中,这个花了他两周时间开发的开源软件不断得到改建 ...

  5. LVS集群DR模式实例(4)

    LVS集群DR模式实例 1. 实验拓扑图 2. 实验环境 3台CentOS6.4 64bit的服务器. 类型 IP DR eth0:10.20.73.20  VIP eth0:0 10.20.73.3 ...

  6. Linux系统(四)LVS集群负载均衡NAT模式

    序言 提到LVS,就从章文嵩博士开始吧,反正也不知道如何下笔来写这一篇.章大博士,读博时候创建这个lvs软件项目,但是他提倡开源精神,在用户的建议和反馈中,这个花了他两周时间开发的开源软件不断得到改建 ...

  7. LVS集群简介及使用

    什么是集群 一组通过高速网络互联的计算组,并以单一系统的模式加以管理 将很多服务器集中在一起,提供一种服务,在客户端看来就象是只有一个服务器 可以在付出较低成本的情况下获得在性能,可靠性,灵活性方面的 ...

  8. 转载-lvs官方文档-LVS集群中的IP负载均衡技术

    章文嵩(wensong@linux-vs.org) 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载均衡技术(VS/NAT.VS/TUN ...

  9. lvs集群实现lvs-dr模型和lvs-nat模型

    ipvsadm ipvsadm命令是lvs集群在应用层的管理工具,我们可以通过此ipvsadm来管理lvs的配置,其实现了集群服务管理:增.删.改,集群服务的RS管理:增.删.改以及查看集群状态. 管 ...

随机推荐

  1. C语言的移位操作符及位运算

    C语言的移位操作符 位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算.位移位运算符分为左移和右移两种,均为双目运算符.第一运算对象是移位对象,第二个运算对象是所移的二进制位数. 位 ...

  2. IDEA 2018集成MyBatis Generator 插件 详解

    1.修改maven的pom文件 只需要将如下依赖添加到pom.xml文件中即可.(注意此处是以plugin的方式,放在<plugins> </plugins>中间即可) < ...

  3. jQuery调用WCF 说明

    在项目中用过一些WCF的技术这篇文章是对以前用过的一点东西的一个梳理 一,webconfig的配置除了一般的配置外,与WCF相关的配置如下 <system.serviceModel>    ...

  4. 从Hadoop框架讨论大数据

    [Hadoop是什么?] 1)Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构. 2)主要解决,海量数据的存储和海量数据的分析计算问题. 3)广义上来说,HADOOP 通常是指一 ...

  5. BNUOJ 7178 病毒侵袭持续中

    病毒侵袭持续中 Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: 30 ...

  6. codeforces 762E(cdq分治)

    题意: n个电台,每个电台有三个属性xi, ri, fi.分别代表电台的坐标,电台的播报范围,以及播报的频率. 对于一对电台i, j,若min(ri, rj) >= |xi - xj|,那么他们 ...

  7. SpringBoot常用注解总结

    在SpringBoot框架中,注解做为一种隐式配置,极大的简化了之前xml文件的配置方式.SpringBoot中包含许多种类的注解,这里对在SpingBoot项目中经常使用到的一些注解的进行大致的归纳 ...

  8. Ubuntu 16.04无损分区大小调整工具Gparted

    安装: sudo apt-get install gparted 使用: 注意: 这款软件可以调整分区大小,且支持无损,但是对于/根目录的分区无法调整,但是它提供ISO工具,可以启动后进行调整. 下载 ...

  9. DTRACE简介之完结篇3

    https://blogs.oracle.com/swan/entry/dtrace%E7%AE%80%E4%BB%8B_3 DTRACE简介之完结篇 By samwan on 四月 13, 2007 ...

  10. 使用URL Rewrite实现网站伪静态

    下载urlwrite包 将urlrewrite-***.jar复制到web应用lib文件夹下 web.xml中配置URL Rewrite: 例: <filter> <filter-n ...