创建群集可感知应用 在MSCS版中群集可感知应用程序是使用群集API群集控制代码函数以及资源API(在资源API中实现)与MSCS群集软件通信并发挥群集功能优势的应用程序 群集API允许群集可感知应用程序传统应用程序以及服务与群集软件交互 群集控制代码是位值描述加诸于网络网络接口资源资源类型群组或节点上的操作 资源API定义了函数结构宏允许群集服务与资源通信 下面讨论细节 群集API 群集API允许应用程序获取群集对象信息初始化操作更新群集数据库信息有个群集API集合 群集管理提供对事件通知群集对象所有群集状态信息的访问 群集数据库管理允许群集可感知应用程序或资源DLL访问和更新群集数据库(群集数据库是以Windows NT注册表的一部分来实现的驻留在每个群集节点上它包含群集中所有物理和逻辑部件)仅应由群集服务和资源DLL通过API修改群集数据库注意群集对象的属性应该使用控制函数来管理应该只有资源DLL和由群集DLL控制的应用程序使用群集数据库管理API 群组管理提供对群集内每个群组的访问以及允许调用者修改群组成员或状态和获取信息该函数主要由群集服务的资源和故障转移管理器实现 网络接口管理打开或关闭网络接口执行选择操作以及获取信息 网络管理提供对网络信息的访问该信息由群集服务进行监视 节点管理允许调用者修改节点状态执行操作获取信息这些函数主要由成员管理器实现 资源管理允许调用者在一个或多个资源上执行不同操作包括独立信息的获取创建或删除资源由资源控制代码定义的初始化操作 群集管理工具也使用群集API例如MSCS自带的群集管理器(CluAdminExe)资源监视器和资源DLL也有使用 图展示群集API是如何在群集环境中使用的 图在群集环境中的群集API访问 群集控制节点 群集控制代码是位值用于描述加诸在群集对象-比如资源资源类型群组节点或者网络网络接口-上的操作群集控制代码类别有内部外部内部控制节点由仅由群集服务使用应用程序和资源DLL不能使用典型地内部控制代码由群集服务发出向资源或资源类型通知事件 外部代码表示可以由应用程序执行的操作这些操作的一个小子集用于管理群集属性群集属性用于描述群集对象-如资源资源类型群组节点-的特性有两种类型公用私有公用属性是静态的作为特定类型应用于所有对象例如资源类型举个例子所有资源都有RestartAction的公用属性公用属性存储在群集数据库中私有属性可以是静态或动态数据用于描述资源的特定类型这些值存储在群集数据库或其它地方群集属性进一步可分为只读或读写属性 更多关于群集控制代码群集对象以及属性属性的信息请参考SDK文档 资源API 资源API定义了函数结构允许群集服务与资源通信的宏通信是非直接的群集服务通过资源监视器初始化请求资源监视器将它们传递给资源状态和事件信息又从资源DLL传回到群集服务 图展示了控制流是如何从群集服务通过资源监视器以及资源DLL传递到资源的该图展示了个资源DLL三个用于群集服务资源类型一个用于由第三方开发者定义的资源类型 图资源控制流 资源API包括 入口点函数允许资源监视器管理资源 回调函数允许资源DLL报告状态记录事件日志允许群集服务请求资源执行特定任务 结构和宏用于描述由Startup入口点函数返回的函数表以及描述资源状态 因为群集可感知应用程序是通过编写自定义资源实现的所以也必须定义其资源类型并且如本文前面所述如果应用程序按自定义资源接受管理就必须提供两个DLL-资源DLL和群集管理器扩展DLL(注意群集管理器扩展DLL仅当资源需要属性时是需要的不需要属性的资源的例子是时间服务类型的资源) 下面开始谈及如何编写资源类型DLL |