专利名称:用于管理基于对象的群集的系统与方法
技术领域:
在此所述的方法、系统、应用编程接口(API)、图形用户界面(GUI)、以及计算机可读介质一般涉及信息和数据管理,特别涉及管理基于对象的群集(cluster)。
背景群集是一组由软件和/或硬件耦合的独立计算机组件,群集有助于把一起工作的各组件作为单一系统。群集有助于保持应用的高度可用,并且有助于通过群集内的移植(migration)执行故障恢复处理。群集通常比传统并行系统(例如对称多处理(SMP)、大规模并行处理(MPP)、非统一存储器存取(NUMA)、大型机)便宜。群集通常人工地单独加以管理。传统上,即使能够管理多个群集,但由于与特定于供应商的硬件、软件和协议,特定于平台的硬件、软件和协议,以及交互相关联的问题,也是十分困难的。由于传统上难以执行群集管理,因此出现了与群集管理相关联的操作员错误。因此,仍然需要在群集管理方面加以改进。
概述下面给出了管理基于对象的群集的一个简要概述,以提供对这种管理的某些方面的基本了解。这一概述不是广泛的综述,也不旨在表明这些方法、系统、API、GUI、计算机可读介质等的关键或重要元素,或者限定这些项目的范围。这一概述以简化的形式概念性地表明了管理基于对象的群集,并将其作为后面给出的更详细描述的序言。
本申请涉及用于跨越多个异构群集环境自动发现、监视、以及管理群集对象的基于对象的群集管理(OBCM)的系统与方法。类似地,OBCM可以自动发现、监视、以及管理与群集对象相关联的资源。OBCM有助于报告出所获得的与群集和/或资源相关的信息。类似地,OBCM有助于报告出所采取的与群集和/或资源相关的动作。
本申请的一方面涉及一种用于管理基于对象的群集的方法。该方法包括发现群集,并且把与群集相关联的值存储在对群集进行建模的对象中。该方法还包括从代理接收和分析数据,其中,数据涉及群集和/或资源。另一个示例方法包括监视群集和/或资源,并且更新所存储的与群集和/或资源相关联的值。另一个示例方法包括管理群集和/或资源。
本申请的另一方面涉及一种用于帮助与异构群集解决方案进行交互的系统。该系统包括检测群集的群集检测器,以及从群集收集数据的群集监管器(cluster supervisor)。在一个示例系统中,群集检测器和/或群集监管器通过标准化、规范化的命令集与对象进行通信。
本申请的另一方面涉及一个帮助基于对象的群集管理的对象集,该对象集包括对受管对象进行建模的父对象、从父对象继承并且对群集进行建模的群集对象、以及从群集对象继承并且对供应商相关群集解决方案进行建模的供应商群集对象。
本申请的另一方面涉及一种计算机系统,具有包括显示器和选择设备的图形用户界面。图形用户界面采用一种在显示器上提供一组数据项并从中选择的方法。该方法包括检索一组数据项,其中每个数据项代表群集管理选项;在显示器上显示该组数据项;接收表示选择设备选择被选数据项的数据项选择信号;以及响应该信号,启动与被选数据项相关联的群集管理操作。
本申请的另一方面涉及一组在计算机可读介质上实施的应用程序接口,它们与帮助基于对象的群集管理的应用程序相结合由计算机组件加以执行。这组应用程序接口包括接收和返回与发现群集相关联的应用数据和控制数据至少之一的第一接口、接收和返回与监视群集相关联的应用数据和控制数据至少之一的第二接口、以及接收和返回与管理群集相关联的应用数据和控制数据至少之一的第三接口。
因此,此处与下面描述及附图相结合描述了管理基于对象的群集的某些示例性方面。然而,这些方面只是表示了可以采用管理基于对象的群集的原理的各种方式的其中一些方式,因此打算包括这些方面及等价物。通过下面结合附图加以考虑的详细描述,其他优点和新颖特性将会变得更加清楚。
附图简述
图1示出了其中可以实现在此所述的示例系统、方法、GUI、以及API的示例计算环境。
图2示出了典型的两结点群集。
图3示出了用于通过管理基于对象的群集解决方案帮助与异构群集解决方案进行交互的示例系统。
图4示出了用于帮助与异构群集解决方案进行交互的示例系统。
图5示出了用于帮助与异构群集解决方案进行交互的示例系统,该系统包括通过标准化的命令集以及对群集和/或群集组件进行建模的一组对象进行通信的功能。
图6示出了对群集、资源和/或群集组件进行建模的对象的示例层次结构。
图7示出了示例基于对象的群集管理器,该基于对象的群集管理器通过对物理实体进行建模的群集对象和资源对象,与物理实体进行交互。
图8示出了示例基于对象的群集管理器,该基于对象的群集管理器与多个异构群集相关联的群集对象和资源对象进行交互。
图9是示出了用于管理基于对象的群集的示例方法的流程图。
图10示出了示例应用编程接口,通过这一应用编程接口,编程人员和/或进程访问用于管理基于对象的群集的系统和/或方法。
详细描述现在,参照附图描述这些方法、系统、API、GUI、以及计算机可读介质,其中,在所有附图中,相同的标号用来表示相同的单元。在下面描述中,为了便于说明,给出了大量特定细节,以便帮助对管理基于对象的群集的全面了解。然而,显然可以在无需这些特定细节的情况下实施这些方法、系统、API、GUI、以及计算机可读介质。另外,为了简化描述,以方框图的形式示出了公知结构和设备。
图1示出了计算机100,其中,计算机100包括由总线108可操作地连接的处理器102、存储器104、盘106、输入/输出端口110、以及网络接口112。在此所述的系统的可执行组件可以位于计算机如计算机100上。类似地,在此所述的计算机可执行方法可以在计算机如计算机100上执行。应该理解,对于在此所述的示例系统与方法,也可以采用其他计算机。处理器102可以为众多不同处理器,包括双微处理器和其他多处理器体系结构。存储器104可以包括易失性存储器和/或非易失性存储器。非易失性存储器可以包括但不限于只读存储器(ROM)、可编程只读存储器(PROM)、电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)等。例如,易失性存储器可以包括随机存取存储器(RAM)、同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据率SDRAM(DDR SDRAM)、以及直接RAM总线RAM(DRRAM)。盘106可以包括但不限于诸如磁盘驱动器、软盘驱动器、磁带驱动器、Zip驱动器、快闪存储卡和/或存储棒的设备。另外,盘106还可以包括光驱动器,例如,致密盘ROM(CD-ROM)、CD可记录驱动器(CD-R驱动器)、CD可重写驱动器(CD-RW驱动器)和/或数字多功能ROM驱动器(DVD ROM)。例如,存储器104可以存储进程114和/或数据116。盘106和/或存储器104可以存储控制和分配计算机100的资源的操作系统。
总线108可以为单内部总线互连体系结构和/或其他总线体系结构。总线108可以为各种类型,包括但不限于,存储器总线或存储器控制器、外围总线或外部总线和/或局部总线。局部总线可以为各种类型,包括但不局限于工业标准体系结构(ISA)总线、微通道体系结构(MSA)总线、扩展ISA(EISA)总线、外围组件互连(PCI)总线、通用串行(USB)总线、以及小型计算机接口(SCSI)总线。
计算机100经由输入/输出端口110与输入/输出设备118交互。输入/输出设备118K可以包括但不限于键盘、麦克风、定点与选择设备、摄像机、视频卡、显示器等。输入/输出端口110可以包括但不限于串行端口、并行端口、以及USB端口。
计算机100可以在网络环境中工作,因此通过网络接口112连接到网络120。通过网络120,可以把计算机100逻辑连接到远程计算机122。网络120包括但不限于局域网(LAN)、广域网(WAN)、以及其他网络。网络接口112可以连接于局域网技术,包括但不限于光纤分布式数据接口(FDDI)、铜分布式数据接口(CDDI)、以太网/IEEE802.3、令牌环/IEEE802.5等。类似地,网络接口112还可以连接于广域网技术,包括但不限于点到点链路以及电路交换网如综合业务数字网(ISDN)、分组交换网络、以及数字订户线路(DSL)等。
现在参照图2,该图示出了典型的计算机群集200。计算机群集是互连在一起以用作单个统一计算资源的独立计算机系统的集合。计算机群集是高度可用的、可扩展的、以及购置得起的,并通过群集软件帮助创建虚拟系统映象。计算机群集中的成员关系是动态的。计算机群集可以与群集资源进行交互。群集资源为共享资源如网际协议(IP)地址、盘卷以及应用的集合。群集资源是可扩展的、共享的,并且帮助提供动态所有权。群集包为捆绑在一起的群集资源集合,以提供帮助群集资源的指定使用的高度可用服务。群集包通常为可扩展的和高度可用的,并且具有动态的位置。
在群集200中,示出了通过一组网络230进行通信的第一结点210和第二结点220。网络230可以包括公共网络和专用网络,并且可以提供对包括但不限于基于对象的群集管理器、GUI、系统程序与应用的实体的访问。图中示出了与一组群集资源240进行通信的第一结点210。类似地,示出了与一组群集资源250进行通信的群集220。可以按群集包的形式安排群集资源240和250的集合。例如,在向企业提供盘服务的过程中,可以采用群集200。企业可以通过基于对象的群集管理系统与群集进行交互,而不是直接与群集进行交互。
现在参照图3,该图示出了包括基于对象的群集管理器320和群集管理应用350的示例系统300。基于对象的群集管理器320与由一个或多个对象建模的群集310进行交互。OBCM假设群集、群集组件、以及资源均由对象建模。在简化与父群集对象和从其派生的对象进行交互的对象框架中对对象加以组织,有助于把群集作为群集对象进行建模。图形用户界面简化查看群集、资源及其相关信息。API简化与基于对象的群集管理器进行交互的编程人员和/或过程的工作。因此,本申请涉及通过克服互操作性问题,简化群集管理,并基本上同时帮助管理一个以上的异构群集。
例如,“对象”可以是可以包括数据以及操纵该数据的方法的自包含实体。一般而言,数据通过方法的接口来暴露或者使得可以访问。对象有助于以软件的形式抽象逻辑的和物理实体,并有助于把抽象的信息和细节隐藏在对象内部,同时通过接口暴露对外视图(world view)。对象通常是按层次结构安排的,层次结构有助于继承和其他面向对象的编程技术。
系统300包括帮助查看群集310、群集310的组件和/或其他企业信息的图形用户界面(GUI)340。而且,GUI340还可以显示关于对象管理器320的信息。例如,GUI340可以显示关于对象管理器320与之发生联系的哪些群集、组件以及资源(如果存在的话)的信息。类似地,GUI340还可以显示表示对象管理器320能够采取的可用动作的命令。在一个示例中,GUI340可以通过传输控制协议/网际协议(TCP/IP)协议与代理(例如发现、监视、管理)进行通信。另外,GUI340还能够基本上同时显示多个群集会话。因此,通过帮助例如通过鼠标点击而不是命令行文法发出命令,GUI340简化了与群集的交互和对群集的管理。另外,GUI340还通过提供可以与上下文和/或群集状态相关的可配置弹出菜单,简化了群集管理。“群集可视化”是指在图形用户界面中表示群集相关对象的进程,例如,企业查看应用。在图形用户界面显示中,群集可视化采用一组独特图标来代表群集相关对象。例如,这些图标可以是彩色编码的,以有助于表示群集状态、群集成员关系、群集中的可用服务、以及与群集相关联的资源。
在一个示例中,GUI340可以包括显示器和选择设备。因此,可以把数据项显示在显示器上,并且可以在数据项之间进行选择。例如,GUI340能够显示代表可由对象管理器320在群集310上执行的群集管理操作的数据项。例如,群集管理操作可以包括但不限于定义群集、定义群集组件、查看群集、查看群集组件、调用群集上的功能、调用群集组件上的功能、调用群集上的进程、调用群集组件上的过程、向群集发送命令、向群集组件发送命令、启动群集、启动群集组件、暂停群集、暂停群集组件、启动故障恢复进程、停止故障恢复进程、启动维护进程、停止维护进程、启动负载均衡进程、以及停止负载均衡进程。因此,GUI340有助于与群集310的交互。例如,通过GUI340从对象管理器320检索一组与群集管理操作相关联的数据项,GUI340可以十分灵活,提供了优于传统硬编码系统的优势。通过把一组从对象管理器320检索的数据项显示在GUI340上,并接收表示所选数据项的数据项选择信号,GUI340有助于通过图形操作而不是传统的命令行操作启动群集管理操作,从而提供了优于传统的基于文本的系统的优势(例如,易于使用、记忆提示、较短的学习曲线)。
系统300还包括API330。例如,API330可以包括有助于从对象管理器320接收应用数据和控制数据,以及把应用数据和控制数据返回到对象管理器320的接口。类似地,API330还有助于接收和/或返回与监视群集310相关联的应用数据和/或控制数据。另外,API330还可以包括有助于接收和返回与管理群集310相关联的应用数据和/或控制数据。因此,包括但不限于群集管理应用350、编程人员360、进程370、以及企业管理应用380的应用和实体,可以通过与对象管理器320进行交互的API330与群集310进行交互。这样,应用、编程人员、以及进程不仅与异构群集中固有的特定于供应商的硬件、软件、以及通信协议相隔离,还与对象管理器320的内部相隔离。为了与群集310和/或对象管理器320进行交互,应用、编程人员以及进程只需了解API330的接口来与群集310和/或对象管理器320进行交互。这提供了优于传统系统的优势,在传统系统中应用、编程人员以及进程被迫了解群集310的内部细节和/或相关群集组件和资源。通过API330与对象管理器320进行交互的另一个优点是,只要对象管理器320继续支持API 330,则对于对象管理器320所作的实现修改不太可能要求对通过API330与对象管理器320交互的实体进行重新编码。
在一个示例中,对象管理器320提供了用于识别一个或多个异构群集310的装置。一旦已经识别了异构群集,则可以通过GUI340显示关于群集的信息。类似地,可以把命令从GUI340发送至异构群集,并且可以通过API330检索与群集相关的数据。对象管理器320还可以提供用于调查(survey)异构群集的装置,该装置包括识别数据值、识别数据值变化、以及识别与这些异构群集相关联的群集组件和/或资源。这样,群集管理应用350可以通过API330与所检索的数据进行交互,同时由对象管理器320调查异构群集。一个或多个代理(例如,神经网络调查代理)可以帮助对象管理器320调查异构群集。
由于群集310可能具有供应商相关特性,因此用于控制异构群集的系统可以得益于包括用于抽象群集的装置,其中,该装置可以包括但不限于帮助对群集、群集组件和/或资源建模的对象和/或对象层次结构。由于各种实体,例如,群集管理应用350、编程人员360、进程370以及企业管理应用380可能希望与群集310进行交互,因此用于控制异构群集的系统可以得益于包括用于通过标准化的命令集控制异构群集的装置。因此,只要群集供应商实现了标准化命令集的后端,则应用、编程人员、以及进程可以与命令集的前端进行交互,这提供了优于传统系统的优势,在传统系统中,这些应用、编程人员、以及进程必须直接与群集中所提供的供应商相关命令进行交互。
应该理解,对象管理器320可以包括群集检测组件和群集监管组件。还应该理解,群集检测组件和和/或群集监管组件可以包括存储在计算机可读介质上的计算机可执行组件。类似地,用于管理基于对象的群集的方法,包括发现群集、在群集建模对象中存储群集数据、更新群集建模对象以及管理群集,可以采用计算机可执行指令加以实现,这些指令类似地存储在计算机可读介质上。
现在参照图4,该图示出了帮助与异构群集解决方案进行交互的系统400。系统400包括群集检测器402和群集监管器404,群集检测器402帮助检测异构群集,例如群集410和群集420。例如,群集410可能来自具有特定于供应商的硬件、软件以及协议的第一供应商。类似地,群集420可能来自不同的供应商,因而可能具有一组不同的特定于供应商的硬件、软件以及通信协议。传统上,与异构群集的交互要求考虑特定于供应商的硬件、软件和/或协议。然而,通过在对象中对群集建模,系统能够与抽象对象而不是供应商相关项目进行交互。因此,系统400能够与对群集建模的对象以及有助于与异构群集解决方案进行交互的对象层次结构进行交互。群集监管器404可以从一个或多个异构群集收集数据,并调用对群集进行建模的对象中的方法以存储从群集收集的数据。群集监管器404也可以用来把数据和/或控制信息提供给群集。例如,可以把存储在对群集进行建模的对象中的数据从这些对象传送到群集,以帮助重新启动群集和/或重新建立丢失状态。类似地,也可以把控制信息从系统400传送到群集,以帮助管理群集。
一组对象430(例如,对象432、对象434、对象436)可用于系统400。该组对象430帮助抽象异构的和不同的群集。抽象群集之间的相似性以及在供应商相关对象中封装群集特定操作,有助于群集检测器402和/或群集监管器404在抽象对象中存储数据。为了简化基于对象的群集管理,可以按有助于单独和/或共同访问对象的对象层次结构安排对象。而且,按层次结构安排抽象对象有助于继承性和其他面向对象的编程技术,反过来,这简化了与群集管理相关联的编程。
群集检测器402和/或群集监管器404可以从一个或多个智能化的、自动的数据收集器接收关于群集的数据。例如,神经网络代理可以大体上连续地遍历和/或监视一个或多个群集可以驻留在其上的一个或多个网络。智能化的、自动的数据收集器能够识别群集、群集组件和/或与群集相关联的资源,并且把关于群集的数据传输到群集检测器402和/或群集监管器404。
现在参照图5,该图示出了通过命令集510与群集520进行通信的基于对象的群集管理系统500。因此,群集检测器502和/或群集监管器504可以通过命令集510与群集520和/或各群集组件(例如,组件522、组件524、组件526)进行通信。把群集和/或群集组件和/或资源之间的相似性抽象到对这些实体进行建模的对象中,以及把特定于供应商的属性和功能封装到对象内部有助于产生命令集510。提供命令集510简化了对群集检测器502和/或群集监管器504的编程,因为仅需要群集管理器500的用户熟悉命令集510,而不需要他们熟悉通过命令集510与之进行通信的对象的内部细节。
在一个示例中,命令集510包括有助于定义群集、定义群集组件、查看群集、查看群集组件、调用群集上的功能、调用群集组件上的功能、调用群集上的进程、调用群集组件上的进程、向群集发送命令、向群集组件发送命令、启动群集、启动群集组件、暂停群集、暂停群集组件、启动故障恢复进程、停止故障恢复进程、启动维护进程、停止维护进程、启动负载均衡进程、以及停止负载均衡进程的命令。提供命令集510还有助于为新创建的群集、群集组件、以及资源产生新对象,反过来,这有助于更迅速地把这些项目与群集管理器相集成。传统上,当创建新群集时,即使有的话,供应商也只有很少关于实现简化与群集管理器的集成的接口的指南(guideline)。因此,如果群集要与群集管理器一起工作,则必须对群集进行定制,或者必须对群集管理器进行定制,这将导致复杂度和成本提高。但是,使用抽象对象和命令集510,可以减轻集成问题。另外,使用预定义的接口,可以模拟正在开发的群集,因此集成测试能够基本上与开发并行进行,从而提供了优于传统系统的优势。
尽管图5示出了驻留在基于对象的群集管理器500和群集520之间的命令集510,但应该理解,可以通过向对群集、群集组件和/或资源进行建模的对象发送命令来实现向群集520和/或各个组件(例如,组件522、组件524、组件526)发送命令。例如,尽管对象可以对群集进行建模,但对象也可以用作基于对象的群集管理器和群集之间的接口。因此,通过向绑定于群集的对象发送命令,可以有效地把命令的期望效果发送到该群集。因此,只要新的群集、群集组件和/或资源实现了命令集510的接口,新的群集、群集组件和/或资源就能够通过命令集510与现存的基于对象的群集管理器500进行交互。这简化了新群集的开发与集成,从而提供了优于传统系统的优势。
现在参照图6,该图示出了对象层次结构。“群集对象模型”是指描述与群集相关的对象以及它们之间的关系的一般性对象模型。因此,群集对象模型有助于提供群集成员关系、服务以及群集所拥有的各种资源的统一视图。类似地,群集对象模型设计成处理群集的动态性,并且能够作为由图形用户界面采用的派生类的基类。
在层次结构的顶部,是群集对象610。群集对象610可以对群集建模,因而可以包括帮助对群集进行建模的数据、用于操纵群集数据的方法,以及用于与命令集因而与基于对象的群集管理器进行交互的方法。在这一层次结构中,主机(Host)对象620、包对象630、资源对象640、以及事件历史对象650从群集对象610继承。类似地,从资源对象640继承的对象包括网络地址对象642、盘卷对象644、应用对象646、以及子网络对象648。同样,事件对象652从事件历史对象650继承。所示对象层次结构是可以由基于对象的群集管理系统用于帮助与异构群集进行交互的对象层次结构的一个示例。尽管图6示出了一个可能的对象层次结构,但应该理解,根据这一应用,也可以采用其他的对象层次结构。例如,帮助基于对象的群集管理的一组对象可以包括对受管对象进行建模的父对象,从父对象继承并且对群集进行建模的群集对象,以及从群集对象继承并且对群集的供应商相关特性(例如,硬件、软件、通信协议)进行建模的供应商相关群集对象。通过有助于获得面向对象的分析、设计以及编程的优点如继承性、聚集、数据隐藏以及封装,按层次结构安排对象简化了与基于对象的群集管理相关联的编程。
在通过用于管理基于对象的群集的系统与方法所采用的对象的一个示例集合中,可以提供从父对象继承并且对代理进行建模的代理对象。如所讨论过的,代理可以遍历定位群集、群集组件和/或资源以及向基于对象的群集管理系统报告关于项目的数据的计算环境。例如,代理可以是基于SNMP或基于RMON的。例如,可以创建新的供应商相关群集,并且例如,把群集与基于对象的群集管理器进行集成通过群集的对象建模来得以简化,从而也可以创建新的群集发现和/或监视代理。通过在对象中对代理进行建模和抽象,包括定义对象和基于对象的群集管理器之间的接口,对代理的集成也类似地得以简化。实现这一接口的新代理可以很容易地与基于对象的群集管理器集成在一起,从而提供优于传统系统的优势。因此,对象层次结构可以包括从代理对象继承并且对供应商相关代理进行建模的供应商相关代理对象。例如,第一供应商可以提供识别由该供应商提供的群集的代理。同样,第二供应商可以提供不仅识别由该供应商提供的群集而且识别由其他供应商提供的群集的代理。因此,两个供应商相关代理对象可以具有独特的能力,但是两者均可以从代理对象继承,而代理对象又从父对象继承,这有助于基于对象的群集管理和迅速的集成。
另一个示例对象层次结构包括从父对象继承并且对任务空间进行建模的任务空间对象。这一示例层次结构还可以包括从父对象继承并且对任务进行建模的任务对象,以及从任务对象继承并且对一个或多个供应商相关任务进行建模的一个或多个供应商相关任务对象。类似地,对象层次结构还可以包括从父对象继承并且对资源空间进行建模的资源空间对象。同样,资源对象可以从父对象继承并且对资源进行建模。由于资源可能具有极不相同的数据、方法、以及其他供应商相关独特性,因此具体实现资源对象可以从资源对象继承并且对诸如服务、进程、子网络、地址、文件系统、应用、以及盘卷的项目进行建模,以帮助把这些资源并入基于对象的群集管理系统。
在一个示例中,由于基于对象的群集管理器可以与帮助显示关于群集、群集组件和/或资源的信息的图形用户界面进行交互,因此一个示例对象层次结构可以包括从父对象继承并且帮助在图形用户界面中按层次结构显示对象的文件夹对象。类似地,资源文件夹可以从文件夹对象继承,并且对资源进行建模,因此,类似地帮助在用于查看群集、群集组件和/或资源的图形用户界面中按层次结构显示对象。另外,示例对象层次结构还可以包括从资源文件夹对象继承并且对诸如服务文件夹、地址文件夹、进程文件夹、子网络文件夹、文件系统文件夹、应用文件夹以及盘卷文件夹的项目进行建模的一个或多个具体实现文件夹对象,以类似地帮助基于对象的群集管理系统与用于例如企业环境的图形用户界面的集成。
应该理解,可以把对象的层次结构存储在计算机可读介质上。因此,存储了对象集的计算机可执行组件的计算机可读介质可以包括对受管对象进行建模的父对象、对群集进行建模的群集对象、对供应商相关群集解决方案进行建模的供应商群集对象、对代理进行建模的代理对象、对供应商相关代理进行建模的供应商相关代理对象、对任务空间进行建模的任务空间对象、对任务进行建模的任务对象、对供应商相关任务进行建模的供应商相关任务对象等。
现在参照图7,该图示出了由群集对象710建模的群集700,其中,群集对象710与基于对象的群集管理系统760进行通信。类似地,图7还示出了分别由各个对象722、732、742、以及752建模的各个群集组件720、730、740、以及750,对象722、723、742、以及752类似地与基于对象的群集管理系统760进行通信。因此,基于对象的群集管理系统760可以通过建模对象710、722-752间接地与群集700和/或各个群集组件720-750交互。通过抽象群集700和/或各个群集组件720-750,对基于对象的群集管理系统760进行编程的任务得以简化,因为把基于对象的群集管理系统760和与群集700和/或群集组件720-750相关联的供应商相关和/或实现细节相隔离。对群集700和群集组件720-750进行建模的另一个好处是,能够采用软件对项目进行模拟,这有助于迅速的原型设计、迅速的集成、故障检测、培训、以及基本上并行的开发。
在图8中,示出了与两个异构群集810和820进行交互的基于对象的群集管理系统800。群集810包括分别由对象850、852、以及854建模的三个群集组件812、814、以及816。类似地,群集820包括分别由对象860、862、以及864建模的三个组件822、824、以及826。群集810由对象830建模,并且群集820又由对象840建模。图中示出与基于对象的群集管理系统800进行通信的对象830、840、850、852、854、860、862、以及864。因此,把基于对象的群集管理系统800和与群集810、组件812、814、816、群集820、以及组件822、824、和826相关联的供应商相关和/或实现相关细节相隔离。因此,简化了对基于对象的群集管理系统800的编程,因为它能够与在对象中所捕获的抽象进行交互,而不是与物理实体中固有的特定细节进行交互,从而提供优于传统非面向对象的系统的优势。
考虑以上所示和所述的示例性系统,参照图9的流程图,将会对所实现的方法更好地加以理解。尽管为了简化说明起见,所示方法是作为一系列模块来示出和描述的,但应该理解,这一方法并不受限于模块顺序,因为某些模块可以按不同的顺序和/或与所示出和所描述的其他模块同时出现。而且,可能只需要部分所示模块来实现示例方法。另外,附加的和/或另选的方法可以使用附加的未示出模块。在一个示例中,这些方法可以作为计算机可执行指令和/或操作加以实现,其中,可以把指令和/或操作存储在计算机可读介质上,计算机可读介质包括但不限于专用集成电路(ASIC)、致密盘(CD)、数字多功能盘(DVD)、随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、盘、载波、以及存储棒。
图9是一个流程图,示出了用于管理基于对象的群集的示例基于计算机的方法。在900处,进行总体初始化。初始化可以包括但不限于分配存储器、建立指针、建立数据通信、获取资源、设置变量、以及显示进程活动。
在910处,判断是否发现了群集,如果910处的判断为“是”,则在920处增加(populate)一个群集对象。因此,在用于管理基于对象的群集的方法中,开始步骤之一是发现一个或多个群集,它们可以是异构群集(例如来自不同的供应商)。发现群集可以包括接收和分析来自一个或多个代理的数据,在一个示例中,代理可以为神经网络代理。从代理接收的数据可以包括但不限于群集的名称、群集的位置、一组群集组件标识符、群集组件之间的一组关系、可以由群集执行的进程、可以发送给群集的命令、正常运行时间(up time)、发生故障时间(down time)、陷阱目标(trap destination)、以及局部可用的应用。由于群集可能为异构的,因此可以通过对象对它们进行抽象和建模,这简化了与异构群集的交互。可以把从发现群集的代理接收的数据存储在对群集进行建模的对象内的一个或多个数据字段中。通常是通过采用与对象相关联的方法的接口,把这些值存储在对群集进行建模的对象中。
一旦发现了一个或多个群集,则也可能发现与群集相关联的资源。类似于如何把与群集相关联的值存储在对群集进行建模的对象中,可以类似地把与资源相关联的值存储在对资源进行建模的对象中。资源可以包括但不限于计算机硬件(例如,盘空间、存储器容量、通信带宽、处理器速度)和计算机软件(例如操作系统、应用、进程、线程)。可以从代理接收关于资源的信息,在一个示例中,代理可以为神经网络代理。
因此,用于管理基于对象的群集的示例方法可以包括发现群集和/或与群集相关联的资源、在建模对象中存储与群集和/或资源相关联的值,以及从神经网络代理接收和分析与群集和/或资源相关联的数据。通过定义群集通信协议来帮助接收数据。该协议可以包括针对群集和/或资源数据类型、大小、位置、以及有效值的标准。由于代理(例如神经网络代理)可以不断地找寻出群集,因此在把与群集相关联的数据存储在建模对象中之前,可以分析数据,以判断新“发现”的群集是否实际上先前已被发现。这简化了减少与重复数据存储相关联的问题。
在930处,判断是否应更新与群集相关联的信息。如果930处的判断为“是”,则在940处,可以更新群集对象(例如,改变值)。因此,用于管理基于对象的群集的示例方法可以包括监视群集,并且当注意到在群集中发生变化时,则可以更新建模对象中的数据值。通常,更新是通过调用对群集进行建模的对象的一个或多个方法进行的。可以从监视代理接收监视数据,在一个示例中,代理为神经网络代理。例如,新发现的群集可以指出,它具有第一盘容量。在工作一段时间之后,盘容量可能发生变化。因此,正在监视群集的代理可能报告新的盘容量。当注意到盘容量发生变化时,可以调用对群集进行建模的对象中的方法来改变存储在对群集进行建模的对象中的数据值。应该理解,在并行处理系统中,监视可以与更新与群集相关联的值基本上并行发生。尽管代理可以监视群集,但代理也可以监视与群集相关联的资源。因此,用于管理基于对象的群集的方法还可以包括监视与群集相关联的资源以及更新对资源进行建模的对象中的值。用于更新对资源进行建模的对象的数据值可以从代理接收,在一个示例中,代理可以为神经网络代理。由于代理可以基本上不断地监视资源和/或群集,因此可以在判断是否调用更新群集和/或资源建模对象中的值的方法之前,分析从代理接收的数据。这有助于维护数据完整性,反过来,数据完整性又有助于维护群集和/或相关群集资源的准确表示和建模。
在950处,判断是否要在群集上执行一个动作。如果950处的判断为“是”,则在960处,可以管理群集。管理群集可以包括但不限于定义群集、查看群集、调用群集上的系统功能、调用群集上的用户功能、向群集发送命令、确认要在群集上执行的动作、启动群集、暂停群集、登记陷阱目标、列出陷阱目标、列出代理进程、列出群集进程、以及启动局部应用。另外,管理群集还可以包括执行针对群集的故障恢复处理、群集内的负载均衡、以及执行针对群集的维护处理。例如,定义群集可以包括为群集组件提供标识符和/或标识一个或多个群集组件的位置。例如,查看群集可以包括显示一个或多个对象或存储在用于对群集和/或群集资源进行建模的对象中的数据值。由于群集可以是计算机组件的协作集合,因此管理群集可以包括调用群集上的系统和/或用户功能。例如,群集可能具有执行安全扫描(例如,病毒检查)的能力,这将被视为系统功能。类似地,群集可能具有执行由群集用户所编写的程序的能力,这将是用户功能。系统和/或用户功能可以例如通过远程过程调用来调用。能够参与群集的“计算机组件”包括但不限于与计算机相关的实体,即硬件、固件、软件及其组合、或者执行中的软件。例如,计算机组件可以是但不局限于运行在处理器上的进程、处理器、对象、可执行代码、执行线程、程序、以及计算机。一个或多个计算机组件可以驻留在执行的进程和/或线程中,并且计算机组件可以集中在一台计算机上和/或分布在两台或更多计算机之间。
群集可以具有状态,因而能够通过启动群集的操作和/或停止群集的操作来管理群集。例如,可以通过向群集发送命令来启动和停止群集。由于能够在群集上采取的动作可能取决于状态(例如,正常运行、发生故障),因此查看群集状态可以帮助确认是否能够在群集上执行动作。当某些状态存在于群集中时,或当某些状态转换发生在群集中时,可以自动地执行某些动作。可以把动作存储在陷阱目标中,因此,可以通过用于管理基于对象的群集的方法来登记群集的陷阱目标,并且可以列出这些陷阱目标。由于从代理接收关于群集的信息,因此群集管理可以包括列出检查和/或报告了关于群集的信息的代理进程。
采用群集的一个应用是支持高度可用的应用。因此,群集管理可以包括执行用于群集的故障恢复处理(例如,将处理从发生故障的群集组件自动移植到正常运行的群集组件)、群集内的负载均衡(在群集组件之间分布处理和/或数据),并且包括执行维护处理(例如,去除碎片、通信完整性测试、安全审计)。通过与对群集进行建模的对象交互而不是直接与物理实体交互来帮助这一处理。
群集和/或群集组件可以与一个或多个群集资源(例如,磁盘、磁带、CD)进行交互。因此,应用也可以涉及对资源的管理。因此,在管理基于对象的群集的示例方法中,可以执行包括定义资源、查看资源、启动和停止资源、以及调用资源上的功能的资源管理功能。例如,定义资源可以包括为资源命名、定位资源、以及把资源与一个或多个群集相关联。类似地,查看资源可以包括显示资源定义值。如同群集,资源可以具有状态,因此可以启动和/或暂停资源。例如,可以采用与群集相关联的磁带备份资源来在午夜到凌晨1:00之间执行夜间自动磁带备份。因此,可以在就要执行自动磁带备份之前启动资源,并且在完成自动磁带备份完成之后停止资源,以有助于省电和降低安全风险。
在970处,判断基于对象的群集的管理是否完成。如果970处的判断为“否”,则处理返回到910,否则可以结束处理。尽管图9所示的各模块是顺序示出的,但应该理解,也可以在并行处理系统中执行用于管理基于对象的群集的方法,因此,可以基本上并行地执行所示模块。
现在参照图10,该图示出了提供对基于对象的群集管理器1030的访问的应用编程接口(API)1000。例如,编程人员1010和/或进程1020可以采用API1000来访问由基于对象的群集管理器1030执行的处理。例如,编程人员1010可以编写访问群集(例如,调用其操作,监视其操作、访问其功能)的程序,其中,编写程序得助于API1000的存在。因此,编程人员1010无需理解群集管理器1030的内部,而只需了解与群集管理器1030的接口1000,从而简化了编程人员的任务。这有助于封装群集管理器1030的功能,同时把这些功能暴露于编程人员1010和/或进程1020。类似地,API1000可以把数据值提供给群集管理器1030和/或从群集管理器1030检索数据值。例如,通过检查利用API1000从群集管理器1030检索的数据,帮助负载均衡的进程1020可以监视一个或多个群集和/或群集组件的状态。当注意到由特定数据值和/或值间关系表示的某些条件时,进程1020可以通过API1000发送一个或多个帮助管理负载均衡的数据值或命令。
在一个示例API1000中,第一接口1040传递与发现群集相关联的应用数据和/或控制数据。作为示例,可以通过发现接口1040传递数据包括但不限于群集的名称、位置、大小、地址、拥有者、供应商、功能以及成员资源的数据。“群集发现”是指识别网络上的群集相关对象的过程。例如,发现可以基于简单网络管理协议(SNMP)代理或者远程监视(RMON)代理。在群集发现中,采取从不同主机收集的相关信息。
第二接口1050传递与监视群集相关联的应用数据和/或控制数据。例如,可以通过监视接口传递包括但不限于群集状态、负载、维护状态以及使用情况的数据。第三接口1060传递与管理群集相关联的应用数据和/或控制数据。例如,可以通过接口1060传递数据,其中数据包括但不限于定义群集、定义群集组件、查看群集、查看群集组件、调用群集上的功能、调用群集组件上的功能、调用群集上的进程、调用群集组件上的进程、向群集发送命令、向群集组件发送命令、启动群集、启动群集组件、暂停群集、暂停群集组件、启动故障恢复进程、停止故障恢复进程、启动维护进程、停止维护进程、启动负载均衡进程、以及停止负载均衡进程。因此,在API1000的一个示例中,可以把一组应用程序接口存储在计算机可读介质中。这些接口可以由计算机组件执行,以获得对基于对象的群集管理器的访问。接口可以包括但不限于接收或提供与发现群集相关联的数据的第一接口,接收或提供与监视群集相关联的数据的第二接口,以及接收或提供与管理群集相关联的数据的第三接口。
上文包括多个示例。当然,不可能为了描述在管理基于对象的群集中所采用的系统、方法、GUI、以及API而描述各组件或方法的每一种可能组合。然而,本领域的普通技术人员应该认识,进一步的组合和排列是可能的。因此,本申请旨在包括落入所附权利要求范围内的变更、修改、以及变化。此外,就在详细描述或权利要求中采用术语“包括(includes)”而言,当该术语在权利要求中用作过渡词加以解释时,它以类似于术语“包括(comprising)”的方式旨在是包括性的。
权利要求
1.一种用于管理基于对象的群集的方法,包括发现一个或多个群集;以及把与一个或多个群集相关联的一个或多个值存储在一个或多个对群集进行建模的对象中。
2.如权利要求1所述的方法,其中,发现群集包括从一个或多个代理接收和分析数据。
3.如权利要求2所述的方法,其中,代理为神经网络代理。
4.如权利要求1所述的方法,包括发现与群集相关联的一个或多个资源;以及把与一个或多个资源相关联的一个或多个值存储在一个或多个对资源进行建模的对象中。
5.如权利要求4所述的方法,其中,发现资源包括从一个或多个代理接收和分析数据。
6.如权利要求5所述的方法,其中,代理为神经网络代理。
7.如权利要求1所述的方法,包括监视一个或多个群集;以及更新与一个或多个对群集进行建模的对象相关联的一个或多个值。
8.如权利要求7所述的方法,其中,更新一个或多个值包括调用一个或多个对群集进行建模的对象的一个或多个方法。
9.如权利要求7所述的方法,其中,监视一个或多个群集包括从一个或多个代理接收和分析数据。
10.如权利要求9所述的方法,其中,代理为神经网络代理。
11.如权利要求7所述的方法,包括监视与一个或多个群集相关联的一个或多个资源;以及更新与一个或多个对资源进行建模的对象相关联的一个或多个值。
12.如权利要求11所述的方法,其中,更新一个或多个值包括调用一个或多个对资源进行建模的对象的一个或多个方法。
13.如权利要求11所述的方法,其中,监视一个或多个资源包括从一个或多个代理接收和分析数据。
14.如权利要求13所述的方法,其中,代理为神经网络代理。
15.如权利要求7所述的方法,包括管理一个或多个群集,其中,管理群集包括执行至少下列之一定义群集、查看群集、调用群集上的系统功能、调用群集上的用户功能、向群集发送命令、确认要在群集上执行的动作、启动群集、暂停群集、登记陷阱目标、列出陷阱目标、列出代理进程、列出群集进程、以及启动局部应用
16.如权利要求7所述的方法,包括管理一个或多个群集,其中,管理群集包括执行至少下列之一针对群集的故障恢复处理、群集内的负载均衡、以及针对群集的维护处理。
17.如权利要求15所述的方法,包括管理一个或多个资源,其中,管理资源包括执行至少下列之一定义资源、查看资源、启动资源、暂停资源、以及调用资源上的功能。
18.一种用于帮助与异构群集解决方案进行交互的系统,包括检测一个或多个群集的群集检测器,以及从一个或多个群集收集数据的群集监管器。
19.如权利要求18所述的系统,其中,群集监管器向一个或多个群集提供数据和控制至少之一。
20.如权利要求19所述的系统,其中,群集检测器和群集监管器至少之一在抽象了群集和群集组件至少之一的一个或多个对象中存储数据。
21.如权利要求20所述的系统,其中,按对象层次结构安排一个或多个对象。
22.如权利要求20所述的系统,其中,群集检测器和群集监管器至少之一通过标准化的、规格化的命令集与一个或多个对象进行通信。
23.如权利要求22所述的系统,其中,命令集包括执行至少下列之一的命令定义群集、定义群集组件、查看群集、查看群集组件、调用群集上的功能、调用群集组件上的功能、调用群集上的进程、调用群集组件上的进程、向群集发送命令、向群集组件发送命令、启动群集、启动群集组件、暂停群集、暂停群集组件、启动故障恢复进程、停止故障恢复进程、启动维护进程、停止维护进程、启动负载均衡进程、以及停止负载均衡进程。
24.如权利要求18所述的系统,其中,群集检测器和群集监管器至少之一从一个或多个智能化的、自动的数据收集器接收数据。
25.帮助基于对象的群集管理的对象集,包括父对象,对受管对象进行建模;群集对象,从父对象继承并且对群集进行建模;以及一个或多个供应商群集对象,从群集对象继承并且对一个或多个供应商相关群集解决方案进行建模。
26.如权利要求25所述的对象集,包括代理对象,从父对象继承并且对代理进行建模;以及一个或多个供应商代理对象,从代理对象继承并且对一个或多个供应商相关代理进行建模。
27.如权利要求25所述的对象集,包括任务空间对象,从父对象继承并且对任务空间进行建模;任务对象,从父对象继承并且对任务进行建模;以及一个或多个供应商任务对象,从任务对象继承并且对一个或多个供应商相关任务进行建模。
28.如权利要求25所述的对象集,包括资源空间对象,从父对象继承并且对资源空间进行建模;资源对象,从父对象继承并且对资源进行建模;以及一个或多个具体实现资源对象,从资源对象继承并且对服务、进程、子网络、地址、文件系统、应用、以及盘卷至少之一进行建模。
29.如权利要求25所述的对象集,包括文件夹对象,从父对象继承并且对帮助在图形用户界面中按层次结构显示对象的文件夹进行建模;资源文件夹对象,从文件夹对象继承并且对帮助在图形用户界面中按层次结构显示对象的资源进行建模;以及一个或多个具体实现文件夹对象,从资源文件夹对象继承并且对服务文件夹、地址文件夹、进程文件夹、子网络文件夹、文件系统文件夹、应用文件夹、以及盘卷文件夹至少之一进行建模。
30.存储一组对象的计算机可执行组件的计算机可读介质,包括父对象,对受管对象进行建模;群集对象,从父对象继承并且对群集进行建模;一个或多个供应商群集对象,从群集对象继承并且对一个或多个供应商相关群集解决方案进行建模;代理对象,从父对象继承并且对代理进行建模;一个或多个供应商代理对象,从代理对象继承并且对一个或多个供应商相关代理进行建模;任务空间对象,从父对象继承并且对任务空间进行建模;任务对象,从父对象继承并且对任务进行建模;以及一个或多个供应商任务对象,从任务对象继承并且对一个或多个供应商相关任务进行建模;资源空间对象,从父对象继承并且对资源空间进行建模;资源对象,从父对象继承并且对资源进行建模;以及一个或多个具体实现资源对象,从资源对象继承并且对服务、进程、子网络、地址、文件系统、应用、以及盘卷至少之一进行建模;文件夹对象,从父对象继承并且对帮助在图形用户界面中按层次结构显示对象的文件夹进行建模;资源文件夹对象,从文件夹对象继承并且对帮助在图形用户界面中按层次结构显示的文件夹进行建模;以及一个或多个具体实现文件夹对象,从资源文件夹对象继承并且对服务文件夹、地址文件夹、进程文件夹、子网络文件夹、文件系统文件夹、应用文件夹、以及盘卷文件夹至少之一进行建模。
31.在具有包括显示器和选择设备的图形用户界面的计算机可读介质中,一种在显示器上提供一组数据项并从中选择的方法,该方法包括检索一组数据项,其中每个数据项代表一个群集管理选项;在显示器上显示这组数据项;接收表示选择设备选择被选数据项的数据项选择信号;以及响应该信号,启动与被选数据项相关联的群集管理操作。
32.如权利要求31所述的方法,其中,群集管理操作为至少下列之一定义群集、定义群集组件、查看群集、查看群集组件、调用群集上的功能、调用群集组件上的功能、调用群集上的进程、调用群集组件上的进程、向群集发送命令、向群集组件发送命令、启动群集、启动群集组件、暂停群集、暂停群集组件、启动故障恢复进程、停止故障恢复进程、启动维护进程、停止维护进程、启动负载均衡进程、以及停止负载均衡进程。
33.一组在计算机可读介质上实施的应用程序接口,用于由计算机组件结合帮助基于对象的群集管理的应用程序一起加以执行,包括第一接口,接收和返回与发现群集相关联的应用数据和控制数据至少之一;第二接口,接收和返回与监视群集相关联的应用数据和控制数据至少之一;以及第三接口,接收和返回与管理群集相关联的应用数据和控制数据至少之一。
34.一种用于控制异构群集的系统,包括用于识别一个或多个异构群集的装置;用于调查一个或多个异构群集的装置;用于抽象群集的装置;用于通过标准化的命令集控制一个或多个异构群集的装置。
35.一种存储用于帮助与异构群集解决方案交互的系统的计算机可执行组件的计算机可读介质,其中,该系统包括检测一个或多个群集的群集检测组件;从一个或多个群集收集数据的群集监管组件;以及一个或多个对群集进行建模的对象。
36.一种存储用于管理基于对象的群集的方法的计算机可执行指令的计算机可读介质,其中,该方法包括发现一个或多个群集;把与一个或多个群集相关联的群集数据存储在一个或多个群集建模对象中;至少部分根据监视一个或多个所发现的群集,更新一个或多个群集建模对象;以及管理一个或多个群集。
全文摘要
提供了一种用于管理基于对象的群集的方法、系统、API、GUI、以及计算机可读介质(10)。该方法提供了一种用于发现、监视、以及管理基于对象的群集的计算机可执行方法。该系统提供了一种基于计算机的系统(1),用于帮助与异构群集解决方案的交互。该系统包括用于检测群集和监管所检测的群集和/或组件的计算机组件。
文档编号G09G5/00GK1695282SQ02816646
公开日2005年11月9日 申请日期2002年6月8日 优先权日2001年7月6日
发明者库罗斯·H·埃斯法哈尼 申请人:电脑联合想象公司