首页 理论教育 新负载均衡调度算法设计流程

新负载均衡调度算法设计流程

时间:2023-10-17 理论教育 版权反馈
【摘要】:Linux虚拟服务器集群系统已经实现的负载均衡调度算法,并没有很好地将系统后台具体服务器的实时负载状况纳入算法的考虑范围之内。在这方面,PCW负载均衡调度算法考虑到了Linux虚拟服务器中已有的主要的四种算法的不足,在对具体服务器权重值大小进行计算的同时,考虑到了对应的具体服务器的整体性能水平及其实时负载程度。

新负载均衡调度算法设计流程

(一)问题的提出

Linux虚拟服务器集群系统已经实现的负载均衡调度算法,全部都只是针对后台具体服务端与客户端之间的网络连接进行任务分配,而没有考虑到各个连接所要求的计算机资源或计算量之间明显存在的差异性。因为同一个进程或是相同的几个用户连接在某台具体计算机上所生成的进程,可能会很顺畅地就能运行起来,可是到了性能较差的具体服务器之上则未必能行。

Linux虚拟服务器集群系统已经实现的负载均衡调度算法,并没有很好地将系统后台具体服务器的整体性能水平纳入算法的考虑范围之内。简单轮询算法和简单最小连接算法完全没有考虑到后台具体服务器的整体性能水平。加权轮询算法和加权最小连接算法虽然以一个权重值来代表服务器的性能水平,但仅仅以一个数值来代表对应的具体服务器的权重值,显得有些简单,因为管理员只能对一个数值进行设置,数值的代表性以及管理员可设置的灵活性不足。

Linux虚拟服务器集群系统已经实现的负载均衡调度算法,并没有很好地将系统后台具体服务器的实时负载状况纳入算法的考虑范围之内。简单轮询算法和加权轮询算法完全没有考虑到后台具体服务器的实时负载水平。简单最小连接算法和加权最小连接算法采用简单的方法,仅仅用代表服务器的运行的连接数的一个数值来简单代表对应的服务器的负载水平,这显然是将问题过于简单化。影响计算机的负载水平的因素包括很多方面,如CPU的使用率、内存的使用率、网络带宽等。若不对这些重要因素加以考虑,而仅仅以连接数来代表服务器的负载水平,显然会严重影响到算法的负载均衡效果。

(二)PCW负载均衡调度算法的设计思路

1.思路之一:权重值相关设置的考虑因素

要设计出一个具有良好负载均衡效果的负载均衡算法,一个极为关键的要素是在集群系统的前端负载均衡调度器在转发用户的连接请求前,一定要从该集群系统的后台中选择一台合理的具体服务器来接受用户的连接请求。如果负载均衡算法设计得不好,比如说将网络用户连接请求转发到正处在高负荷运行中的具体服务器,就可能导致该具体服务器出现响应时间过长甚至是更为严重的问题。或者由于负载均衡算法设计得不对,不能根据具体服务器的实时负载水平做出相应的调整,也可能会将很多用户连接请求一直都转发到一台其认为是性能较好的服务器之上,对于整个Linux虚拟服务器集群系统来说,或许集群系统暂时可以处于正常运行的状态,但要是这个系统在这种状况下运行一段时间之后,最终很可能会出现运行不稳定的现象。

要从后台选出一台好的具体服务器,可以从多方面进行考虑。但在理想的情况下,应该要能够从所处的集群系统的后台中选择出一台实时负载水平最低且性能最好的具体服务器。这样选出的具体服务器,可以使新接收的用户的连接所提交的任务对已接收连接的用户所提交的任务的运行的影响降到最小,并且可以使新连接的所提交的任务能够得到较快速的运行。当然,这样的选择还可以使整个Linux虚拟服务器集群系统的综合性能得到最好的利用与发挥。但是,这种选择也使很多问题出现了。第一个问题,具体服务器的实时负载水平受到多个因素的影响,如何考虑这些因素,以选择一台实时负载水平最低的服务器。研究发现,具体服务器的负载程度不仅与该具体服务器所接收任务的轻重有关,还与其配置成该服务器的计算机的原始整体性能水平密切相关,应该将这具体服务器的实时负载程度和具体服务器的整体性能水平两个因素同时加以考虑。一般来说,整体性能水平越好的具体服务器应该被分配更多的网络用户连接请求,而实时负载水平越低的具体服务器也应该得到较多网络用户连接请求。第二个问题,即如何确定具体服务器的性能水平以及如何确定服务器的实时负载程度。

在这方面,PCW负载均衡调度算法考虑到了Linux虚拟服务器中已有的主要的四种算法的不足,在对具体服务器权重值大小进行计算的同时,考虑到了对应的具体服务器的整体性能水平及其实时负载程度。

PCW负载均衡调度算法的具体做法是:负载均衡调度器首先研究并选择几个对服务器的性能水平和负载程度存在较大影响的因素,对其进行量化处理,然后将这些量化后的数值综合起来,得到对应的服务器的综合性能参数和综合负载参数。一方面,具体服务器的综合性能参数越大,应该被赋予较大的权重值;另一方面,具体服务器的综合负载参数越大,该具体服务器对应的权重值越小。由于这两个参数给具体服务器的权重值设置所带来的两面性,我们在PCW负载均衡调度算法的设计中,不仅要综合考虑具体服务器的性能水平与实时负载程度,还要设计出一种好的转换方法,来得到对应的具体服务器的权重值。所得出的权重值的数值越大,代表对应的具体服务器的实时整体性能水平越高,或者是说对应的具体服务器可以接收较多的新的用户连接请求。反过来理解,权重值越小,其所代表的具体服务器的实时整体性能水平越低,负载均衡调度器应该向其转发数量较少的用户连接请求。所以,负载均衡调度器在分配所接收到的用户连接请求时,就能够直接按照该权重值进行分配。

这里举一个具体的实例说明。我们可以将在Linux虚拟服务器集群系统中后台的具体服务器的全体用一个集合来表示:S={Si,i=1,2,…,n},将第i台后台的具体服务器的权重值用W(Si)来表示。这里为了举例方便,将n假设为3,即后台总共有3台具体服务器。采用PCW负载均衡调度算法的设计思路,假设计算出了集群系统后台3个具体服务器的权重值分别为: W(S1)=20、W(S2)=40、W(S3)=40,具体的计算方法后面还要做深入的研究。那么集群系统前端的负载均衡调度器就可以直接按照三个权重值大小之间的比例关系(这句话说明比例是1:2:2 ),对所接收到的用户连接请求直接进行分配。比如说在计算出了具体服务器的新的权重值后,网络来了20(总用户是20)个用户连接请求,那么负载均衡调度器就会分别给集群系统后台中那3台具体服务器分别转发4个、8个、8个用户连接请求。

因为,三台一共20个用户,就是W(S1)+W(S2)+W(S3)= 20,W(S1):W(S2):W(S3)=1:2:2,因此,为4个、8个、8个用户。

最后还要补充一点,在一般的服务器使用中,服务器的实时性能水平不仅与其综合硬件性能水平相关,还与服务器本身的稳定性有一定的联系。即使是同等配置的服务器,可能由于各自真正工作时间的长短不同、安置环境的不同、散热性能不同等因素,也会导致其运行的可靠性存在差异。所以,应该根据各台具体服务器的历史运行稳定程度,对各台具体服务器的综合性能水平做进一步调整。比如,对于平时运行稳定性不足的具体服务器应该适当降低其对应的综合性能水平;而对于平时运行稳定性具有良好记录的具体服务器应该适当提高其对应的综合性能水平。这样就使综合性能水平这个参数可以更加真实地反映对应的具体服务器的情况。

因此,对于计算机权重值的计算,不仅要考虑到对应的具体服务器的性能水平,还要考虑到该具体服务器的负载程度。PCW负载均衡调度算法就是严格按照这一条思路设计出来的,这种方法不仅使PCW负载均衡调度算法方便了负载均衡调度器对用户连接请求的分配过程,还更有利于实现集群系统中后台具体服务器的负载平衡

2.思路之二:权重值的计算思路

从前面的研究中得出一个结论,即应该综合考虑具体服务器的性能水平及其实时负载程度来得到具体服务器的权重值。在这方面,PCW负载均衡调度算法的思路是选取能够代表服务器性能水平的一些指标,以及能够代表服务器实时负载程度的一些指标。然后通过一定的方法,将这些指标综合起来,分别得到相应具体服务器的综合性能参数和综合负载参数。具体的操作方法在后面的章节还要做具体的阐述。那么能够影响具体服务器整体性能水平和实时负载水平的软硬件的因素那么多,应该选择哪些作为性能指标和负载指标呢?(www.xing528.com)

为了避免获取计算较多的性能指标和负载指标而对整个集群系统的性能或是响应速度产生影响,所选取的指标种类和数量不能过多,应该尽可能做到少而精。本算法对于选取性能指标和实时负载指标的思路要尽量选取一些对具体服务器性能,或实时负载程度影响较大的一些指标值。经过深入的比较和研究,对于性能指标值,PCW负载均衡调度算法所选取的指标值包括CPU处理速率与CPU个数的乘积所得到的值、内存容量大小、磁盘最大读写速率、网络最大带宽等。由于负载水平正是对于这些性能值的消耗,相应的本算法直接就选取对应于性能指标的如下4个数值来作为具体服务器的负载指标值,即CPU利用率与CPU处理最大速率以及CPU的个数这三者的乘积所得到的值、内存使用量的大小、磁盘平均读写速率的大小、平均网络速率的大小等。

这些参数的选取理由有:CPU利用率表明当前系统运行的用户进程占用CPU时间的份额,要是新连接请求被发送到CPU利用率低的服务器,那么将减少新连接对原有的连接的CPU使用的影响。内存使用率越大,表明当前系统的可用内存就越小,这将限制服务器再次接收连接请求的数量。磁盘读写速率越高,再次接收的连接进程在读取文件系统时的可用速率就越低,对系统的响应时间造成影响。网络带宽占用率越低,表明服务器与外界的沟通越顺畅;进程数量占用率,实时服务器中进程数量占服务器可正常运行的最大集成速度的比率越小,表明当前的服务器的可再次接收客户连接的能力越强。当然,影响具体服务器的性能水平或其实时负载程度还有很多的因素,如有关服务器平时运行稳定程度,以及所使用的硬件的具体生产厂商等。为了避免过多的参数给算法增加复杂程度,在PCW负载均衡调度算法中将不考虑这些指标。如果需要,在以后对PCW负载均衡调度算法的进一步的改善中再做研究。

这样,负载均衡调度器就可以分别根据这4个实时负载指标数据和4个性能指标数据配合对应具体服务器的运行稳定性水平系数计算出对应具体服务器的综合负载参数和综合性能参数,并最终计算出这些具体服务器的权重值。

3.思路之三:负载均衡调度器获取指标的方式

PCW负载均衡调度算法的思路如下:由于具体服务器的性能指标并不会随着集群系统的运行而发生改变,所以,对于性能指标,可以在集群系统运行开始的时候直接让负载均衡调度器发送命令,让集群系统后台的具体服务器立即检查自己的性能指标值,并将这些数据进行反馈。为了不对集群系统的性能产生较大的影响,不能频繁地要求服务器向负载均衡调度器发送这些指标值。对于负载指标就有所不同,因为这些负载指标值会随时发生改变。所以对于负载参数,应该在集群的运行过程中,实时获取这些参数。但是PCW负载均衡调度算法在这方面采用了一个折中的方案,具体是:在集群的运行过程中,不让负载均衡调度器主动发送命令要求服务器发送其负载参数,而是让具体服务器循环定时读取自己的负载指标值,并且是在这些标值发生了明显的变动情况下(如某个指标值的已经出现了10%的变化率),才将这些数值发送给负载均衡调度器。这样就可以避免负载均衡调度器发送命令,以及服务器频繁发送负载指标而给它们之间的网络连接及其各自的性能造成更多的额外压力

关于获取负载指标值的频率值的设定,要根据集群系统的实际运行环境,以及集群系统在实际的运行过程中后台各台具体服务器本身的负载变化的频率大小来决定。如果服务器的负载变化频率越大,就应该让服务器进行更多的负载指标值的读取与检查,反之就应该尽量减少检查次数。而且,这个频率值在PCW负载均衡调度算法中被定义为一个变量,可以让管理员在集群系统的运行过程中进行实时动态的调整。这正好体现了PCW负载均衡调度算法具有更高的灵活性。通过实际的测试实验表明,在一般的实验环境中,服务器读取负载指标的频率一般是10~20秒每次。

4.思路之四:第一个需要考虑的特殊情况

从上面的PCW负载均衡调度算法的思路叙述中可以发现,只有集群系统启动时,负载均衡调度器才会给后台各台具体服务器发送命令,要求它们将各自的性能参数和负载参数发送给它,其他时间都靠具体服务器自己定时上报各自的负载指标。如果某台具体服务器由于某些原因出现停机,负载均衡调度器要怎样才能及时得到负载指标数值,并且在该具体服务器恢复正常之前,不向该具体服务器转发用户的连接请求?那么,由于某台具体服务器负载过重,未能及时向负载均衡调度器发送负载指标数据,负载均衡调度器应该如何应对这种情况呢?

为了应对这些在具体服务器中可能出现的情况,PCW负载均衡调度算法进行了巧妙的设计,就是让负载均衡调度器定时给后台服务器发送不要求其能马上响应的信号命令。如果后台的具体服务器能够在指定的时间段内对该命令进行响应,负载均衡调度器就可以认为该具体服务器还在正常地运行着。如果某台具体服务器在超过了规定的时间后,还不能及时发回响应,负载均衡调度器就会认为该具体服务器出现了负载过重或者宕机等情况,并且不再向该具体服务器发送任何用户连接请求。但是,负载均衡调度器下次仍然会向该具体服务器发送信号命令。如果该具体服务器能够在指定的时间段内响应,那么负载均衡调度器就会认为该具体服务器已经恢复到正常的状态。接着,负载均衡调度器会向其发送命令,要求其将性能指标值和负载指标值重新发送给它,并根据这些指标值重新计算出该具体服务器的权重值后,再根据该权重值的大小向该具体服务器发送新接收到的用户连接请求。当然,如果对应的具体服务器没能在预先设定的次数内及时响应,具体服务器就有可能是出现了宕机的情况。此时负载均衡调度器会及时将对应的具体服务器的IP地址记录下来,并将这一情况通过邮件形式向系统管理员汇报。

所以,PCW负载均衡调度算法可以很好地应对集群系统中某台具体服务器出现的运行不正常这种特殊情况,并且还能够使整个集群系统处在正常的运行状态,并继续为用户提供服务。

5.思路之五:第二个需要考虑的特殊情况

在集群系统中,除了上面研究到的特殊情况外,还有另一种较为特殊的情况需要在负载均衡算法中进行设计,并多加注意。即在一般的网络环境中,可能因为网络用户发送的连接请求包在短时间内的急剧增长,或网络用户发送的连接所提交的任务的运行时间较短,而使所在具体服务器上实时活跃的连接数量在较短时间内出现快速减少的现象。对此问题,负载均衡调度器要如何才能及时了解到具体服务器的这个情况,并对其权重值做出相应的调整?

PCW负载均衡调度算法为了应对这种情况的发生也做了相应特殊而巧妙的设计。具体做法是,使集群系统后台的每台具体服务器对接受的每一个用户连接进行累加登记,而在有一个用户连接在退出时做相应的递减登记,并且在具体服务器的实时运行的连接个数在增加或者是减少数量达到了15个的时候,该具体服务器本身就要对其自身的负载指标数据扫描一次。如果有某个负载指标值的变化程度已经超过了10%,那么就将这些负载指标数据汇总后发送给集群系统前端的负载均衡调度器。

因此,通过PCW负载均衡调度算法这种简单而巧妙的设计,负载均衡调度器就可以及时了解集群系统中各台具体服务器的实时负载状况,以及具体服务器可能出现的实时负载在短时间内出现大的变化,并依据接收到负载指标值重新对该具体服务器的权重值进行计算,进而影响到后续的用户连接向该台具体服务器的分配比例。所以,在PCW负载均衡调度算法中,这个问题可以得到比较好的解决方法。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈