控制集群计算环境的系统通信量的方法、系统和程序产品的制作方法

文档序号:6469063阅读:138来源:国知局
专利名称:控制集群计算环境的系统通信量的方法、系统和程序产品的制作方法
技术领域
一般地说,本发明涉及分布式计算环境,特别是涉及对分布式计算环境的节点的一个或多个集群的管理。
背景技术
分布式系统是高可用性和可伸缩的系统,它们应用于各种场合,包括那些需要高工作吞吐量或系统连续或近似连续可用的场合。
具有共享资源能力的分布式系统称作集群。一个集群包括若干个操作系统实例,它们共享资源并彼此协调以完成系统任务。尽管今天存在各种集群系统(如国际商用机器公司提供的RS/6000 SP系统),但仍然希望使现有的集群系统进一步增强。例如,希望增强以利于对集群系统的管理。
根据本发明的一个方面,提供了一种控制集群计算环境的系统通信量的方法,该方法包括对于一种要提供的服务,把一个或多个节点地址映射到为该服务定义的一个或多个网络对象;从一个或多个网络对象得到该服务的一个或多个优选权,以及根据这一个或多个优选权接触该服务。
这里还描述和申明了与上文概括的方法相对应的系统和计算机程序产品。
通过本发明的技术,还实现了其他特点和优点。这里详细描述了本发明的其他实施例和方面,这些被认为是所申明的发明的一部分。
在本说明书结尾的权利要求中特别指出和清楚地申明了认为是作为本发明的要点。


为了更好地理解本发明,现在将通过举例参考附图,其中图1描绘含有和使用本发明各方面的计算环境的一个实例;图2描绘根据本发明一个方面的具有多个集群的计算环境的一个实施例;图3描绘根据本发明一个方面的集群节点的状态的一个实施例;图4描绘根据本发明的一个方面所使用的一个集群体系结构的部件的一个实施例;图5描绘根据本发明一个方面的一个集群环境的一个实施例,在该集群环境中图4的系统注册部件只位于该环境的一部分节点上;图6描绘根据本发明一个方面的集群体系结构各部件数据从属性的一个实例;图7描绘根据本发明一个方面的集群体系结构各部件功能依赖性的一个实例;图8描绘根据本发明一个方面的自举过程的事件和消息流序列的一个实施例;图9a描绘根据本发明一个方面的集群定义数据结构的一个实施例;图9b描绘根据本发明一个方面的节点定义数据结构的一个实施例;图9c描绘根据本发明一个方面的注册服务器节点清单的一个实施例;图10描绘根据本发明一个方面的本机存储数据字段的一个实例;图11描绘根据本发明一个方面的集群系统的唯一节点标识符的一个实施例;图12描绘参加到本发明的节点定义过程中的那些过程的一个实施例;图13描绘根据本发明一个方面的节点定义过程的事件和消息流序列的一个实施例;图14描绘由本发明的自动集群配置技术所使用的各种过程的一个实例;图15描绘为提供本发明的自动集群配置在图14的各过程之间消息流的一个实例;
图16描绘根据本发明一个方面被定义于多个集群的节点的一个实例;图17描绘根据本发明一个方面从一个集群移动到另一个集群的一个节点的一个实例;图18描绘根据本发明一个方面从一个集群移动到另一个集群中的过程所用事件和消息流序列的一个实施例;图19描绘根据本发明一个方面的节点地址定义数据结构的一个实例;图20描绘根据本发明一个方面的子网定义数据结构的一个实例;图21描绘根据本发明一个方面的网络定义数据结构的一个实例;图22描绘根据本发明一个方面由集群环境的客户机用来选择特定地址以定位一个服务的逻辑的一个实施例;图23描绘根据本发明一个方面把一节点地址定义映射到子网和网络定义中的一个实施;以及图24描述根据本发明一个方面的一个逻辑的另一个实施例,该逻辑用于产生一个有序的地址清单,供一集群中的一个特定节点使用,以达到一特定的服务。
具体实施例方式
根据本发明的一个或多个方面,一个利用一操作系统的一个或多个拷贝的分布式计算环境得到管理。该操作系统的每个拷贝被配置成使它能访问一组资源(例如处理器、网络接口、文件、文件系统、存储装置、外围设备等)。这种访问可以是排它的或者是与该操作系统的其他拷贝共享的。如果这些资源要被共享,那么该操作系统的各单个拷贝协作和共享它们所控制的系统资源。为了共享资源,这些操作系统拷贝协商该访问,以保持资源的完整性。例如,需要向一存储装置的某一段写入多块数据的一个操作系统的两个拷贝协商对该段的访问,否则,写操作的顺序可能会损害被写数据的完整性。
图1描绘含有和使用本发明各方面的分布式计算环境的一个实例,这里将描述这一实例。一个分布式计算环境100包括例如经由多个局域网络网关104彼些连接的多个框架(frame)102。下文中将详细描述框架102和局域网络网关104。
在一个实例中,分布式计算环境100包括8个框架,每个框架包括多个处理节点106。在一个例子中,每个框架包括16个处理节点(每个节点有一个或多个处理器)。每个处理节点是例如一个RISC/6000计算机,运行AIX(这是一个基于UNIX的操作系统)。在一个框架内的每个处理节点经由例如内部局域网连接实现与该框架内的其他处理节点的耦合。此外,每个框架经由局域网络网关104与其他框架耦合。
作为举例,每个局域网络网关104包括或者是一个RISC/6000计算机和到该局域网的任何计算机网络连接,或者是一个网络路由器。然而,这些只是举例。对于相关领域技术人员而言,显然存在其他类型局域网络网关,而且还能使用其他机制使各框架彼此耦合。
图1的分布式计算环境只是一个例子。多于或少于8个框架,或每个框架有多于或少于16个节点都是可能的。再有,处理节点不一定是运行AIX的RISC/6000计算机。部分或全部处理节点可以包括不同类型的计算机和/或不同的操作系统。再有,异构环境能包括和利用本发明的多方面,在异构环境中该环境的一个或多个节点和/或操作系统与该环境的其他节点或操作系统不同。这种异构环境的节点在它们彼此协调和共享资源方面如这里所描述的那样相互操作。再有,本发明的各方面可用在单个计算机系统内。所有这些变体被认为是所申明的发明的一部分。
具有共享资源能力的一个分布式计算环境称作集群。特别是,一个计算环境能包括一个或多个集群。例如,如图2中所示,一个计算机环境200包括两个集群集群A202和集群B204。每个集群包括一个或多个节点206,它们在完成系统任务过程中共享资源和彼此协调。每个节点包括该操作系统的一个单独拷贝。
在考虑一个节点在一特定集群中的成员资格时有两个方面。一个方面涉及该集群的静态配置。这一方面称作节点定义(见图3)。如果一个节点被定义于该集群,该集群中的其他节点便认识这一节点。在一个成功的节点定义操作(下文中进一步描述)之后,该节点被定义于该集群。反之,在节点删除操作之后,该节点便不再定义于该集群。
该节点的静态方面不同于它的动态(或运行时)属性,后者称作集群成员资格。集群成员资格是指这样的事实,即当一个节点被定义和处于运行状态(即在线)时,该节点被认为是该集群的成员。这里术语“处于运行状态”是指这样的事实,即该节点被该集群的其他成员理解为一个功能节点,即该节点能完成称作“生存任务”的基本功能。作为一个举例,一个节点连续完成一组生存任务,并通过以规则间隔向该集群的其他成员发送“心跳”消息来向其他节点报告它完成这个任务的能力。
集群成员资格可以看作是节点清单,这些节点在任何时间点在功能上是作为该集群的一个整体部分。这一清单对所有节点都是可用的,而且在本发明的一个方面中,该集群体系结构保证全部节点在任何时间点都能访问这同一个成员资格清单,甚至在无共享的分布式系统中也是如此。(无共享的分布式系统是这样一个系统,在其中各节点没有任何共享的物理资源,如盘或存储器)。为了保持对这种系统中特定数据的同一视图,使用了复杂的同步协议,因为该数据得要在原子事务处理中分布到所有节点。
使用特定的协议添加或删除成员资格清单中的节点。例如,用于向成员资格清单添加节点的过程称作节点加入过程。反之,用节点退出过程从成员资格清单中删除节点。如果一个节点未在该集群成员资格清单中,则该节点已经离开了该集群。
每个集群由一个集群体系结构管理,它包括多个部件。如这里要更详细描述的那样,每个部件在该集群的一个或多个节点上执行一个或多个相应的过程。如果该部件在多个节点上执行多个过程,则该体系结构是在那些节点上分布的。然而,分布式体系结构只是一个举例。本发明的一个或多个方面能用在单一的或非分布式的系统中。
在一个例子中,集群体系结构的部件包括一个分布式配置管理器(DCM)400(图4),用于配置集群系统和协调集群配置数据库(下文描述)的同步,这是当节点加入或退出集群时发生的;一个系统注册服务器子系统402,它包括一个或多个过程,这些过程服务于存储在集群配置数据库中的数据;一个生存子系统404维持集群成员资格清单,该清单提供关于该集群各成员之间通信路径可用性的信息;一个组服务子系统406,它提供了一种工具,使用它能使其他集群过程形成逻辑组并保持一致的组状态和过程成员资格;以及一个资源管理器子系统408,它是一个工具,管理集群资源的访问和控制,还提供一个工具使集群客户机能监视集群资源的状态和配置。
在一个实施例中,如图4中所示,每个部件被分布在多个节点410上。就是说,每个部件在多个节点上执行一个过程。例如,DCM400是在所描绘的三个节点上执行DCM过程412。对于其他部件也是如此,对每个部件将在下文中更详细地描述。
分布式配置管理器(DCM)子系统400在要被配置为该集群一部分的每个节点上提供一个计算机程序的拷贝,称作分布式配置管理器守护程序(DCMD)412。DCMD是该集群的自举代理。这样,DCMD过程负责以适当的集群配置启动其他集群部件。DCMD也是在适当的时候停止其他集群部件的过程,例如在一个节点从一个集群转移到另一个集群时的情况中。DCMD本身由该节点的基本操作系统自举,而且在这个例子中是要由操作系统直接自举的唯一集群部件。
DCMD维持每个节点本机存储器中文件的集合,这些文件与一个或多个集群配置相关联。除了本地配置数据外,DCMD还在服务器仓库中存储全局配置数据。下文将进一步描述集群配置数据。
系统注册部件402提供全局数据存储功能。它是高可用性的,在一个例子中在多个节点当中被复制作为系统注册过程414(图4)。然而,在一个实施例中,复制系统注册部件的节点数少于集群全部节点数,如图5中描绘的那样。如图5中所示,节点(即操作系统实例)1、2、3包括系统注册过程500,而节点4-8不包括。然而,在这一特定实例中,所有节点都包括其他核心集群过程(例如DCM过程、生存过程、组服务过程以及资源管理器过程)。节点4-8被认为是注册客户机节点,而节点1-3被认为是注册服务器节点,因为注册功能是那些节点上执行的。
生存部件404(图4)提供集群中通信适配器的状态和节点间通信路径的可用性。每个节点经由一个或多个通信适配器与通信网络502相连(如图5中所示)。任何这种适配器都可能失效,影响网络中使集群节点互连的一个或多个通信路径。生存部件在集群的一个或多个节点中运行一个过程,它从每个节点中的每个通信适配器发出周期性的认证消息,称作心跳。在各节点中生存过程的集合交换关于每个适配器可用性的部分知识的消息,通过这些消息使生存系统能逻辑上推导出集群系统中每个通信适配器的状态以及任何两个适配器之间通信路径的可用性。
组服务部件406向其他部件提供通用成员资格服务。这些服务包括进行两阶段提交协议的工具程序,也称作原子广播。它还包括用于使一组的成员能控制该组的成员资格和维持组状态的工具。(组服务的一个实例在美国专利5,748,958中详细描述,题为“利用批请求向过程组呈现成员资格变化的系统”,1998年5月5日授权,这里全文纳入作为参考。)资源管理部件408向不属于核心集群服务(如DCM、系统注册、生存、组服务以及资源管理器)一部分的其他集群服务提供基本通信层。如下文所述,这些服务落入附加的资源控制器类别。在一个例子中,这一通信协议是面向对象的。这样,要由资源管理部件控制的任何资源控制器向资源管理部件提供一个资源描述文件,该文件定义由它控制的资源对象。这一定义是利用一组属性或数据字段以及由每个资源控制器支持的功能完成的。
集群体系结构的每个部件在该体系结构的一个或多个其他部件上有一个或多个数据和/或功能依赖性,它定义各部件之间的关系(即部件间关系)。这些关系是根据本发明的一个方面设计的,使得该数据和功能依赖性形成一个非循环性图(即避免依赖关系循环)。
每个部件的数据依赖性的一个实例如图6中的图形所示,下文中将进一步描述(A)系统注册系统注册对集群的任何其他部件没有任何数据依赖性600,这是系统注册的一个独特的特性。它本身能存储它的全部配置数据。系统注册部件的设计使它能被用作相关图中的一个叶子,从而避免任何循环关系。系统注册有能力以高可用性的方式存储它自己的配置数据。系统注册被设计成被复制的数据仓库,在其中使用事务逻辑传播请求。
(B)分布式配置管理器(DCM)DCM部件有能力在每个节点上局部存储核心集群配置数据的本机版本,还有能力在系统注册中存储全局数据。在一个例子中,至少一部分本机配置数据要与全局数据一致。然而,在某些情况中,有可能由DCM子系统存储的本机配置数据会与全局存储在系统注册子系统中的数据相脱离。例如,如果由于维护的原因,在一节点与集群断开时该节点错过了一次更新,就将发生这种情况,这是一个例子。
例如,一个节点可能失效并被送去修理。与此同时、该集群系统的系统管理员可能决定解除对该受损节点的定义,于是通过“解除节点定义”操作从全局注册中删除该节点的定义。当受损节点被修复并与该集群再连接时,它应该不再被允许共享该集群的资源,因为它已被解除了在该集群中的定义。然而,在新近修复的节点中的本机集群配置已经过时,而且仍然表现出该节点被定义于该集群。为了检测这种情况,作为所有其他集群部件自举代理的DCMD守护程序在开始该节点加入过程之前检验本机集群定义的有效性。这造成了DCMD守护程序对系统注册部件的数据依赖性602。
(C)其余的核心集群部件(生存、组服务和资源管理)对分布式配置管理器部件有共同的数据依赖性604,因为它们利用由DCM存储的本机集群配置。例如,本机集群配置包含自举信息,如节点名和节点号,以及运行注册服务器过程的节点的清单,在这一体系结构中该节点清单由各集群部件使用。除了系统注册部件本身之外,其它部件都使用那个节点清单,以便能够连接到注册服务器并检索全局集群配置,见下文的描述。
(D)全部部件,除了系统注册本身之外,都对全局集群配置有数据依赖性。
每个部件的功能依赖性的一个实例如图7中的图形所示,下文中将进一步描述(A)分布式配置管理器(DCM)DCM依赖于由系统注册部件提供的全局存储功能的可用性(见参考数字700)。
(B)系统注册系统注册对组服务部件有功能依赖性702。这一依赖性产生于这样的事实,即系统注册利用组服务部件的成员资格服务以传播写操作。因为在具有注册服务器节点功能的每个节点中要复制全局集群配置数据,所以对它的任何修改都涉及被复制的写操作。在这种写操作期间,存在着复制品之一可能无效的危险,使得希望实现一个逻辑用于分布式恢复被复制操作。由组服务部件提供的成员资格服务包括这种分布式恢复逻辑的一个实例。
然而,对组服务部件的功能依赖性只对写操作有效。对于读类型操作,系统注册部件对组服务部件没有依赖性。所以,系统注册部件能在被DCMD部件自举之后完成它的初始化的第一阶段(下文将进一步描述)。在完成这一阶段之后,系统注册已检索了集群配置数据库的最近更新的拷贝,因而能允许其他部件读该集群配置数据。这反过来又允许组服务部件完成它自己的初始化,这使得系统注册部件可能进入它的初始化的第二阶段,如下文描述的那样。
(C)生存部件生存部件由DCMD自举(见参考数字704),并把生存子系统的配置存储在该注册中(见参考数字705)。它对任何其他部件没有任何其他功能依赖性。
(D)组服务部件组服务部件由DCMD自举(706)。它还对生存部件有功能依赖性(708),因为它需要知道在该集群中各节点之间的通信路径可用性。
(E)资源管理器部件资源管理器部件由DCMD自举(710)。它还对组服务部件输出的组成员资格功能有依赖性(712)。它使用该成员资格功能以确定它的配置数据库的版本号。
附加的资源管理器也对DCM有功能依赖性(714),还对资源管理器部件有功能依赖性(716)。
在集群技术的自举过程期间,部件的数据和/或功能依赖性得到满足。在一个例子中,在集群自举过程中利用了特定的事件和消息序列以满足其依赖性。这一序列的一个例子示于图8并在这里描述。
在步骤0,自举序列开始。该集群体系结构被设计成例如一个软件层,它由操作系统启动。在基本操作系统自举过程之后,该操作系统通过启动分布式配置管理器过程来自举该集群软件。然后,DCMD守护程序被启动并在该操作系统实例的整个生存期间被执行。
如前文提到的那样,DCM保持一组存储在每个节点的本机存储器中的数据结构(作为一个例子)。该数据结构包括例如集群数据结构900(图9a),节点定义数据结构902(图9b)以及注册服务器节点数据结构904(图9c),下文将描述它们中的每一个。
集群数据结构900包括例如集群名906和唯一集群标识符908。在一个例子中。唯一标识符用作关键字段(唯一字段)。在集群数据结构中的关键字段保护操作系统的单个实例免予被重新标签为相同集群名。这些集群往往由管理人员创建,而且在大量处理器的配置过程期间会容易地以相同的名字加标签。再有,这里描述的集群配置基础措施是极其动态的,这样便有可能创建和删除集群。集群能根据分布式系统的需要动态地被创建和被毁掉。在集群被创建的时候以定义集群操作产生唯一标识符。这一特性使有可能检测出集群名的重使用。例如,如果标签为A的集群被创建、删除和再创建,A的这两个定义的数据结构会是不同的,因为唯一标识符字段会是独特的。
再有,集群定义数据结构中的唯一标识符是在其他集群资源的映射的根中。在这一系统中,该集群数据结构的唯一标识符是在集群资源中的标签的前缀处。使用唯一标识符映射和这里描述的体系结构能防止集群资源免予被错误的集群配置假设下的客户机访问。
节点定义数据结构902包括例如节点号910;节点名912,它作为一种方便措施用于使节点识别对管理人员更容易些,但它不被任何集群资源管理器用作访问节点配置的装置;以及唯一节点标识符914,它标识一个节点的定义。唯一标识符与特定的操作系统实例相关联。在每次把一个节点定义于一个集群时,便产生这一标识符。这一唯一标识符使有可能区分有相同名字的两个节点,还可能区分已经被定义于该集群、被解除定义、然后又以同一名字再次定义(重定义)的节点。
注册服务器节点数据结构904包括定义于该集群的注册服务器节点清单。在一个例子中,这一数据结构包括注册服务器916的有序清单和主注册服务器918的一个指示。这一清单由其他集群部件检索,这些部件希望访问一个系统注册过程以读取该系统的全局配置数据,如下文描述的那样。
除了上述本机数据结构外,每个集群部件维持一个本机存储数据结构,那里每个部件保留空间用于存储与本机节点有关的信息。在图10中显示了本机数据配置的一个例子,在下文中将对其进行描述。
应该指出,图10描绘的数据结构是从UNIX操作系统中本发明的一个特定实现导出的,但在其他操作系统中的类似实现是可能的,而且不偏离本发明的精神。
下面描述本机存储数据字段的一个例子1.‘/’(1000)表示该操作系统中的根文件系统。
2.‘/var’(1002)是一个文件系统,那里存储与操作系统扩展有关的数据。
3.集群逻辑把本机配置信息存储在‘/var/ct’(1004)中。
4.‘/var/ct/dcm’目录(1006)为分布式配置管理器部件所有。在这个例子中,DCM部件是有较高级目录存储它自己的数据的唯一部件,这与其他集群部件相反,那些部件把自己的数据存储在集群ID之下的一个目录中。这是因为在这一特定实例中DCM是知道一个节点能被定义在多于一个集群中的唯一集群部件。
5.在‘/var/ct/dcm/configuration’目录(1008)中,DCM存储该节点被定义的那些集群的清单。在这个目录中它还存储该节点当前所属的集群的ID。这个ID由其他集群部件使用,以确定从哪里读取本机配置数据。
6.在‘/var/ct/dcm/logs’目录(1010)中,DCM部件存储它的运行日志,该日志用作检查跟踪工具。
7.对于定义了节点的每个集群,DCM在‘/var/ct’下定义一个目录,标为‘/var/ct/cluster_ID’(1012),这里文字“cluster_ID”用唯一集群标识符替换,如下文中解释的那样。在这一目录下,DCM还创建其他四个目录,其他集群部件能在那里存储它们的运行时锁1014、运行时日志1016、运行时核心信息1018以及配置数据1020.
除了本机配置数据外,DCM还存储全局配置数据。在服务器仓库中存储的全局配置数据包括例如集群定义数据结构的拷贝以及节点定义数据结构的一个拷贝。集群数据结构和节点定义数据结构的字段值是在一节点被定义于该集群时设定的,并应该保持一致。在处理过程中,本地数据结构的数据字段与全局数据结构的数据字段进行比较。如果比较产生任何差异,这可能指出该节点定义在该集群中不再有效。
返回图8,在启动DCMD过程之后,DCMD过程启动系统注册过程和被作为注册服务器节点配置的那些节点(步骤1)。这一步骤满足系统注册部件的自举要求。
在步骤2-4中,DCMD守护程序在例如该集群的全部节点中启动生存部件、组服务部件和资源管理器部件。
然后,在步骤5,系统注册子系统完成它的初始化第一阶段。特别是,它完成提取全局配置数据库的最新近可用拷贝的过程。在这一阶段,由DCMD自举的系统注册过程交换消息,这些消息含有全局配置数据库的实体(incarnation)号。然后,系统注册部件选择配置数据库的有最高实体号的拷贝。这些拷贝被允许进入部件初始化的第二阶段,如下文所述。
在初始化第一阶段完成之后,系统注册部件允许其他部件发出读类型操作,这使其他核心集群部件能完成它们的初始化。就是说,在完成第一初始化阶段之后,系统注册子系统现在能向其他集群部件提供全局集群配置数据服务。系统注册部件允许其它部件读全局配置数据,但不允许对全局配置做任何修改。这是因为对全局配置数据的任何修改都是通过写操作完成的,而系统注册部件为完成写操作对组成员资格功能有依赖性。由于这一原因,修改全局集群配置数据的任何操作需要等待系统注册初始化第二阶段完成之后进行,见下文的描述。
在步骤6,现在DCMD能从系统注册读取全局集群配置数据。这样,在步骤7,能证实每个节点中存储的本机配置是否与系统注册中存储的全局集群配置一致。在这一点DCMD部件尚不能对全局集群配置做任何修改,因为系统注册尚不能进行写操作。然而,它能确定本机配置是否与全局集群配置一致,然后继续集群自举过程和启动其它部件,这将最终满足其他依赖性,从而使系统注册本身将能够完成它的初始化第二阶段并成为能写的。
在步骤8,生存部件读全局配置数据。但首先它需要知道系统注册服务器的位置,而那个信息是在本机集群配置中。这样,生存部件调用DCMD以提取这一信息。
在步骤9,在与前一步骤相似的过程中,组服务部件也从DCMD部件提取本机集群配置数据。
在步骤10,生存子系统通过从系统注册服务器读取全局配置数据,从而满足它对全局配置数据的依赖性。再有,在步骤11,生存部件现在已经满足了它的全部依赖性并能结束它的初始化,并使生存功能能被其他集群部件使用。
在步骤12,组服务部件也能从系统注册读取全局配置数据。现在组服务部件能利用生存部件的生存功能,如步骤13中指出的那样。
在步骤14,组服务部件完成它的初始化,并能使组成员资格功能能被其他集群部件使用。
在步骤15,系统注册部件满足它对成员资格服务的要求,这允许系统注册完成初始化过程的第二阶段。在这一阶段,使用组服务部件提供的成员资格服务,那些由第一阶段确定为较低实体号的全局配置数据库拷贝被更新。这允许系统注册部件结束它的初始化第二阶段,并允许针对全局集群配置发出写操作。
在步骤16,现在系统注册部件结束它的初始化第二阶段。在这一阶段完成之后,系统注册部件能使用成员资格服务以完成复制的写操作,所以允许其他集群部件对它们的全局集群配置数据库进行修改。
在步骤17,资源管理器部件从DCMD部件提取本机配置数据。资源管理器部件从系统注册读取全局配置数据并对其进行所希望的任何修改(步骤18)。
再有,在步骤19,资源管理器部件利用组服务部件的成员服务以确定它的配置数据库的版本号。现在资源管理器部件已经使它的全部数据需求和功能需求得到满足,并且已完成了它的初始化(步骤20)。这样,资源管理器部件能自举任何其他配置过的资源控制器(步骤21)。
附加的那些资源控制器从DCMD部件读取本机集群配置,从系统注册读取全局集群配置(步骤23)。再有,它们完成任何希望的修改。在步骤24,附加资源控制器结束它们的初始化。
在完成上述自举过程之后,所有集群部件成为完全可用的部件,而且这些部件的全部数据需求和功能需求得到了满足。
根据本发明的至少一个方面,为了管理一个集群,利用了各种定义操作。这些操作包括例如(A)定义集群操作,它创建一个新的集群定义。特别是,创建新的集群标识符和新的本机存储区用于在发出这一操作的节点中存储本机集群配置。这一新的本机存储区位于一个目录中,该目录在该目录路径中有一个新的集群标识符。这一操作还创建一个新的全局存储区。DCM部件把发出这一操作的节点标记为注册服务器节点。还有,在这一过程中,DCM部件自举该系统注册过程并创建这里定义过的全局集群数据结构(如前文描述的那样)。
(B)解除集群定义操作用于抹去一个集群定义。它抹去被定义为该集群一部分的所有节点中的本机集群定义。它还抹去由系统注册部件管理的全局集群存储器的全部拷贝。
(C)修改集群操作用于修改集群定义的属性。能被修改的一个属性是集群名。这一属性能被修改,这是因为它不被集群部件在内部使用。而正是集群ID被内部用于集群的识别。
(D)定义节点操作用于把一个节点定义于一个集群。该集群是先前已由定义集群操作建立的。在新定义的节点中创建一个新的本机存储器。还有,由这新的节点定义去更新存储在全局存储区中的集群定义。
(E)解除节点定义操作用于从全局集群定义和全局存储中抹去该节点定义。它还抹去该节点中与该特定集群的节点定义相关联的本机存储器。
(F)定义注册服务器节点操作在该集群中把一个特定节点定义为注册服务器节点。在这一操作之后,DCM部件识别该节点做为注册服务器节点,并在必须和/或希望时自举该节点中的注册服务器过程。
(G)解除注册服务器节点定义是这样一个操作,它去掉作为注册服务器节点的节点定义。在这一操作之后,在那个节点上不再自举系统注册过程。
(H)修改节点操作在全局集群配置以及本地存储器中改变一节点定义的属性。节点配置的一个能被改变的属性是节点的名称。
除了各种定义操作外,各种控制操作用于管理集群、节点以及注册服务器。这些操作包括例如(A)在线集群操作,它在节点中启动一个过程以便接触已知被定义于该集群的所有其他节点,并请求它们进入在线状态。
(B)离线集群操作,它接触已知被定义于该集群的所有节点,并请求它们进入离线状态。
(C)节点在线(加入)操作,它请求DCM过程把该节点在线移到一特定集群。这一请求使DCM部件启动一系列行动,这些行动已在前文中的集群自举过程中描述过。
(D)节点离线操作,请求一特定节点离线。这操作请求DCM部件停止该节点运行的所有其他集群部件。
(E)注册服务器在线操作,请求DCM部件自举一特定节点中的系统注册过程。
(F)注册服务器离线操作,请求DCM部件停止一特定节点中的系统注册过程。
为管理一个节点,可以利用上述每个定义操作和控制操作。下文中将更详细地描述这些操作中的一个或多个。
如这里描述的那样,在本发明的一个方面中,集群体系结构利用唯一标识符,它是在一个操作系统实例(例如一个节点)被定义于该集群时产生的。唯一标识符的产生方式使它对于该集群系统的实现(见图11)是有意义的。例如,对于单操作系统计算机1100,在一实例中该唯一标识符是从系统主板中的只读存储器(ROM)存储的一个号码导出的。
对于多操作系统计算机1102,该操作系统实例可以恰在该节点被定义时使用已知的唯一标识符产生技术产生一个唯一标识符。
再有,对于具有一块独特硬件的计算装置1104,操作系统标识是从这单一一块硬件中导出的。这种实现在多种应用中是有意义的,例如在利用智能卡识别被授权用户的装置的应用中。
该标识符被存储在本机配置存储器和全局配置数据库二者之中。由于使用了两类存储,所以根据本发明的一个方面提供了一组规则,以便在由于任何原因(例如维护过程)使数据脱离序列时协调这些数据。例如,如果脱离序列的数据是该节点标识符,则提供一组规则去协调该标识符。下文中将更详细地描述这一特定例子。然而,应该理解,类似的规则用于协调其他不一致的数据。
由于分布式集群系统是一组机器,每个机器可能在不同时候与通信网络断开,一个操作系统实例是在它被定义为个给定集群的节点时被标识的。然而,由于断电或维护操作,该操作系统实例可能停止,而且它应该能认识它自己作为一个给定集群的成员,如果确曾被这样定义过的话。这样,每次一节点加入该集群时,它检验那个节点本机存储器中的唯一标识符是否与全局标识符匹配。
特别是,在一个实施例中,在基本操作系统的基本自举过程中由该操作系统读取该唯一标识符。然后,在集群自举序列开始处该基本操作系统把这唯一标识符传送给分布式配置管理器。该分布式配置管理器又在这唯一标识符被定义于该集群时把这唯一标识符存储在全局存储器1106和本机存储器1108中。每当分布式配置管理器进行把一节点加入一集群的操作时,它检验该唯一标识符三种不同实例的有效性(即在自举序列中由操作系统传送的标识符,这里称作原始拷贝(UID)1110、本机存储(高速缓存)拷贝1108以及全局存储拷贝1106。
在节点加入集群的过程中,这三个标识符的比较如下1)原始标识符与本机标识符比较;以及2)本机标识符与全局标识符比较。
这些比较可能产生四种不同的结果,显示如下

然后,分布式配置管理器根据每种情况采取例如下述行动情况1在这种情况,全部三个标识符相同,于是节点定义是正确的。这是正常情况。其他三种情况只是作为操作结果存在,例如影响节点定义的维护操作。
情况2在这种情况中,原始标识符等于本机标识符,但本机标识符不同于全局标识符。这是在一节点被删除而该节点并未与该集群连接时发生的,因为该节点没有与该集群连接,所以它不能参与节点删除过程。所以,本机数据结构不能被更新到该节点已被删除时的效果。当对节点上的维护结束,该节点试图重新加入时,它注意到它自己的删除,这样,它能清除本机数据定义以达到该节点已从特定集群删除的效果。
情况3在这种情况中,原始标识符不同于本机标识符,但本机标识符与全局标识符一致。这样,例如在维护操作中该原始标识符已被替换。这是在原始标识符是从一个硬件资源中得到,而该硬件资源得要被替换时发生的。这类资源的例子是它们的唯一标识符存储在只读存储器(ROM)中的智能卡和母板。如果必须或希望替换存储原始标识符的硬件,那么集群逻辑要把这一情况与情况2和4中的不正确定义区分开。在这种情况中,本机的和全局的标识符一致,这表明该集群中该节点的定义仍然有效。所以,所采取的行动是把节点定义纠正为原始标识符已被替换的效果。这样,分布式配置管理器把本机的和全局的标识符都改变成与新的原始标识符一致。
情况4在这种情况下,原始节点标识符不同于本机标识符,而本机标识符不同于全局标识符。这样,该节点已经受到两个维护操作。它在该节点与该集群断开的情况下被从全局配置中删除,而且原始标识符已被替换。这一情况类似于上述情况2,因为决定因素是全局配置与本机存储器中最后一次高速缓存的值不一致。所以,要采取的行动是清除本机数据定义以达到该节点已从该集群删除的效果。
在一个实施例中,在某一情况下,例如情况3,分布式集群管理器能进行原始标识符的自动改正,这是在维护操作中标识该集群的唯一硬件被替换的情况中所希望达到的效果。这一特性允许例如先前的智能卡丢失时使用新的智能卡。分布式配置管理器还能通过询问全局数据库中的值来识别先前已被定义于该集群的机器。然而,如情况4中所示,它将不允许把一个新卡用于从未定义于该集群的机器。这一特性也是希望有的,这是由于集群定义操作是一个显示操作,要被定义于该集群的任何机器都可以执行。
下面将描述关于维持数据一致性的进一步细节,这种一致性用于可靠地把一个节点定义为一个集群系统的成员和加入一个集群。
由于对本机配置和全局集群配置数据库二者进行改变,还由于在这两个仓库中的数据要保持一致,所以诸如节点定义操作等操作是以原子方式进行的(即该操作或者是进行完毕或者是被放弃)。如果该操作被放弃,则在这两个仓库中的数据回复到与该集群结构一致的状态。这考虑到一个节点可能被定义和解除定义若干次,而且当发生解除定义操作时该节点可能从该集群断开。
为了迫使对一集群的节点定义具有一致性,节点定义操作让节点本身参与到节点定义协议中。在这一操作过程中,节点的唯一标识符与节点号相关联,该节点号对于要定义该节点的特定集群也是唯一的,然而在全部若干个集群上该节点号不是唯一的。这样,当把节点池用于多集群布署(下文描述)时,一个节点可能以相同或不同的节点号定义于每个集群中。然而,在这一实施例中,在任何特定时刻一个节点只能在一个集群中是在线(有效)的。
节点号标识符是一个内部标识符,集群利用它认识该节点。在一个例子中,节点定义过程确保给定的节点号与原来以特定唯一标识符定义的操作系统的一个实例相关联。将参考图12和13中描绘的例子描述节点定义过程的进一步细节。
参考图12,有三个过程(例如计算机程序)参与节点定义过程系统注册服务器过程1200(图12),它位于一个集群1204的被定义为注册服务器的一个或多个节点1202中;分布式配置管理器1206,它在发出节点定义请求1208的节点上运行,或者在该操作路由指向的节点上运行(即成员DCM过程);以及分布式配置管理器1210,它在正被添加到该集群的节点上运行(即非成员DCM)。这三个过程参与到定义协议中,如下文中参考图13描述的那样。
在步骤1,一个定义节点请求被传送到成员DCM过程。在一个例子中,与该请求一起被传送的是要被定义的节点的节点(例如IP)的地址。唯一节点标识符、节点号和节点名也可作为任选参数被传送。如果没有显示设置,则由成员DCM过程产生唯一标识符、节点号以及节点名之值。
在步骤1中得到的节点地址被成员DCM用于接触非成员DCM过程(步骤2)。在这一消息中,成员DCM过程把集群标识符传送给非成员DCM过程。
在步骤3,非成员DCM过程接收要被定义为该集群成员的请求,它由被接收到的集群标识符来识别。非成员DCM核实它尚没有由唯一集群标识符标识的本机配置。(在上文讨论的某些情况中,该节点有一个旧的定义是可能的。)非成员DCM以它自己的唯一标识符应答这一请求,该唯一标识符是由主机操作系统传送的。在这一应答中还包括一个状态代码,它指明在本机存储器中是否发现了那个集群ID的先前定义。
成员DCM接收来自非成员DCM的应答(步骤4),它含有该非成员DCM节点的唯一标识符。成员DCM存储这个值,并核实该节点标识符是否被报告存在全局存储器中(步骤5)。例如,成员DCM对系统注册过程提出查询请求,以发现该集群以该特定唯一村标识符定义的任何节点。系统注册以一个消息应答,该消息包含与步骤4中传送的唯一节点标识符相对应的可能节点定义,或者以一个返回代码应答,该返回代码表明不存在这种定义(步骤6)。
在步骤7,成员DCM接收上述消息。如果发现了这样的定义,则成员DCM核实这一定义是否与非成员DCM报告的定义相同。如果这些定义相同,则向该节点定义请求者回送一个消息,告知该非成员节点已被定义于该集群(该定义节点请求被错误发出,而且在这一情况中“非成员”标签是不适当的)。如果这两个定义不同,则删除本机的和全局的定义二者,于是继续定义节点过程。剩下的可能性是非成员节点报告一个在全局集群配置中不能找到的本机定义。在这种情况中,如同两个定义不匹配的情况那样,非成员DCM被请求抹掉先前的定义。
在步骤8,成员DCM请求系统注册为该新节点建立一个条目,向该条目传送当初在步骤1中给出的唯一节点标识符、节点号和节点地址。系统注册把上述条目提交给全局集群配置并向成员DCM回送一个消息,告知操作成功(步骤9)。
在步骤10,成员DCM接收上述消息。如果该操作是不成功的,则节点定义过程被放弃,并向节点定义请求者回送一个消息告知过程失败。否则,该过程继续。现在成员DCM请求非成员DCM向本机存储器提交新的节点定义,并抹掉任何先前的定义(如果这样做适当的话)(步骤11)。
在步骤12,非成员DCM完成上述请求,并向成员DCM回送一个消息告知所请求的操作成功。成员DCM接收这一消息(步骤13)。如果非成员DCM报告的结果是一个失败,则成员DCM放弃该定义操作,并向节点定义操作请求者报告失败。该成员DCM还试图抹掉在步骤8中造成的全局存储器中的定义。否则,过程继续。
成员DCM过程已经成功地完成了节点定义操作,现在向请求者回送一个消息,指出该操作成功(步骤14)。
在把一个节点定义于一个集群之后,通过利用例如本发明的自动集群配置技术,该节点能被插入(加入)该集群,无需系统管理员方面采取任何附加行动。这一技术可以在例如节点定义之后立即启动,或者在发出节点在线请求时启动。
参考图14和15来描述自动集群配置技术的一个实施例。具体地说,图14描绘该技术所用各种过程的一个例子,图15描绘各过程之间消息流的一个实例。
参考图14,按照例如节点在线请求1400的需求把该新节点配置到该集群的行动是由新节点1404上的DCM过程1402协调的。这是因为在该节点第一次加入该集群之前该集群中的其他过程没有关于该节点配置的任何知识。
在节点定义的时候,在新节点和集群之间只交换最少量数据(图15的步骤1)。所交换的数据涉及保证新节点有唯一标识符以及引入注册服务器清单1406。本机标识符/节点号码对与全局仓库的标识符/节点对进行比较。当这一比较成功时,能着手进行加入。
当该新节点被请求加入该集群(图15的步骤2)时,在新节点上的DCM过程请求该新节点中的资源管理器1408(图15的步骤3)向资源控制器1410发送一个消息(图15的步骤4)以把它们的配置写入系统注册1412中。每次节点加入集群时都重复这一过程,还允许进行节点配置的自动更新。
然后,资源控制器以它们控制的资源(例如硬件)的配置去更新系统注册(图15的步骤5),并通知新节点上的资源管理器(图15的步骤6)更新完成。然后,当资源管理器收到注册于它的资源控制器的这一操作完成状态时,资源管理器过程通知DCM(图15的步骤8)。
在新节点上的DCM过程接收(图15的步骤9)来自资源管理器的更新完成通告,并继续进行加入过程。
在一个并行的行动中,在集群1416上的系统注册过程1414发送一个能由事件订户接收的一个事件(图15的步骤7),其效果是告知该配置已被更新。在第一次向该集群添加一节点的情况中,这一事件使其他集群部件有可能认识该新节点作为集群成员。
上述过程允许一节点自己配置成该集群的成员,无需来自系统管理员的任何信息。在一个例子中,管理员只向该节点定义过程提供一个节点地址。在节点定义过程中,注册服务器清单被送入到新节点中。当新节点被请求加入该集群时,它使用这个注册服务器清单寻找正在工作的系统注册过程。然后,在新节点上的那些资源控制器被请求发现它们控制的资源的配置,并把这一信息写入全局集群配置数据库。(资源控制器是一些过程,是为特定资源写的,它们知道如何发现它们的配置)。有利的是,这一操作由新节点启动,无需系统管理员人工提供这一信息。
在一例子中,每次一个节点加入集群时都要重复上述过程,以保证节点的配置与全局仓库的一致。例如,这一过程允许系统管理员把一节点与集群断开,增加某些硬件(例如新的通信适配器),改变节点的配置,然后再把它连到该集群,当节点从集群离线时,无需将所做的任何变化通知集群。
根据本发明的至少一个方面,一个计算环境允许在其中定义一个或多个集群。例如,一个计算环境1600(图16)包括集群A1602和集群B1604。每个集群有一个或多个被定义于它的节点1606。再有,一个或多个节点可以定义于这两个集群,如图16中所示。
每个集群有一个或多个注册服务器与其关联。例如,集群A有若干注册服务器1608并且集群B有若干注册服务器1610。注册服务器1608包括一个或多个服务器节点1612。类似地,注册服务器1610包括一个或多个服务器节点1614。一组注册服务器的一个或多个服务器节点能覆盖另一组注册服务器的一个或多个节点。
在本发明的又一方面中,一个节点能被迅速地从一个集群移到另一个集群。这种能力使得有可能在任何给定的时刻在一集群经受的工作负荷当中移动节点。例如,考虑一个企业,它有一组节点要用于两个不同的应用,例如万维网服务和数据库服务。使用本发明的集群技术,该企业便能定义两个集群,集群A和集群B,每个专用于一个应用。现在,假定这些应用中的工作负荷随每日的时间而变化,其中在白天万维网服务器更活跃,而在夜间数据库服务更活跃。该企业在集群B的负荷较大时会希望把少数节点从集群A移到集群B中,反之亦然。
在传统的集群系统中,系统管理员首先得要使集群A中的节点离线,然后解除集群A中该节点的定义,然后把它定义于集群B(通常需要大量的人工配置),然后移动集群B中的这个节点在线。传统的系统涉及人工干预而且很费时间。当考虑工作负荷平衡的应用时,在移动节点的过程中花费的时间是很重要的,因为通常工作负荷是一个很动态性的度量,它不仅如本例中那样在夜晚和白天之间改变,而且以分钟改变。这样,把一个节点从一个集群移到另一个集群的操作要非常快,以在工作负荷平衡的应用中有价值。
所以,根据本发明的一个方面,通过允许重叠集群定义,一个节点能迅速地从一个集群移动到另一个集群。就是说,允许一个节点被定义在多于一个集群,尽管在一个实施例中在任何特定时刻它只在单个集群中活动。
当一个节点被定义于一个集群时,DCM造成一个特殊存储区,在那里保持该节点刚被定义于的集群的本机配置。DCM部件把本机集群配置存储在这一本机存储区。在存储于这一本机集群配置中的值当中有例如集群名、集群ID、节点名、节点ID以及用于该特定集群的注册服务器清单。作为又一个例子,DCM还在本机存储器中保持下述两个字段,当前集群指针,它包含一个节点当前在线的那个集群的标识符(ID);以及一个目标集群指针,它包括该节点要移动去的集群的ID。
这些指针的值只是在把节点从一个集群移动到另个集群的过程中是不同的。为了能把一个节点移动到某一集群,那个集群至少有一个注册服务器是在线的。为了移动一个节点,该DCM把目标集群指针指向该节点要加入的那个集群,然后把一个刷新信号发送到在正要移动的节点中运行的其他集群部件。当一部件收到该刷新信号时,该部件刷新它的配置,即再次从全局集群仓库中读取它的配置。为了到达该仓库,这些部件提取定义于该特定集群的注册服务器的清单。提取要移动的节点中的注册服务器清单的过程利用目标集群指针,以确定要使用哪个清单,如下文所述。
下面参考图17和18描述与一节点从一个集群移动到另一个集群相关联的逻辑的一个实施例。图17中的点线箭头指出系统部件与集群A的配置(本机的和全局的)之间先前的连接。在移动过程中,这些箭头由指向集群B配置的实箭头取代。
在步骤1(图18),把一节点移动到一个不同集群的请求1700(图17)被发送到要移动的节点上的DCM过程1702。该DCM过程接收这一要移动节点的请求(图18中的步骤2),并改变目标集群指针的值,以使它含有该节点到移动去的那个集群的集群ID。在要移动的节点上的DCM过程向在该节点上运行的其他集群部件1706发送刷新消息(图18的步骤3)。
其他集群部件提取注册服务器清单1708(图18的步骤4),以使它们能读取全局集群配置1710。这一清单是用映射提取的,该映射把存储在目标集群指针中的集群ID与那个特定集群的注册服务器清单关联起来。然后,其他集群部件使用前一步骤中接收的注册服务器清单中列出的一个注册服务器,请求存储在全局注册中的它们的特定配置(图18中的步骤5)。
注册服务器向要移动的节点中的其他集群部件提供它们的适当配置以在目标集群中发挥它们的作用(图18中的步骤6)。在要移动的节点上的其他集群部件通知DCM过程(图18中的步骤7)它们已完成了移动操作,而且它们现在是在线于目标集群中。
DCM现在改变(图18中的步骤8)当前集群的值,以反映该节点已被成功地移动到另一集群这一事实。否则,如果任何集群部件没能完成刷新操作,那么DCM把该节点移回到当前集群指针的先前值,还回复目标集群指针的值,并重发刷新消息,其效果是取消该移动的影响。接下来,DCM过程通知(图18中的步骤9)移动操作的请求者该操作的结局。
当所有部件向DCM回报它们结束了刷新操作并成功地在集群B中在线时,当前集群指针被移到指向集群B。如果由于任何原因该节点不能加入集群B,则它返回到当前集群指针中给出名字的集群。
上述过程使得有可能很快地把一个节点从一个集群移动到另一个集群。这种快速移动成为可能是由于这一体系结构允许一个节点被定义在多个集群中。
集群体系结构的各部件发送和接收消息,并总体上引起系统通信量。这里使用术语“系统通信”用于指由集群逻辑本身产生的网络通信量,而不是服务通信量,服务通信量是由集群系统中运行的应用产生的通信量。例如,系统通信量包括由生存子系统产生的网络通信量,它周期性地向每个节点上它的同类发送确认消息。又一个例子包括由系统注册部件产生的网络通信量,它向其他部件发送该集群的全局配置。在集群系统的典型部署中,利用多于一个互连的网络,造成节点间的多个通信路径。这样,便希望向系统管理员提供一个工具,用于把系统通信量限定于特定通信路径,以使它不干扰该系统中运行的其他应用。
根据本发明的一个方面,为了控制由集群逻辑产生的网络通信量,该集群体系结构定义多个网络对象。每个产生网络通信量的集群部件指定对这种通信量所用网络对象的偏好。例如,一个集群可能包括一个或多个网络,其中每个网络包括一个或多个子网,而每个子网包括一个或多个节点。
如前所述,由定义节点操作把一节点定义于一个集群。类似地,由定义子网操作定义一个子网对象。一个子网可由DCM过程稳式定义,如果它收到在该集群中已发现一个新的适配器而该适配器的节点地址尚未被映射到任何现存的子网对象的话。再有,解除子网定义操作从全局集群配置中删除子网定义;而修改子网操作修改子网定义的属性。能被修改的属性包括例如子网名以及子网被映射到的网络的定义。
类似地,定义网络操作建立网络定义,该网络定义被映射到一个或多个子网定义;而解除网络定义操作从全局集群数据库中抹去网络定义。再有,修改网络操作用于修改一个网络定义的属性。能被改变的属性之一是例如网络名。
如下文所述,每个节点、子网和网络由至少一个相应的数据结构定义。这些数据结构被存储在例如全局仓库中。
在一个实施例中,每个节点由一个或多个节点地址定义数据结构来代表。在一个例子中,节点地址定义数据结构1900(图19)包括一个唯一标识符1902,它用作节点地址数据定义的主键字段,如这里描述的那样,它是在创建节点地址对象时产生的;节点地址1904(下文将进一步描述),它包括一个用于达到该节点的节点接口的节点地址;一个子网掩码1906,它用于把节点地址映射到该集群系统的一个特定子网;以及一个节点号1908,它包括与字段1904中的节点地址相关联的节点号。
节点地址是次级键字段,它也是唯一的。节点地址是唯一的,因为分布式配置管理器(DCM)部件不允许定义有相同节点地址的两个节点地址。在这里描述的例子中,这些地址是因特网协议(IP)地址,因为在本发明各方面的一个特定实现中,因特网协议被用作节点间通信的手段。然而,本领域技术人员会理解,能利用任何其他通信协议。在任何情况中,对每个节点必须标识出至少一个地址,以便能使用选定的协议达到该节点。如果利用了多于一个通信协议,则协议类型可以是节点地址定义的附加字段。
根据本发明的一个方面,每个节点地址定义被映射到子网定义,下面参考图20描述子网定义数据结构的一个例子。
作为一个例子,子网定义数据结构2000包括例如唯一标识符2002,它提供子网定义的唯一性;子网前缀2004,在这一具体实现中它包括标识子网前缀的节点地址;子网掩码2006,它是一个二进制位掩码,表明子网前缀中有多少二进制位是相关联的;以及网络名2008,它把子网定义映射到一个现存的网络定义。
在这里描述的例子中,子网对象是从IP协议要求它们计算机互连的方式中导出的。例如,在一个IP网络中,节点以IP地址和子网掩码来配置的。连到同一子网的所有节点应有带相同前缀的地址,该前缀的长度由子网掩码确定。这里显示的实现使用IP网络的这一方面把节点地址分组;在这种情况中,每组包括的节点处在同一子网中。这些子网已被映射到网络定义中,于是通过修改网络对象的参数来控制集群通信量的路由,如下文描述的那样。
图21中描绘了网络定义数据结构的一个例子。网络定义数据结构2100包括例如唯一标识符2102,它提供网络定义的唯一性;网络名2104,它用于把子网对象映射到网络对象;以及服务路由表2106,它是一个值表,用于确定使用哪个网络传送各种集群服务请求。该服务路由表包括例如产生系统通信量的那些集群部件的名字,以及把那个网用于这种服务的优先级。
例如,一个集群可能以三个网络对象来定义,名为A、B、C。假定一个集群部件想要从系统注册读取全局配置。它首先检索那个特定集群的注册服务器清单。在这一例子中,该清单包括三个地址,它们有标签1、2和3。然后,它根据系统管理员设定的优先级选择使用哪个地址。然后这一部件遵循下述映射,该映射把一服务节点地址(它被列入注册服务器清单中)映射到一个网络对象。
在这一例子中,地址1映射到网络A,地址2映射到网络B,而地址3映射到网络C。现在,该部件读取存储在每个网络对象的服务路由表中的优先级值,该值是针对它要使用的服务(例如系统注册)。这些值是由系统管理员根据他或她对那个系统的偏好来设定的。在这个例子中,假定系统注册优先级的值在网络A中是3,在网络B中是2,而在网络C中是1。在网络A中发现了最高优先级号,所以,该部件试图首先使用映射到网络A的地址(标签为1,见上述)来达到系统注册部件。然后,如果这失败了,则该部件试图使用映射到网络B的地址,最后是映射到网络C的地址。
下面参考图22中描绘的例子,进一步详细描述集群服务的一个客户机选择一个服务的特定地址所采取的方式。
在一个实施例中,最初,客户机提取存在服务的可能地址的一个清单(图22中的步骤2200)。对每种服务,提取地址清单的方式是不同的。在系统注册的情况中,注册服务器节点的清单是从本机配置文件中提取出来的。其他服务可以在例如全局集群配置中公布节点地址清单。
在得到节点地址清单之后,该客户机查找存储在全局集群配置中的节点地址定义数据结构中的每个节点地址。对于每个地址,该客户机进行节点地址和子网掩码的逻辑“与”(AND)操作(见图23),以得到每个地址的子网ID(图22中的步骤2202)。
其后,该客户机提取每个地址的子网对象(步骤2204),对每个子网对象,该客户机提取与该子网关联的网络名(步骤2206)。
接下来,该客户机提取这些服务地址映射到的每个网络(步骤2208)。然后从服务路由表(它存储在每个网络对象中)中读取服务优先级号(步骤2210)。然后,该客户根据系统管理员在网络对象中设置的优先级对节点地址清单排序(步骤2212)。
其后,该客户机试图按优先级顺序接触服务(步骤2214)。
上述技术向集群管理员提供了一种机制,该机制包含与服务特定网络的特定服务类型相关联的通信量。该技术提供了以对管理员有意义的方式进行的网络通信量控制。应该指出,客户机提取这一服务的节点地址清单。最初,这一清单是无序的,因为这一清单是由该服务本身公布的。在上述例子中,正是系统注册利用DCM部件公布它的节点地址清单。然而,系统注册尚不知网络结构或系统管理员的偏好,所以不能提供有序的清单。这样,如上述映射指出的那样,系统管理员能把子网对象赋予网络对象。
系统管理器做出的改变影响映射到已被去掉的子网的全部地址的服务优先级赋值。这一操作被局部化到能被其他部件理解的子网表中的改变。这一工具提供了一个控制中心点,系统管理员能以它控制该集群系统所有部件的系统通信量。
上文是根据系统管理员设定的优先级对服务地址清单排序的一种技术。然而,在某些情况中,系统管理员可能利用没有优先级偏好的等价网络。在这种情况中,希望例如按照到客户机的接近程度(根据路由步数或跳接次数)来对服务地址清单排序。在标准的IP协议中,从一特定子网发送的数据报将只达到那个特定子网中的节点,如果它未被确定路线的话。为了使该数据报达到其他节点,它要被确定路线(即,它通过一个路由器或分组交换节点,它与发出数据报的子网相连,还与目标网络或另一个路由器或路由器序列相连,它们当中的一个能访问目标网络。)通过分组交换节点引导分组路由的步骤称作跳接(hop)。与跳接关联的是性能的损耗,因为分组交换操作使目标子网中接收分组减慢。
所以,当系统管理员对利用集群网络提供特定服务不设定任何优先级偏好时,根据一个数据报在从服务器到客户机的路由中将要遭遇的跳接最少次数对清单排序是有利的。再有,如果有多于一个服务器与客户机等距离(即,如果能使用完全相同的跳接数达到多于一个服务器的话),那么,对每个客户机有不同的排序清单,从而使服务负荷均等地分布于等距离服务器当中,这是有利的。
下述技术提供一种工具,利用它可根据减小距离和平衡负载判据对服务地址清单排序。当DCM在每个节点中存储注册服务器清单时(在系统管理员尚未为集群网络的利用设置任何优先级的情况中),DCM利用这一技术。如下所述,这一技术利用客户机到服务器的距离,以及把工作负荷在服务器之间均等分布的映射。工作负荷分布是基于一个公式,该公式是从每个子网中节点总数、从每个节点的单个节点号以及从等距离服务器数导出的。
参考图24描述一个逻辑的实施例,该逻辑用于产生集群中的特定节点为达到特定的服务所使用的有序地址清单。在一个例子中,这一技术的输入参数包括用于特定服务的地址清单;它将是该特定服务客户机的节点的节点号;在那个节点上存在的任何通信接口的地址(节点地址);以及该节点到每个其他服务器的距离,该距离用跳接数表示。应该指出,能用标准IP追踪例行程序来估计这一参数。
输出是有序的服务地址清单,它是为用唯一节点号标识的特定节点定制的。这一清单根据最小耗费排序,并对等距离服务器使用负荷平衡。
参考图24,首先,如果输入清单中的任何地址对应于该节点本身中存在的一个节点接口,那么这些地址便首先放在产生的有序清单上(规则1)(步骤2400)。其结果是本机客户机优先使用该同一节点上共同存在的服务器,从而造成最好的可能性能。接下来,列出具有最小距离(利用跳接数)的服务器的地址(规则2)(步骤2402)。
在有等距离服务器(即使用相同数量跳接可达到的服务器)的情况中,进一步优化排序是可能的(规则3)。如果有两个等距离服务器,那么在一半客户机中首先列出它们当中的一个,而在另一半客户机中首先列出另一个,则是有利的。这使得一半客户机优先使用一个服务器,而另一半优先使用另一个服务器,从而实现一种理想的负荷平衡方案。如果有三个服务器,则可以有三种方式分出第一个位置。
这里描述了一种技术,用于决定哪个服务器要首先列出(规则3)(步骤2404)。具体地说,首先根据一组等距离服务器(即有相同跳接数的一组服务器)的节点地址对这些服务器编号0、1、2等,从最低向最高编号(规则4)(步骤2406)。因为节点地址是唯一的,这一映射也是唯一的。
接下来,使用一个预先确定的公式计算等距离服务器之一的映射索引(步骤2408)(规则5)。特别是,对于k=0的等距离服务器个数,映射标号等于[(节点号)mod(等距离服务器数)+k]mod(等距离服务器数)],这里mod是指取模操作,定义为一个除操作的整余数。
计算映射索引之后,便把映射索引的相应地址填加到清单中(规则6)(步骤2401)。
接下来,确定该组中是否有多于一个等距离服务器(询问2412)。如果该组中有多于一个等距离服务器,则以步骤2408继续进行处理。否则,以询问2414继续处理,其中确定在输入清单中是否还有要处理的服务。如果还有服务器,则以步骤2402继续该过程(规则7)。如果没有,则提供最终的有序服务地址清单,于是过程结束(步骤2416)。
下面描述演示上述过程的一个例子。假定有以下输入节点号=5,服务清单(使用符号节点地址,括号内是距离)包括{1(0),3(1),7(1),9(1),12(2),2(2)}。
为得到排序,遵循上述规则1)该技术在为节点5定义的任何节点地址定义表中进行查询,以确定是否有任何输入地址在那些表的节点地址字段中。它发现有距离0的地址1对这一节点是本机地址,因而根据上述规则1首先把该地址列出。
2)利用映射0→3;1→7,2→9按节点地址对三个等距离服务器排序。使用规则3至7对这些节点再排序。在这一情况中等距离服务器个数是3,节点号是5,其结果是a)选择第一服务器,应用规则5,以k=0,其结果是[(5mod 3+0)mod 3]=2;其结果是对上一步骤中得到的清单的映射索引。在这一情况中,映射索引2映射于服务器地址9.
b)对于第二个服务器,迭代使用规则5,现在是k为1,其结果是[(5mod 3+1)mod 3],它是[(2+1)mod 3]=0,它映射到服务器3。
c)类似地,规则5的下一次迭代是以k=2进行,其结果是[(5mod 3+2)mod 3],它是[(2+2)mod 3]=1,它映射到服务器7。
3)现在对第二组等距离服务器使用同样过程(规则2至5),首先赋予映射索引0→12;1→2。现在等距离服务器个数是2a)规则5的第一次迭代产生[(5mod 2+0)mod 2]=1,它映射到服务器2。
b)第二次迭代,以k=1,产生[(5mod 2+1)mod 2]=0,它映射到服务器12。
4)最后产生的是如下清单{1,9,3,7,2,12}。
可以看到,对每个客户机节点号,其输出清单会是不同的,造成对每个客户机平衡过的清单。
除了上述,DCM维持这些有序列表。在一个例子中,每当它收到已添加一新的服务节点或删除服务节点的通知时,它便刷新本机清单。
上文描述的是管理一个集群环境的各个方面。提供了集群体系结构以及管理各集群的技术。本发明的各种技术可应用于单个系统、同构系统以及异构系统。作为一个例子,提供了有助于提高一异构环境系统的可解释性的能力。
在这里描述的实施例中,全局数据被存储在远离这些节点的一个或多个仓库中(全局存储器)。然而,在其他例子中,每个仓库可以是相对于一个或多个节点是本机的。再有,每个仓库对于该仓库的用户可以是远程的或本机的。
本发明能被包括在具有例如计算机可用媒体的制品(例如一个或多个计算机程序产品)中。这里该媒体已实现了例如计算机可读程序代码手段用于提供和有助于本发明的能力。该制品能被包括做为计算机系统的一部分或被单独出售。
此外,还能提供至少一个可由机器读出的程序存储装置,有形地实现可由机器执行的至少一个指令程序,以实现本发明的能力。
这里描绘的流程图只是例子。对这里描述的这些程序或步骤(或操作)可以有许多改变而不离开本发明的精神。例如,可以以不同的顺序进行这些步骤,或者可以添加、删除或修改步骤。所有这些改变被认为是所申明的发明的一部分。
尽管这里已详细地描绘和描述了最佳实施例,但对于相关领域的技术人员而言,显然可以做出各种修改、添加和替换等而不离开本发明,所以这些被认为是在下述权利要求中定义的本发明的范围之内。
权利要求
1.一种用于控制集群计算环境的系统通信量的方法,所述方法包括对于要提供的一个服务,把一个或多个节点地址映射到为所述服务定义的一个或多个网络对象;从所述一个或多个网络对象得到所述服务的一个或多个优先级,以及根据所述一个或多个优先级接触所述服务。
2.一种用于控制集群计算环境的系统通信量的系统,该系统包括对于要提供的一个服务,把一个或多个节点地址映射到为所述服务定义的一个或多个网络对象的装置;从所述一个或多个网络对象得到所述服务的一个或多个优先级的装置,以及根据所述一个或多个优先级接触所述服务的装置。
3.至少一个可由机器读出的程序存储装置,有形地实现可由机器执行的至少一个指令程序,以实现控制集群计算环境的系统通信量的方法,所述方法包括对于要提供的一个服务,把一个或多个节点地址映射到为所述服务定义的一个或多个网络对象;从所述一个或多个网络对象得到所述服务的一个或多个优先级;以及根据所述一个或多个优先级接触所述服务。
全文摘要
提供了各种部件以管理一个集群环境。这些部件包括提供全局数据存储的系统注册;把数据本机存储在集群环境的节点上和全局存储在系统注册内的配置管理器;提供集群通信路径状态的生存部件;向集群环境中一个或多个其他部件提供服务的组服务部件;以及与集群环境一个或多个资源控制器进行通信的资源管理部件。该集群环境的每个部件对该环境的一个或多个其他部件有一个或多个数据依赖性和/或功能依赖性。然而,在各部件之间建立的关系使得数据依赖性和功能依赖形成一个非循环图(即避免了循环依赖关系)。
文档编号G06F9/46GK1443323SQ0181035
公开日2003年9月17日 申请日期2001年5月25日 优先权日2000年5月31日
发明者M·N·诺瓦伊斯, G·D·莱布, R·戈林, G·索霍斯, F·克诺普 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1