Sun Cluster 3.0 概念

开发新的数据服务

Sun 提供了软件使您能够使各种应用程序作为群集内的高可用数据服务运行。如果您想使之 作为一个高可用性服务运行的应用程序不是 Sun 当前提供的应用程序,则可以使用一个 API 或 DSDL API 来接受应用程序并 加以配置,使之作为一个高可用性应用程序运行。有两种数据服务风格,失败切换和可伸缩。有一套标准可以用来确定您的应用程序是否使用这些数据服务风格 中的一种。特定的标准在 Sun Cluster 文档中进行了描述,该文档说明您的应用程序可使用的 API。

这里,我们提出一些准则来帮助您了解您的服务是否可受益于可伸缩数据服务体系结构。有关可伸缩服务的更多基本信息, 请阅读"可伸缩数据服务"

满足下列准则的新服务可以利用可伸缩服务。如果现有的服务不完全符合这些准则,则可能 需要重写一些部分,使服务符合这些准则。

可伸缩数据服务具有以下特点。首先,这样的服务是由一个或多个 服务器实例组成的。每个实例运行在群集的不同节点上。同一服务的两个或更多实例不能在相同的 节点上运行。

其次,如果服务提供外部逻辑数据存储,那么从多个服务器实例对此存储的并行访问必须同步,以避免 丢失更新信息或在数据更改时读取数据。请注意,我们讲“外部的”是为了区分存储与“内存内”的状态,而讲“逻辑的”是 因为存储看起来象单独的实体,尽管它本身可能是复制的。此外,这种逻辑数据存储有这样的 属性,不论何时任何服务器实例更新该存储,其他实例会立即看到该更新。

Sun Cluster 通过它的群集文件系统和全局原始分区来提供这样一个外部存储器。又比如,假定一项服务将新数据写入外部日志文件,或修改在适当位置的现有数据。当此服务的多个实例运行 时,每个都可以访问此外部日志,并且可能会同时访问这一日志。每个实例必须同步其对日志的访问,否则这些实例就 会彼此干扰。此服务可以通过 fcntl(2)lockf(3C) 来 使用普通的 Solaris 文件锁定,从而获取期望的同步。

关于这样存储的另一个实例是像高可用 Oracle 或 Oracle Parallel Server 那样的后端数据库。请注意,这样的后端数据库 服务器使用数据库查询或更新事务提供内置的同步,因此多个服务器实例不需要实现它们自己的同步。

Sun 的 IMAP 服务器是当前并不体现为可伸缩服务的一种服务实例。该服务更新一个存储,但那个存储是专用的,并且 当多个 IMAP 实例写入到这一存储时,它们因为更新没有被同步而相互覆盖。IMAP 服务器必须被重写以使并行访问同步。

最终,要注意一些实例可能会有从其他实例中脱离出来的专用数据。在此情况下,服务不需要关心它自身是否可以 使并行访问同步,因为数据是专用的,而且只有该实例可以操纵它。此时,您必须小心不要在群集文件系统下存储此 专用数据,因为它有变为全局访问的可能性。

数据服务 API 和 Data 服务开发库 API

Sun Cluster 提供以下组件以使应用程序具有高可用性:

Sun Cluster 3.0 Data Services Installation and Configuration Guide 介绍了如何安装和配置与 Sun Cluster 一起提供的数据服务。Sun Cluster 3.0 Data Services Developers' Guide 介绍了如何装备其他应用程序 以使它们在 Sun Cluster 框架下高度可用。

Sun Cluster API 和数据服务开发库 API 使应用程序编程人员能够开发故障监视器及编写启动和停止数据服务实例的脚本。有了这些 工具,应用程序就可以被装备成为一种失败切换或可伸缩的数据服务。另外,Sun Cluster 提供一 种“普通的”数据服务,这种服务可以用于快速生成应用程序所需的启动和停止方法,从而使它作为一种 高可用性的数据服务运行。