单一登录点技术的边界条件及所要解决的关键问题

单一登录点的定义

什么是单一登录点?虽然人们早已在一定程度上实现并使用了这种技术,但一直没有明确、统一的定义。在系统地研究了现有技术的基础上,我们提出了以下定义。所谓单一登录点是指整个机群系统在网络上对客户具有一个唯一的系统名,客户用此系统名登录到机群,而不需要登录到特定的结点机此处的“登录”不仅仅包括使用telnet登录到机群,而且包括使用HTTP,FTP,NNTP等标准协议访问机群所提供的任何服务。机群的主要目的就是提高系统性能和可用性,由此对单一登录点技术提出以下要求,也就是单一登录点技术所需解决的关键问题:

·单一系统:用户仅知道一个系统名字,而不知道多个子系统的存在

·可扩展:支持用户通过增加资源(如结点机、内存、磁盘等)来提高系统性能时,而单一登录点系统本身及用户无须做任何改动

·高可用:屏蔽内部结点机的软件硬件失败,减少非正常系统停机时间和正常系统维护、升级的停机时间

·负载平衡:实际登录到负载最轻的结点机

·对称:登录到任意的结点机后,看到的系统是一样的

·透明性:系统内部的实现细节对用户不可见

·一致性:当一个用户同时多次登录到机群时,不会引起系统的不一致

·高效:由单一登录点引起的系统开销必须足够小以保证机群的性能

·通用性:单一登录点可支持所有流行的标准协议,如telnet、rcp,ftp,http,smtp,snmp,nntp等。

如果用户提交的负载超过了现有机群系统的硬件能力,应能很容易增加硬件资源来提高系统的性能。单一登录点系统本身及用户程序都不需改变,用户并不知道增加了硬件资源,仅仅感觉到性能好了,延迟小了,吞吐率提高了。可扩展性是机群系统最重要的特性之一,如果选择的平台在不能满足需要时不能扩展则用户必须完全替换整个现有昂贵的设备:可扩展的系统是对用户投资的一种保障。虽然几乎目前所有的单一登录点技术都声称能提供可扩展性,譬如说能够增加服务结点数来提高系统性能,但这种可扩展性往往是受到限制的。像Local Director系统最多能够同时支持800,000个TCP连接,这对一般的应用来说也许可扩展的余地很大。但一旦用户需求大于800,000个TCP连接,这时即使再增加机群的其他资源,Local Director也会拒绝TCP连接请求,导致系统性能没有提高。

高效性指由于增加单一登录点而引起的额外开销必须足够小,这样才能保证机群系统的性能。所谓额外开销主要指用户和服务器之间增加的通讯延时,譬如是否要增加连接的hop数、是否增加数据包的拷贝次数。象使用TCP Router作为单一登录点时,不增加TCP连接的次数,但连接的hop数要加一,引入的通讯延时不到总时间的2%,可以看作一种高效的实现。而基于HTTP重定向的实现当发生重定向时,通讯延时将增加一倍,这就不是一种高效的实现。高效性还要考虑的一个问题就是在很多连接请求到来时,系统能否有效的处理。

为了使用多个网络连接的工作站、服务器来提供某种服务,特别是近年来的WWW站点的负载猛增,人们提出了各种解决方案。虽然其中很多不是基于机群的体系结构,并不能算完全的单一登录点技术,但能够给提供不同的解题思路,值得我们系统的研究。下面我们将按照从客户端到网络、路由器,一直到机群内部的不同技术路线来讨论这些算法的原理、实现及其优劣。

客户机首先如图所示查找本地的配置文件发现授权接收该客户机请求的机群结点,从而发现主结点(Master),并从主结点获取负载最轻结点的名字。机群的每个结点都运行一个LIM(Load Information Manager),向主结点报告其动态和静态的负载信息。然后,客户机与负载最轻的服务器结点建立连接,将客户机当前应用的执行环境传给服务器,环境信息包括用户名、工作目录、环境变量、终端参数、信号信息等。客户机再将要执行的命令传给服务器执行。客户机和服务器通过同一连接传递客户端的输入和服务器端返回的结果。服务器端运行一RES(Remote Execution Server)Daemon,作为客户端与服务器的接口。RES除了提供与客户机应用的通讯外,还存储应用的执行环境、在服务器上启动进程、实现客户端命令并处理客户端传来的UNIX信号。

当用户提出服务请求时,浏览器通过某种自引导机制获得与服务相关的两个Java程序段:一个用户接口程序(clientinter face applet)和一个定向程序(directorapplet)。用户接口程序用来接收用户请求,并将其提交给定向程序。在定向程序中包含了结点集和它们的状态信息,并根据这些信息向合适的服务器结点发出请求。在此基础上Smart Client可以实现可扩展、高可用和负载平衡等一系列功能。机群结点机的状态信息必须定期更新才能有效的实现负载平衡和错误屏蔽,更新的频率可以根据不同的应用要求来决定。

Smart Clients是一种很有新意的技术,它能够实现单一登录点,达到可扩展、高可用、负载平衡的目的,目前已经实现了telnet,ftp,chat等实验项目。旦它依赖于浏览器和Java,通用性不好。同时也还存在许多问题,特别是自动引导机制还很不成熟。

Internet协议的报头可以通过合适的修改使得客户端相信自己在和某一个IP上的服务器通讯,而服务器则认为自己直接和客户端相连。Local Director就是基于以上原理,本质上是一个路由器,并实现Network Address Translator的功能。它将发往机群的虚拟IP的IP包转发给某个结点机,并将其内的目的地址替换为结点机的IP

由结点机发出的应答包也是通过Local Director送往用户,同时将源地址换为机群的虚拟IP。Local Director仅仅支持对TCP包的转发,它用一张表记录当前所有的TCP连接(包括:源地址,源端口号,目的地址,目的端口号等项)。当每一个TCP包到达时,Local Director将查询此表得到目的结点机的地址;而当每个TCP同步包到达时,根据负载平衡算法产生一条新的TCP连接表项;同时,当一个TCP连接撤消时,相应的表项也被删除。

LocalDirector作为一个独立的产品,它不需要更改任何用户和服务器就能实现单一登录点包括唯一的IP地址、可扩展性、高可用性和负载平衡能力。也正是由于它的独立性,Localirector使用的负载平衡算法无法考虑结点机和应用的状态,其效果不可能达到最佳。此外,作为机群前端路由器实现的根本限制,所有进出机群的IP包都要经此路由器的处理,有可能成为系统性能的瓶颈和单一故障点。

TCPRouter本质上也是基于网络地址转换(NAT)。机群只有一个域名,也只有一个IP,就是其路由结点的IP(图中的RA)。用户请求由此结点分发给各个服务结点,并将每个IP包中的目的地地址换成所选的结点机的地址。结点机的应答IP包将直接送给用户,而不再通过路由结点。为了保持无缝的TCP连接,服务结点将路由结点的IP一而不是它自己的IP一作为应答包的源地址。

一般来说,用户请求包的大小远远小于应答包,将应答包饶过路由结点将大大减轻其负担一个路由结点可支持的服务结点可高达70个左右,系统的可扩展性明显优于LocalDirector的实现方法,而且一次连接的额外开销也减少了。除此之外,由于路由结点和服务结点紧密相连,可以实现更精诵的负载平衡算法。当然,这些优点都是在修改操作系统核心的基础上的。不是所有的人都能作到这一点。

我们知道,每台计算机都可以有几个网络界面,譬如说en0,en1等,而且每个网络界面除基本IP地址外都可以设任意个别名。此外,每个机器都有一个本地网络界面(l00)其地址一般设为127.0.0.1,但我们也可以为其增加几个别名。所有这些地址在系统中是怎么组织的呢?当网卡驱动程序将发往其硬件MAC地址的Packet上交到IP层时,系统是怎么处理的呢?在系统中,每一个网络界面都有一个ifnet结构来标识,在ifnet结构中有一个ifaddr结构保存次网络界面的硬件MAC地址及所有的IP地址。每个IP地址由in_ifaddr结构表示,所有的in_ifaddr结构通过ifa_next指针组成一个链,链头保存与ifaddr结构之中。于此同时,系统中所有的in_ifaddr结构都通过isnext指针链接在一起,链头为一核心全局变量inifaddr(如图所示)。

我们注意到,一个主机在接收到一个IP包后,可以选择只搜索接收网络界面的ini.faddr链,如果未能匹配则将其丢弃,在RFC1122(Request for Comment,Network Working Group)中把这种系统称为Strong-end-system模型。但是,在Weak-end-system模型中,系统将搜索所有网络界面的ini.faddr链。所有基于BSDNET/3的网络系统和Window95/NT都是按weak-end-system模型实现。简单的说,服务器聚集就是用一个高效的“大而全”来取代多

个低效的“小而全”。同时,如果客户需要,服务器聚集也可以配置成多个紧密的“小而全”。尽管不一定用服务器聚集这个名词,但从Compaq,Sun到IBM等国外大厂商都已在开发支持服务器聚集的产品和技术。一个明显的例子是SunUltraEnterprise10000的设计。该系统本身是个SMP,但为了支持服务器聚集,Sun开发了“动态系统区域(Dynamic System Domain)”技术,可以故意把一台机器分解成几台独立的子系统,以支持集中在一起的多个独立服务器。曙光2000‘超级服务器的一个主要用途就是服务器聚集,因此Power Router需要支持多个虚拟机群系统。

从用户的角度介绍了Power Router的系统构成,下面我们介绍Power Router的核心扩展部分。Power Router的核心由以下四部分组成(如图所示):

1)Executor,执行器。Executor是Power Router的核心工作部件,它完成基于端口的TCP包的转发。它根据机群系统所注册的服务和当前Power Router的连接记录把发往不同端口的IP包转发到合适的Server结点上,并更新当前的连接一记录。在实现中,我们用自己的PR_tcp_input函数来替代系统TCP/IP协议开关表中的tcp_input函数,Executor所有的工作都是在PR_tcp_input中完成的。

2)Manager,管理器。Manager用来维护更新系统的状态,并完成Power Router的负载平衡功能。它负责系统资源的回收,并收集Executor的有关状态统计信息和从Mornitor/Advisor反馈回来的Server结点的负载状态信息,再根据这些信息来决定Server结点的选择。Manager的工作都是一些周期性的工作,关系到许多计时器,所以我们通过系统的tcp_slowtimeout来启动Manager etcp_slowtimeout每500ms执行一次

3)Monitor,监视器。Monitor负责监视Server结点的状态并接收从Server结点发来的负载信息。Monitor还可以接收针对不同服务和应用相关的Server端状态,并转交给其相应的Advisor处理。在高可用的系统模式下,Monitor还要负责监视Primary/Standby Power Router结点的状态。在实际系统中,Power Router启动monitord监听某UDP端口,收集从各Server结点送来的状态信息。

4)Advisor,建议器。引入Advisor主要是为了针对各个不同的服务性质而使用的不同负载平衡算法。譬如说,针对HTTP协议,其负载平衡算法对己建立的连接数的敏感要远小于FTP协议对已建立的连接数的敏感;而FTP协议则主要要考虑Server结点的磁盘负载状态。

参考文献:

[1]Ronald.W.Wolf.Stochastic Modeling and The Theory of Queues

[2]卢荧基于进程迁移的高可用系统,中科院计算技术研究所硕士学位论文1996年5月30日

[3]樊昌信,张甫栩,徐炳祥,吴成柯.通信原理(第5版).国防工业出版社.2002.1

[4]褚振勇,翁木云.FPGA设计及应用.西安电子科技大学出版社,2002

[5]王志华,邓仰东.数字集成系统的结构化设计与高层次综合.清华大学出版社,2000.7

[6]曾繁泰,陈其美.VHDL程序设计.清华大学出版社.,2001.1

[7]金西.VHDL与复杂数字系统设计.西安电子科技大学出版社,2003

展开阅读全文

页面更新:2024-05-16

标签:机群   目的   结点   客户机   负载   边界   状态   条件   关键   地址   服务器   用户   系统   技术

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top