Linux虚拟服务器的结构、调度算法综述
核心提示:文章标题:Linux虚拟服务器的结构、调度算法综述。Linux是中国站长站的1个技术频道。包括桌面利用,Linux系统治理,内核研究,嵌进式系统和开源等1些基天职类
Linux虚拟服务器(LinuxVirtualServer,LVS)建筑于实际的服务器集群之上,用户看不到提供服务的多台实际服务器,而只能看见1台作为负载平衡器的服务器。实际的服务器通太高速局域网或地理上分散的广域网连接。实际服务器的前端是1台负载平衡器,他将用户的要求调度到实际服务器上完成,这样看起来仿佛所有服务都是通过虚拟服务器来完成的。Linux虚拟服务器能够提供良好的可升级性、可靠性和可用性。用户可以透明地增加或减少1个节点,可以对实际服务器进行监测,假设发现有节点失败就重新配置系统。
结构
LinuxVirtualServer的结构如图1所示。
图1Linux虚拟服务器结构图
调度算法
LVS提供了4种调度算法:轮转调度,加权轮转调度,最少连接调度,加权最少连接调度。
轮转调度(RoundRobinScheduling)
轮转调度不考虑服务器的连接数和响应时间,它将所有的服务器都看做是相同的。当以轮转的情势将连接分发到不同的服务器上。
加权轮转调度(WeightedRoundRobinScheduling)
根据每个机器的处理能力的不同给每个机器分配1个对应的权重,然后根据权重的大小以轮转的方式将要求分发到各台机器。这类调度算法的耗费比其它的动态调度算法小,但是当负载变化很频繁时,它会导致负载失衡,而且那些长要求会发到同1个服务器上。
最少连接调度(LeastConnectionScheduling)
最少连接调度将用户要求发送到连接数最少的机器上。最少连接调度是1种动态调度方法,假设集群中各台服务器的处理能力相近,则当负载的变化很大时也不会导致负载失衡,由于它不会把长要求发送到同1台机器上。但是当处理器的处理能力差异较大时,最少连接调度就不能很好的发挥效能了。
加权最小连接调度(WeightedLeastConnectionScheduling)
根据服务器的性能不同而给它们分配1个相应的权重,权重越大,取得1个连接的机会就越大。有以下的运算方法:(假定共有n台机器,每1台服务器i的权重为Wi(i=1,..,n),活跃连接数为Ci(i=1,..,n),所有的连接数为Ci(i=1,..,n)的总和,下1个连接会发送给服务器j,服务器j满足以下的要求):(Cj/ALL_CONNECTIONS)/Wj=min{(Ci/ALL_CONNECTIONS)/Wi}(i=1,..,n)由于ALL_CONNECTIONS是1个常数,因此上面的式子可以优化为:Cj/Wj=min{Ci/Wi}(i=1,..,n)
负载平衡方法
LVS提供了3种IP级的负载平衡方法:VirtualServerviaNAT、VirtualServerviaIPTunneling、VirtualServerviaDirectRouting。
VirtualServerviaNAT方法使用了报文双向重写的方法,VirtualServerviaIPTunneling采取的是报文单向重写的策略,VirtualServerviaDirectRouting采取的是报文转发策略,这些策略将在以后的文章中具体描写。
MOSIX
MOSIX为Linux核心增加了集群计算的功能。它支持的操纵系统平台有BSD/OS和Linux,它答应任意多个基于X86/Pentium的服务器和工作站协同工作。在MOSIX集群环境中,用户无需对利用程序进行修改,或将利用程序与库连接起来,或将利用程序分配到不同的节点上运行。MOSIX会自动将这些工作透明地交给别的节点来履行。
MOSIX的核心是适应性的资源治理算法,它对各节点的负载进行监测并做出相应的回应,从而进步所有进程的整体性能。它使用抢先的进程迁移方法来在各节点中分配和再分配进程,从而充分利用所有的资源。适应性的资源治理算法具体上又包括适应性的负载平衡算法、内存引导算法和文件I/O的优化算法。这些算法都对集群中的资源使用情况的变化做出响应。如:节点上的不平衡的负载散布或由于内存不足而导致的过量的磁盘换进换出。在这类情况下,MOSIX将进程从1个节点迁移到另外1个节点上,从而来均衡负载或将进程迁移到有足够的内存空间的节点上。
由于MOSIX是在Linux的核心中实现的,因此它的操纵对利用程序而言是完全透明的。可以用它来定义不同的集群类型,这些集群中的机器可以相同也能够不同。
与Turbocluster、LinuxVirtualServer、Lsf等集群系统不同的是,MOSIX集群中的每个节点既是主节点又是服务节点,不存在主控节点。对那些在本地节点创建的进程而言,该节点就是1个主节点;对那些从远方节点迁移过来的进程而言,该节点就是服务节点。这意味着可以在任意时刻向集群中增加节点或从集群中删除节点,而不会对正在运行的进程产生不良的影响。MOSIX的另外1个特性就是它的监测算法能够监测每个节点的速度、负载、可用内存、IPC和I/Orate。系统使用这些信息来决定将进程发送到哪个具体的节点上。当在某个节点上创建了1个进程以后,该进程就在这个节点上履行。当该节点的负载超过了1定的阀值以后,就将该进程透明地迁移到别的节点上继续履行。
MOSIX文件系统采取直接文件系统访问的方法,它可以答应迁移到别的节点的进程在本地进行I/O操纵。这样就减少了需要进行I/O操纵的进程与创建该进程的节点之间的通讯,从而答应这些进程更加自由地在集群中的节点中进行迁移。MOSIX文件系统使所有节点都可以像访问本地文件系同1样透明地访问其它节点上的所有目录和文件。
1个低真个MOSIX配置可以包括通过以太网连接起来的多台PC机。1个较大的配置可以包括通过快速以太网连接起来的多台工作站和服务器。高真个MOSIX配置可以包括通过Gigabit-Ethernet连接起来的多台SMP或非SMP工作站和服务器。
5.EDDIE
Eddie的主要目的是提供1些供那些进行重要任务处理的网站使用的工具,从而使这些网站能够提供延续的高级服务。Eddie创建了1个真实的散布式web服务器结构,它支持散布于不同的物理地点的web服务器。它的结构如图5⑴所示。
图2所示的散布式服务器包括两个集群,它们分别是site1和site2。每个集群都包括着1台域名服务器和若干台运行web服务器软件的实际的服务器。当用户敲进1个域名时,首先在LocalDNS上对这个域名进行解析,找出与其对应的IP地址。假设LocalDNS没法对这个域名进行解析,就将此域名发送到AuthoritativeDNS上,AuthoritativeDNS返回应当访问的服务器的IP地址,然后用户便可以够访问指定的服务器上的内容了。
图2 Eddie集群结构图
Eddie主要包括两个软件包:HTTP网关和增强的DNS服务器。如图3所示,在每个站点上增加1个新的服务器(即前端机),在其上运行HTTP网关来接受外界发来的要求并且将要求调度到合适的后端机上履行,DNS服务器上运行增强的DNS服务器软件,通过该软件可以在多个地理上分散的网址上均衡负载。
图3
Eddie主要有以下与众不同的特点:
进步了web服务器的吞吐量。通过提供强大的负载平衡能力,Eddie使用户可以充分利用散布式web服务器中的所有资源。主要在两个地方使用了负载平衡。首前后端机将本机上的负载信息如CPU负载、内存、磁盘延迟、运行队列数据和页面错等信息发送给前端机,前端机根据负载轻重将外界要求发送到合适的服务器上。另外在增强DNS服务器软件中也提供了负载平衡的功能,前端机和后端机的综合负载信息都发送到AuthoritativeDNS服务器上,然后LocalDNS可以根据各个AuthoritativeDNS上的负载的轻重来决定将域名解析的任务发送到哪1台AuthoritativeDNS上。这样便可以够充分利用散布式服务器环境中的所有资源,增强了web服务器的吞吐量。
提供很好的服务质量。首先Eddie通过使用静态和动态负载平衡策略进步了web服务器的吞吐量,减少了用户要求的响应时间;其次,当用户发1个要求时,系统就要检查是否是来自该用户的连接已存在,假设存在,就将要求继续发送到上次对该要求提供服务的服务器上,这样就保证了用户对web访问的延续性。假设没有足够的资源,则将用户要求加进等待队列,并且告知用户它的要求要等待1会儿才会被处理。 http://www.fw8.net/
TAG:服务器,进程,节点,集群,负载
评论加载中...
|
上一篇: 在CentOS下安装配置VNC的进程