• Linux频道
  •  新手入门 | Linux编程 | 系统管理 | 网络管理 | Linux认证 | Unix/BSD | 博客日志 | Linux论坛                
 您现在的位置: 中国IT实验室 >> Linux >> 网络管理 >> Linux服务器 >> 文章正文
  
  • 集群的负载平衡原理和实现算法
    文章来源 ChinaITLab收集整理 作者 佚名   2006-4-28 保存本文 保存本文 推荐给好友 推荐给好友 收藏本站 收藏本站

      在计算机硬件价格下降、计算机网络拓扑发展的情况下,分布式计算机系统给用户提供了一个丰富的资源集合。人们在研究分布式系统时,就注意到了这样一个问题:在一个由网络连接起来的多计算机环境中,在某一时刻,一些计算机的负载比较重,而另外一些计算机的负载却比较轻。平衡各计算机之间的负载是任务分配与调度的一个主要目标,它能够提高整个系统的性能。

      为了改善系统的性能,通过在多台计算机之间合理地分配负载,使各台计算机的负载基本均衡,这种计算能力共享的形式,通常被称为负载平衡或负载共享。一般来说,"负载平衡"要达到的目标是使各台计算机之间的负载基本均衡,而"负载共享"意味着只是简单的负载的重新分配。

      负载平衡包括两种,一种是静态负载平衡,一种是动态负载平衡。只是利用系统负载的平均信息,而忽视系统当前的负载状况的方法被称为静态负载平衡。根据系统当前的负载状况来调整任务划分的方法被称为动态负载平衡。

      导致负载不平衡主要是由于:

    1. 某些算法的迭代大小不是固定的,但迭代的大小在编译时却可以被求得;
    2. 某些算法的迭代大小不是固定的,并且迭代的大小依赖于被处理的数据,在编译时无法求得;
    3. 即使迭代大小是固定的,也会有许多不定因素导致计算速度的差异。

      考察这三个原因,对第一种情况可在编译时估计各迭代的工作量,按照处理节点的处理能力分布迭代,这就是静态负载平衡的方法。对第二、三种情况来说,必须采用动态负载平衡的手段,在运行过程中根据各个处理节点完成任务的情况,动态地迁移任务,实现动态负载平衡。进行动态负载平衡需要考察处理节点的处理能力,它的基本依据是根据处理节点先前的处理速度预见未来的处理速度。

      负载平衡算法

      一个负载平衡算法都包含以下三个组成部分:

    1. 信息策略:制定任务放置策略的制定者使用的负载和任务量,以及信息分配的方式。
    2. 传送策略:基于任务和计算机负载,判断是否要把一个任务传送到其它计算机上处理。
    3. 放置策略:对于适合传送到其它计算机处理的任务,选择任务将被传送的目的计算机。

      负载平衡的上述三个部分之间是以不同的方式相互作用的。放置策略利用信息策略提供的负载信息,仅当任务被传送策略判断为适于传送之后才行动。

      总之,负载平衡的目标是:提供最短的平均任务响应时间;能适于变化的负载;是可靠的负载平衡机制。

      信息策略

      人们用来描述负载信息采用的参数有:

    1. 运行队列中的任务数;
    2. 系统调用的速率;
    3. CPU上下文切换率;
    4. 空闲CPU时间百分比;
    5. 空闲存储器的大小(K字节);
    6. 1分钟内的平均负载。对于这些单个的负载描述参数,第(1)个,即采用运行队列中的任务数作为描述负载的参数被证明是最有效的,即它的平均任务响应时间最短,并且已经得到广泛应用。但是,如果为了使系统信息更全面而采集了更多的参数,则往往由于增加了额外开销,却得不到所希望的性能改善。例如,采用将六个参数中的某两个进行"AND"或"OR"组合,得到的平均响应时间反而比单个参数的平均响应时间还要差一些。

      传送策略

      为了简单起见,在选用传送策略时,多选用阀值策略。例如,Eager等人的方法是:在判断是否要在本地处理一个任务时,无需交换计算机之间的状态信息,一旦服务队列或等待服务队列的长度大于阀值时,就传送这个任务,而且传送的是刚刚接收的任务。而进程迁移能够迁移正在执行的任务,是对这种只能传送刚刚接收的任务的一种改进。

      Zhou在模拟研究七个负载平衡算法时,其传送策略都采用阀值策略。它的阀值策略基于两个阀值∶计算机的负载阀值Load和任务执行时间阀值TCPU。如果计算机的负载超过Load并且任务的执行时间超过TCPU时,就把此任务传送到其它计算机执行。

      放置策略

      经过总结,共有以下四种放置策略。

    1. 集中策略。每隔P秒,其中一个计算机被指定为"负载信息中心"(LIC),接受所有其它负载的变更值,并把它们汇集到一个"负载向量"中,然后把负载向量广播给所有其它的计算机。当一台计算机认为一个任务适于传送到其它计算机上执行时,它就给LIC发送一个请求,并告知当前负载的值。LIC选一台具有最短运行队列长度的计算机,并且通知任务所在的计算机把任务发送给它,同时,它把目的主机负载值增加1。
    2. 阀值策略。随机选择一台计算机,判断若把任务传送到那台计算机后,那台计算机的任务队列长度是否会超过阀值。如果不超过阀值,就传送此任务;否则,随机选择另一台计算机,并以同样方式判断,继续这样做直到找到一台合适的目的计算机,或探测次数超过一个静态值限制LP,当任务真正到达计算机以后,不管状态如何,必须处理该任务。
    3. 最短任务队列策略。随机选择LP台不同的计算机,察看每台计算机的任务队列长度,任务被传送到具有最短任务队列长度的计算机。当任务真正到达计算机,无论状态如何,目的计算机必须处理该任务。对此策略的一个简单改进时,无论何时,遇到一台队列长度为0的计算机时,不再继续探测,因为可以确定此计算机是一台可以接受的目的计算机。
    4. 保留策略。当一个任务从一台计算机离开时,该计算机检查本地负载,如果负载小于阀值T1,就探测其它计算机,并在R个负载大于T1的计算机中登记该计算机的名字,并把登记的内容保留到一个栈中。当一个任务到达一台超载的计算机时,就把这个任务传送到此台计算机栈顶的计算机上。如果一个计算机的负载低于T1,就清空栈里保留的所有计算机名。

      Zhou的论文中,比较了(2)和(3)三种策略,结论是:以简单(计算不昂贵)的方式,利用少量状态信息,第(2)中方法往往获得比第(3)种方法更好的效果。第(3)中方法比较复杂,它必须用性能的改善来补偿额外花费,所以取得的效果会稍差一些[2]。

     

    [1] [2] 下一页  

    【责编:Kittoy】
      相关产品与培训
    •  相关文章
      解决方案 VMware5安装集群LVS实战解析
      Linux服务器集群系统实现方案解析
      Linux操作系统高性能集群监控管理之道
      安装大型Linux 集群: 配置服务和安装
      安装大型Linux 集群: 简介和硬件配置
      Linux系统下的集群原理及实战经历
      指导:Linux服务器集群技术概述
      架设基于Linux(2.6.14内核)服务器集群
      服务器集群系统实现方案详解
      在Linux 和FireWire上创建自己的RAC 集群
    •  推荐文章
     文章评论
     友情推荐链接
    ·tp-link交换机
    ·tp link交换机报价
    ·tp link交换机价格
    ·tp link网络交换机
    ·tp link 网管交换机
    ·IDC资讯大全
    ·机房品质万里行
    ·IDC托管必备知识
    ·全国IDC报价
    ·网站推广优化
  •    认证培训         更多
       今日更新
       热门专题         更多
       电子书下载
        Linux技术导航
        产品导航