欢迎来到天天文库
浏览记录
ID:27462010
大小:65.22 KB
页数:10页
时间:2018-12-04
《linux服务器集群系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Linux服务器集群系统第4季前言 在上一篇文章中,我们主要讲述了LVS集群中实现的三种IP负载均衡技术,它们主要解决系统的可伸缩性和透明性问题,如何通过负载调度器将请求高效地分发到不同的服务器执行,使得由多台独立计算机组成的集群系统成为一台虚拟服务器;客户端应用程序与集群系统交互时,就像与一台高性能的服务器交互一样。 本文将主要讲述在负载调度器上的负载调度策略和算法,如何将请求流调度到各台服务器,使得各台服务器尽可能地保持负载均衡。文章主要由两个部分组成。第一部分描述IP负载均衡软件IPVS在内核中所实现的各种连接调度算法;第二部分给出一个动态反馈负载均衡算法(Dynamic-fe
2、edbackloadbalancing),它结合内核中的加权连接调度算法,根据动态反馈回来的负载信息来调整服务器的权值,来进一步避免服务器间的负载不平衡。 在下面描述中,我们称客户的socket和服务器的socket之间的数据通讯为连接,无论它们是使用TCP还是UDP协议。对于UDP数据报文的调度,IPVS调度器也会为之建立调度记录并设置超时值(如5分钟);在设定的时间内,来自同一地址(IP地址和端口)的UDP数据包会被调度到同一台服务器。 内核中的连接调度算法 IPVS在内核中的负载均衡调度是以连接为粒度的。在HTTP协议(非持久)中,每个对象从WEB服务器上获取都需要建立一个T
3、CP连接,同一用户的不同请求会被调度到不同的服务器上,所以这种细粒度的调度在一定程度上可以避免单个用户访问的突发性引起服务器间的负载不平衡。 在内核中的连接调度算法上,IPVS已实现了以下八种调度算法: 轮叫调度(Round-RobinScheduling) 加权轮叫调度(WeightedRound-RobinScheduling) 最小连接调度(Least-ConnectionScheduling) 加权最小连接调度(WeightedLeast-ConnectionScheduling) 基于局部性的最少链接(Locality-BasedLeastConnectionsSc
4、heduling) 带复制的基于局部性最少链接(Locality-BasedLeastConnectionswithReplicationScheduling) 目标地址散列调度(DestinationHashingScheduling) 源地址散列调度(SourceHashingScheduling) 下面,我们先介绍这八种连接调度算法的工作原理和算法流程,会在以后的文章中描述怎么用它们。2.1.轮叫调度 轮叫调度(RoundRobinScheduling)算法就是以轮叫的方式依次将请求调度不同的服务器,即每次调度执行i=(i+1)modn,并选出第i台服务器。算法的优点是其
5、简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。 在系统实现时,我们引入了一个额外条件,当服务器的权值为零时,表示该服务器不可用而不被调度。这样做的目的是将服务器切出服务(如屏蔽服务器故障和系统维护),同时与其他加权算法保持一致。所以,算法要作相应的改动,它的算法流程如下: 轮叫调度算法流程 假设有一组服务器S={S0,S1,…,Sn-1},一个指示变量i表示上一次选择的 服务器,W(Si)表示服务器Si的权值。变量i被初始化为n-1,其中n>0。 j=i; do{ j=(j+1)modn; if(W(Sj)>0){ i=j; returnSi; }
6、 }while(j!=i); returnNULL; 轮叫调度算法假设所有服务器处理性能均相同,不管服务器的当前连接数和响应速度。该算法相对简单,不适用于服务器组中处理性能不一的情况,而且当请求服务时间变化比较大时,轮叫调度算法容易导致服务器间的负载不平衡。 虽然Round-RobinDNS方法也是以轮叫调度的方式将一个域名解析到多个IP地址,但轮叫DNS方法的调度粒度是基于每个域名服务器的,域名服务器对域名解析的缓存会妨碍轮叫解析域名生效,这会导致服务器间负载的严重不平衡。这里,IPVS轮叫调度算法的粒度是基于每个连接的,同一用户的不同连接都会被调度到不同的服务器上,所以这种细粒
7、度的轮叫调度要比DNS的轮叫调度优越很多。2.2.加权轮叫调度 加权轮叫调度(WeightedRound-RobinScheduling)算法可以解决服务器间性能不一的情况,它用相应的权值表示服务器的处理性能,服务器的缺省权值为1。假设服务器A的权值为1,B的权值为2,则表示服务器B的处理性能是A的两倍。加权轮叫调度算法是按权值的高低和轮叫方式分配请求到各服务器。权值高的服务器先收到的连接,权值高的服务器比权值低的服务器处理更多的
此文档下载收益归作者所有