Linux虚拟服务器的结构、调度算法综述

2009-05-13 01:11:19来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


Linux虚拟服务器(LinuxVirtualServer,LVS)建筑于实际的服务器集群之上,用户看不到提供服务的多台实际服务器,而只能看见一台作为负载平衡器的服务器。实际的服务器通过高速局域网或地理上分散的广域网连接。实际服务器的前端是一台负载平衡器,他将用户的请求调度到实际服务器上完成,这样看起来好像所有服务都是通过虚拟服务器来完成的。Linux虚拟服务器能够提供良好的可升级性、可靠性和可用性。用户可以透明地增加或减少一个节点,可以对实际服务器进行监测,如果发现有节点失败就重新配置系统。

结构

LinuxVirtualServer的结构如图1所示。
 


 图1Linux虚拟服务器结构图

调度算法

LVS提供了四种调度算法:轮转调度,加权轮转调度,最少连接调度,加权最少连接调度。

轮转调度(RoundRobinScheduling)
轮转调度不考虑服务器的连接数和响应时间,它将所有的服务器都看作是相同的。当以轮转的形式将连接分发到不同的服务器上。
加权轮转调度(WeightedRoundRobinScheduling)
根据每个机器的处理能力的不同给每个机器分配一个对应的权重,然后根据权重的大小以轮转的方式将请求分发到各台机器。这种调度算法的耗费比其它的动态调度算法小,但是当负载变化很频繁时,它会导致负载失衡,而且那些长请求会发到同一个服务器上。
最少连接调度(LeastConnectionScheduling)
最少连接调度将用户请求发送到连接数最少的机器上。最少连接调度是一种动态调度方法,如果集群中各台服务器的处理能力相近,则当负载的变化很大时也不会导致负载失衡,因为它不会把长请求发送到同一台机器上。但是当处理器的处理能力差异较大时,最少连接调度就不能很好的发挥效能了。
加权最小连接调度(WeightedLeastConnectionScheduling)
根据服务器的性能不同而给它们分配一个相应的权重,权重越大,获得一个连接的机会就越大。有如下的运算方法:(假设共有n台机器,每一台服务器i的权重为Wi(i=1,..,n),活跃连接数为Ci(i=1,..,n),所有的连接数为Ci(i=1,..,n)的总和,下一个连接会发送给服务器j,服务器j满足以下的要求):(Cj/ALL_CONNECTIONS)/Wj=min{(Ci/ALL_CONNECTIONS)/Wi}(i=1,..,n)由于ALL_CONNECTIONS是一个常数,因此上面的式子可以优化为:Cj/Wj=min{Ci/Wi}(i=1,..,n)

负载平衡方法

LVS提供了三种IP级的负载平衡方法:VirtualServerviaNAT、VirtualServerviaIPTunneling、VirtualServerviaDirectRouting。

VirtualServerviaNAT方法使用了报文双向重写的方法,VirtualServerviaIPTunneling采用的是报文单向重写的策略,VirtualServerviaDirectRouting采用的是报文转发策略,这些策略将在以后的文章中详细描述。

MOSIX

MOSIX为Linux核心增添了集群计算的功能。它支持的操作系统平台有BSD/OS和Linux,它允许任意多个基于X86/Pentium的服务器和工作站协同工作。在MOSIX集群环境中,用户无需对应用程序进行修改,或将应用程序与库连接起来,或将应用程序分配到不同的节点上运行。MOSIX会自动将这些工作透明地交给别的节点来执行。

MOSIX的核心是适应性的资源管理算法,它对各节点的负载进行监测并做出相应的回应,从而提高所有进程的整体性能。它使用抢先的进程迁移方法来在各节点中分配和再分配进程,从而充分利用所有的资源。适应性的资源管理算法具体上又包括适应性的负载平衡算法、内存引导算法和文件I/O的优化算法。这些算法都对集群中的资源使用情况的变化做出响应。如:节点上的不平衡的负载分布或由于内存不足而导致的过多的磁盘换入换出。在这种情况下,MOSIX将进程从一个节点迁移到另外一个节点上,从而来均衡负载或将进程迁移到有足够的内存空间的节点上。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Linux下Telnet、ssh服务的配置和使用

下一篇:Linux下的CIPE服务器配置