Sun Cluster 概念指南(适用于 Solaris OS)

开发新的数据服务

Sun 提供了配置文件和管理方法模板,使您能够在一个群集中让各种应用程序以失效转移或可伸缩服务的方式运行。如果您想使之作为一个失效转移或可伸缩服务来运行的应用程序不是 Sun 当前提供的,则可以使用一个 API 或 DSDL API 来配置该应用程序,使之作为一个失效转移或可伸缩服务运行。

有一套标准可用于确定一个应用程序是否可以成为失效转移服务。特定的标准在 SunPlex 文档中进行了说明,这些文档说明您的应用程序可使用的 API。

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

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

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

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

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

此类存储的另一个示例是后端数据库,例如用于基于 SPARC 群集的高可用 Oracle 或 Oracle Real Application Clusters。请注意,这种类型的后端数据库服务器使用数据库查询或更新事务提供内置的同步,因此多个服务器实例不需要实现它们自己的同步。

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

最后要注意的一点是,实例可能具备一些专用数据,这些数据未与其他实例的数据相连接。在这种情况下,该服务不必关心自己与并行访问是否同步,因为数据是专用的,只有这个实例才可对其进行处理。此时,您必须小心不要在群集文件系统下存储此专用数据,因为它有变为全局访问的可能性。

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

SunPlex 系统提供以下组件以使应用程序具有高可用性:

Sun Cluster 数据服务规划和管理指南(适用于 Solaris OS)介绍了如何安装和配置随 SunPlex 系统提供的数据服务。Sun Cluster 3.1 9/04 Software Collection for Solaris OS(SPARC 平台版)介绍了如何用工具装备其他应用程序使其在 Sun Cluster 框架下具有高度可用性。

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