Sun Cluster 数据服务开发者指南(适用于 Solaris OS)

第 6 章 数据服务开发库 (DSDL)

本章概要介绍了组成数据服务开发库或 DSDL 的应用程序编程接口。DSDL 在 libdsdev.so 库中实现,它包含在 Sun Cluster 软件包中。

本章包含以下主题:

DSDL 概述

DSDL API 位于 RMAPI 的顶层。因此,它并没有取代 RMAPI,而是封装并扩展了 RMAPI 的功能。通过提供针对特定的 Sun Cluster 集成问题的预设解决方案,DSDL 简化了数据服务开发工作,因此您可以将大部分开发时间用在您的应用程序内部的高可用性和可伸缩问题上,避免在将应用程序的启动、关闭和监视过程与 Sun Cluster 相集成这一问题上花费大量时间。

管理配置特性

所有回调方法都需要存取配置特性。通过执行以下操作,DSDL 支持对特性的存取:

必须在每个回调方法开始部分进行调用的 scds_initialize 函数可执行以下操作:


注意 –

对于 Validate 方法,scds_initialize 将分析传送到命令行的特性值,而无需编写 Validate 的分析函数。


scds_initialize 函数还将初始化记录环境并验证故障监视器的探测设置。

DSDL 提供了多组函数,以检索资源、资源类型和资源组特性以及常用的扩展特性。通过采用以下约定,这些函数可对特性的存取操作进行标准化。

启动和停止数据服务

Start 方法将用来执行在群集节点上启动数据服务时所需的操作。通常,这些操作包括检索资源特性,定位特定于应用程序的可执行文件和配置文件,以及使用相应的命令行参数启动应用程序。

scds_initialize 函数用来检索资源配置。Start 方法可以使用特性的公用函数来检索特定特性(例如 Confdir_list )的值,这些特性用于标识要启动的应用程序的配置目录和文件。

Start 方法可以在进程监视工具 (PMF) 的控制下调用 scds_pmf_start 来启动应用程序。PMF 可以用来指定要应用到进程中的监视级别,并可以在失败的情况下重启该进程。要获得使用 DSDL 实现的 Start 方法的实例,请参见xfnts_start 方法

Stop 方法必须具有幂等性,以便即使是在应用程序不运行的情况下对节点调用了该方法,它也可以在成功状态下退出。如果 Stop 方法失败,则要停止的资源被设置成 STOP_FAILED 状态,这将导致群集的硬重新启动。

要避免使资源处于 STOP_FAILED 状态,Stop 方法必须全力停止该资源。scds_pmf_stop 函数将进行阶段性尝试以停止该资源。它首先将使用 SIGTERM 信号尝试停止该资源,如果失败,它将使用 SIGKILL 信号。有关更多信息,请参见scds_pmf_stop(3HA)

实现故障监视器

通过提供一个预设模型,DSDL 大大降低了实现故障监视器的复杂性。当在节点上启动资源时,Monitor_start 方法将在 PMF 的控制下启动故障监视器。只要该资源在节点上运行,故障监视器也将循环运行。DSDL 故障监视器的高级逻辑如下:

存取网络地址信息

DSDL 提供了公用函数,以返回资源和资源组的网络地址信息。例如,scds_get_netaddr_list 用来检索资源所使用的网络地址资源,并启用故障监视器来探测该应用程序。

DSDL 还提供了一组用来进行基于 TCP 的监视操作的函数。通常,这些函数将建立服务的简单套接字连接,从该服务读取数据并向其写入数据,然后再从该服务断开连接。探测结果可以发送到 DSDL scds_fm_action 函数,以确定要执行的操作。

要获得基于 TCP 的故障监视的实例,请参见xfnts_validate 方法

调试资源类型实现

DSDL 具有可帮助您调试数据服务的内置功能。

DSDL 实用程序 scds_syslog_debug() 提供了一个基本框架,可用来向资源类型实现添加调试语句。可以按每个群集节点上的每个资源类型实现动态设置调试级别(1 至 9 之间的数字)。名为 /var/cluster/rgm/rt/rtname/loglevel 的文件(仅包含 1 至 9 之间的整数)供所有资源类型回调方法读取。DSDL 例行程序 scds_initialize() 将读取此文件并在内部将调试级别设置为指定级别。缺省调试级别是 0,指定数据服务不记录任何调试消息。

scds_syslog_debug() 函数将在 LOG_DEBUG 优先级别下使用 scha_cluster_getlogfacility() 函数返回的工具。您可以在 /etc/syslog.conf 中配置这些调试消息。

您可以使用 scds_syslog 实用程序将一些调试消息转换成资源类型常规操作的说明性消息(可能在 LOG_INFO 优先级别下进行)。如果您查看一下第 8 章,DSDL 资源类型实现样例中的 DSDL 应用程序样例,就可以发现它可以自由地使用 scds_syslog_debugscds_syslog 函数。

启用具有高可用性的本地文件系统

您可以使用 HAStoragePlus 资源类型使本地文件系统在 Sun Cluster 环境中高度可用。本地文件系统分区必须位于全局磁盘组中。必须启用关系转换,还要将 Sun Cluster 环境配置为可以进行故障转移。通过此设置,用户可以将多主机磁盘上的任意文件系统设置为可从与这些多主机磁盘直接相连接的任意主机上存取。对于一些 I/O 增强数据服务,强烈建议使用具有高可用性的本地文件系统。Sun Cluster 数据服务规划和管理指南(适用于 Solaris OS) 中的“启用具有高可用性的本地文件系统”中包含了有关配置 HAStoragePlus 资源类型的信息。