Sun 提供了配置文件和管理方法模板,使您能够在一个群集中让各种应用程序以故障转移或可伸缩服务的方式运行。如果您想使之作为一个故障转移或可伸缩服务来运行的应用程序不是 Sun 当前提供的,则可以使用一个 API 或 DSDL API 来配置该应用程序,使之作为一个故障转移或可伸缩服务运行。
有一套标准可用于确定一个应用程序是否可以成为故障转移服务。特定的标准在 SunPlex 文档中进行了描述,该文档说明您的应用程序可使用的 API。
这里,我们提出一些准则来帮助您了解您的服务是否可受益于可伸缩数据服务体系结构。有关可伸缩服务的更多基本信息,请阅读"可伸缩数据服务"。
满足下列准则的新服务可以利用可伸缩服务。如果现有的服务不完全符合这些准则,则可能需要重写一些部分,使服务符合这些准则。
可伸缩数据服务具有以下特点。首先,这样的服务是由一个或多个服务器实例组
成的。每个实例运行在群集的不同节点上。同一服务的两个或更多实例不能在相同的节点上运行。
其次,如果服务提供外部逻辑数据存储,那么从多个服务器实例对此存储的并行访问必须同步,以避免丢失更新信息或在数据更改时读取数据。请注意,我们讲"外部的"是为了区分存储与内存内的状态,而讲"逻辑的"是因为存储看起来象单独的实体,尽管它本身可能是复制的。此外,这种逻辑数据存储有这样的特性,不论何时任何服务器实例更新该存储,其他实例会立即看到该更新。
SunPlex 系统通过它的群集文件系统和全局原始分区来提供这样一个外部存储器。又比如,假定一项服务将新数据写入外部日志文件,或修改在适当位置的现有数据。当此服务的多个实例运行时,每个都可以访问此外部日志,并且可能会同时访问这一日志。每个实例必须同步其对日志的访问,否则这些实例就会彼此干扰。此服务可以通过 fcntl(2) 和 lockf(3C)来使用普通的 Solaris 文件锁定,从而获取期望的同步。
关于这种存储类型的另一个示例是像高可用 Oracle 或 Oracle Parallel Server 那样的后端数据库。请注意,这种类型的后端数据库服务器使用数据库查询或更新事务提供内置的同步,因此多个服务器实例不需要实现它们自己的同步。
Sun 的 IMAP 服务器是当前并不体现为可伸缩服务的一个服务示例。该服务更新一个存储,但那个存储是专用的,并且当多个 IMAP 实例写入到这一存储时,它们因为更新没有被同步而相互覆盖。IMAP 服务器必须被重写以使并行访问同步。
最后要注意的一点是,实例可能具备一些专用数据,这些数据未与其它实例的数据相连接。在这种情况下,该服务不必关心自己与并行访问是否同步,因为数据是专用的,只有这个实例才可对其进行处理。此时,您必须小心不要在群集文件系统下存储此专用数据,因为它有变为全局访问的可能性。
SunPlex 系统提供以下组件以使应用程序具有高可用性:
作为 SunPlex 系统部件提供的数据服务
一个数据服务 API
一个数据服务开发库 API
一种"普通的"数据服务
《Sun Cluster 3.0 U1 Data Services Installation and Configuration Guide》介绍了如何安装和配置与 SunPlex 系统一起提供的数据服务。《Sun Cluster 3.0 U1 Data Services Developer's Guide》介绍了如何装备其它应用程序以使它们在 Sun Cluster框架下高度可用。
Sun Cluster API 使应用程序开发者能够开发可启动和停止数据服务实例的故障监视器和脚本。有了这些工具,应用程序就可以被装备成为一种故障转移或可伸缩的数据服务。另外,SunPlex系统提供一种"普通的"数据服务,这种服务可以用于快速生成应用程序所需的启动和停止方法,从而使它作为一种故障转移或可伸缩的服务运行。