当前位置导航:炫浪网>>网络学院>>网页制作>>ASP.NET教程

Windows群集开发:4)资源和资源DLL

欢迎进入.NET社区论坛,与200万技术人员互动交流 >>进入

        资源和资源DLL

        对于群集服务,群集是可管理的硬件或软件组件。例如资源可以是磁盘,网络名字,IP地址,数据库,WEB站点,应用程序,以及任何其它可以联机和脱机的实体。资源按类型进行组织。资源类型包括物理硬件(例如磁盘驱动器)和逻辑项(诸如IP地址,文件共享,以及普通应用程序)。

        每个资源使用一个资源DLL。资源DLL是介于资源监视器和资源之间的一个大的被动转换层。资源监视器调用资源DLL的入口函数来检查资源状态并将资源联机或脱机。资源DLL负责与它的资源之间的通信,可以通过任何方便的IPC机制来实现。

        注意 没有提供自己的资源DLL的应用和服务仍然能够在群集环境内进行配置-MSCS为这种情况提供一个通用资源DLL,群集服务将这样的应用或服务作为普通的、群集不可感知的应用或服务。不过,任何需要利用群集环境优势的应用或服务,应当实现能够与群集服务交互的自定义的资源DLL,以获取由MSCS所提供的丰富功能带来的优势。

        为什么要编写自定义DLL?

        一个常被问及的问题是:既然MSCS附带了为普通应用和服务准备的DLL,为什么开发人员还要编写资源DLL?主要原因是MSCS的提供的DLL是相当基础的、很“阳春”DLL,只提供基本的故障转移/故障恢复能力。

        例如,如果一个应用程序已经打开一些文件,而群集服务出于某种原因决定将这个应用程序移动到另一个节点,该应用程序在被移动之前无法在原先节点上干净利落的关闭。特定于应用程序的资源DLL能够提供干净的关闭功能。群集服务能够从较好控制的资源轮询中受益(请参考后续章节中关于LooksAlive和IsAlive例程的描述)。并且,一些资源需要传入或输入特定参数或属性(公用和私有的)的集合来使资源联机或脱机,诸如此类。这些在实现群集管理扩展时加入的参数或属性与资源类型(与资源DLL相结合)紧密结合。未实现资源DLL的应用和服务必须根据通用扩展的要求限制其参数和属性。

        最后一点,最重要的原因是提供特定于应用程序的资源DLL将能支持“活动/活动(Active/Active)”式的故障转移和故障恢复功能。这将允许同一类型资源的分离实例在不同节点上运行,每个实例使用位于共享SCSI总线上的磁盘上的不同的数据集进行工作。(这意味着虽然数据非共享,但是资源类型在两个节点上都是活动的。根据定义,一个资源仅能有一个实例;但是,一个资源类型可以有多个实例。)如果该资源类型的实例在其中一个节点上失效了,其实例将被移动或“故障转移”到下一个可用节点。例如,假定资源类型是一个数据库管理程序,那么可以在每个节点上都运行该程序的一个拷贝。可以定义一个特别的数据库(db1)作为资源。根据“活动/活动”模式的功能,可以在节点1和节点2之间来回移动db1,方法是在每个节点上的数据库管理程序正常的释放和请求数据库。这种沟通方法不可能发生在通用应用程序和和服务的资源类型上。

        仲裁资源

        在上述应用程序、服务,以及其它资源之外,MSCS还允许一种特殊的资源,称为“仲裁(quorum)资源”,在群集操作中扮演一个关键角色。仲裁资源必须提供持久独断机制(也就是说,允许单个节点取得对仲裁资源的控制,并独占该控制不被其它节点获取),也必须提供能够被群集内任一节点访问的物理存储空间(虽然任一时刻仅有一个节点能够访问该物理存储空间)。仲裁资源维护群集数据库的最新版本,假如发生失效情况,将变化保存到群集数据库。MSCS包含了用于特定的群集资源的标准仲裁资源DLL。当然也可能实现自定义的仲裁资源,本文不包含编制自定义仲裁资源DLL的过程和指引。

        下面讨论创建群集可感知应用程序需要用到的编程工具,以及创建新资源类型和编制自定义资源DLL的指引。

相关内容
赞助商链接