Windows群集开发-编写微软群集服务器(MSCS)资源DLL:5)创建群集可感知应用

来源:互联网 发布:比特币 编程语言 编辑:程序博客网 时间:2024/05/17 07:54

创建群集可感知应用

MSCS 1.0版中,群集可感知应用程序是:使用群集API、群集控制代码函数、以及资源API(在资源API中实现)与MSCS群集软件通信,并发挥群集功能优势的应用程序。

  • 群集API允许群集可感知应用程序、传统应用程序,以及服务与群集软件交互。
  • 群集控制代码是32位值,描述加诸于网络、网络接口、资源、资源类型、群组或节点上的操作。
  • 资源API定义了函数、结构、宏,允许群集服务与资源通信。

下面讨论细节。

群集API

群集API允许应用程序获取群集对象信息,初始化操作,更新群集数据库信息。有7个群集API集合:

  • 群集管理,提供对事件通知、群集对象、所有群集状态信息的访问。
  • 群集数据库管理,允许群集可感知应用程序或资源DLL访问和更新群集数据库。(群集数据库是以Windows NT注册表的一部分来实现的。驻留在每个群集节点上。它包含群集中所有物理和逻辑部件)仅应由群集服务和资源DLL通过API修改群集数据库。注意群集对象的属性应该使用控制函数来管理。应该只有资源DLL和由群集DLL控制的应用程序使用群集数据库管理API
  • 群组管理,提供对群集内每个群组的访问以及允许调用者修改群组成员或状态和获取信息。该函数主要由群集服务的资源和故障转移管理器实现。
  • 网络接口管理,打开或关闭网络接口,执行选择操作,以及获取信息。
  • 网络管理,提供对网络信息的访问,该信息由群集服务进行监视。
  • 节点管理,允许调用者修改节点状态,执行操作,获取信息。这些函数主要由成员管理器实现。
  • 资源管理,允许调用者在一个或多个资源上执行不同操作,包括独立信息的获取、创建或删除资源、由资源控制代码定义的初始化操作。

群集管理工具也使用群集API,例如MSCS自带的群集管理器(CluAdmin.Exe),资源监视器和资源DLL也有使用。

3展示群集API是如何在群集环境中使用的。

3在群集环境中的群集API访问

群集控制节点

群集控制代码是32位值,用于描述加诸在群集对象-比如资源、资源类型、群组、节点、或者网络、网络接口-上的操作。群集控制代码类别有:内部,外部。内部控制节点由仅由群集服务使用,应用程序和资源DLL不能使用。典型地,内部控制代码由群集服务发出,向资源或资源类型通知事件。

外部代码表示可以由应用程序执行的操作。这些操作的一个小子集用于管理群集属性。群集属性用于描述群集对象-如资源,资源类型,群组,节点-的特性。有两种类型:公用,私有。公用属性是静态的,作为特定类型应用于所有对象,例如资源类型。举个例子,所有资源  都有RestartAction的公用属性。公用属性存储在群集数据库中。私有属性可以是静态或动态数据,用于描述资源的特定类型。这些值存储在群集数据库或其它地方。群集属性进一步可分为只读或读写属性。

更多关于群集控制代码,群集对象以及属性属性的信息,请参考SDK文档。

资源API

资源API定义了函数,结构,允许群集服务与资源通信的宏。通信是非直接的。群集服务通过资源监视器初始化请求,资源监视器将它们传递给资源。状态和事件信息又从资源DLL传回到群集服务。

4展示了控制流是如何从群集服务通过资源监视器以及资源DLL传递到资源的。该图展示了4个资源DLL,三个用于群集服务资源类型,一个用于由第三方开发者定义的资源类型。

4.资源控制流

资源API包括:

  • 入口点函数,允许资源监视器管理资源。
  • 回调函数,允许资源DLL报告状态,记录事件日志,允许群集服务请求资源执行特定任务。
  • 结构和宏,用于描述由Startup入口点函数返回的函数表,以及描述资源状态。

因为群集可感知应用程序是通过编写自定义资源实现的,所以也必须定义其资源类型。并且,如本文前面所述,如果应用程序按自定义资源接受管理,就必须提供两个DLL-资源DLL和群集管理器扩展DLL。(注意群集管理器扩展DLL仅当资源需要属性时是需要的。不需要属性的资源的例子是时间服务类型的资源。)

下面,开始谈及如何编写资源类型DLL