关于调度算法还有些问题想请教章老师

关于调度算法还有些迷惑,还想请教章老师几个问题:
1)章老师前面说了LVS可以在不同的网络服务池上进行调度,并且不同的网络服务池可以有交集,那么IPVS负载均衡调度算法是针对每种网络服务进行均衡,还是从整体上进行均衡?IPVS的大多数调度算法似乎是针对每种网络服务进行均衡。如果是针对每种网络服务进行均衡,那么处在交集中的那些服务器的负载从直观上理解似乎高于交集之外的服务器?
举个例子可能说得更清楚些:10台物理服务器(不包括调度器),8台提供www服务,3台提供ftp服务,其中1台(假设称为A服务器)既提供www服务也提供ftp服务,我的理解是IPVS负载均衡的目标是保证提供www服务的8台服务服务器之间的负载均衡,以及提供ftp服务的3台服务器之间的负载均衡。但是这样的话,A服务器的负载是向www服务池,还是ftp服务池看齐呢?假设各个服务器池已经负载均衡了,A服务器的负载是否高于其它的服务器?

2)动态反馈负载均衡算法中,服务器池中的服务器上运行的Agent定期向调度器上的Monitor Daemon报告负载信息,这个负载信息是整个服务器的负载信息,而不是某个服务的负载,然后根据这个负载信息,调节服务器的权值,进而影响调度。那么我想问的是这种权值调整是影响所有服务的调度吗?实际上这个问题和问题1)是有关的,不知动态反馈负载均衡算法适合于1)中所举例子的场景?

不好意思问了这么多,因为我的课题研究和这有些关系,还望指点。

Forums:

对于问题1,我想A服务器确实会同时收到www和ftp服务请求,但A收到收到多少比例的www请求和ftp请求要分别看A在www集群和ftp集群中所设置的权值。如何设置合理的权值使得A的系统负载与其他9台服务器基本一致?就要考虑问题2。

在问题2上,收到A服务器的系统负载后,应该根据负载状况调整A分别在www集群和ftp集群中的权值,这样会调节A服务器分别在www集群和ftp集群中收到的请求。在理论上来讲,这样的动态反馈机制可以使得A的负载和其他服务器基本均衡。

谢谢章老师帮我纠正了一个错误的理解:我原来以为每个服务器只有一个权值,现在才知道可以对不同的服务器池分别设置权值,这样同一个服务器在不同的服务器池中可能有不同的权值。

对于问题2),我想再问一下,如果本身www集群和ftp集群负载差距比较大,比如www负载比较重,而ftp负载很轻,这种情况似乎无法使得这10台机器总体上均衡?而A会向负载较重的www集群靠拢。

我是这样分析的:A的负载只可能介于www集群和ftp集群之间,如果A的综合负载低于www集群中其它机器的负载,则根据负反馈的权值计算公式,A在www集群中的权值会变大,置入内核IPVS中,从而会有更多的www请求调度到A上,使A的负载增加;另一方面,如果A的综合负载高于ftp集群中其它机器的负载,同理,调度到A上的ftp的请求就会减少。总体上是这样一种效果:调度到A上的www请求越来越多,而ftp请求越来越少,最终导致A的负载接近www集群的负载。不知是不是这样一种情况,还望指点。

另外,我想问一下LVS目前应用的一些情况:比如一些大型ISP,它们通常会提供多种网络服务,如www,ftp,email等等,就您所知的情况(最常见的情况),它们在应用LVS时,多种网络服务池之间是一种什么关系,是包含的服务器完全一样,还是有部分交集,还是没有交集?如果多种网络服务池包含的服务器完全一样,是否还需要为每种网络服务分别设置服务器的权值,还是每个服务器只设置一个权值?

章老师在《动态反馈负载均衡算法》一文中提到的综合负载,按我的理解,指的是服务器级别的负载,也就是说,并不专属于真实服务器上某个具体服务(例如www服务)的负载,所以如果每个虚拟服务都按综合负载的公式来计算的话,那么该真实服务器在它参与的所有虚拟服务中的权值都是一致的,它会统一影响该真实服务器参与的所有虚拟服务。

虽然综合负载的波动有可能是某个具体服务造成的,例如www服务要占用较多的CPU资源来进行计算工作,或者,因为www用户数骤增而导致www服务进程占用大量的内存和网络流量,而这里唯一可以和具体服务挂钩的负载信息只有服务的响应时间,但我认为即使真实服务器上运行多个服务,这种综合负载的计算也是合理的。试想一下,如果www服务占用了大量的CPU资源,那ftp服务的性能也肯定会下降,这时自然就要减少该真实服务器在每个虚拟服务中的权值。

randomness