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

第 6 章 数据服务开发库

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

本章包括以下主题:

DSDL 概述

DSDL API 位于资源管理应用程序编程接口 (RMAPI) 的顶层。因此,DSDL API 本身不取代 RMAPI,而是封装并扩展了 RMAPI 的功能。通过提供针对特定的 Sun Cluster 集成问题的预设解决方案,DSDL 简化了数据服务开发工作,这样,您就可以将主要开发时间投入到应用程序内在的高可用性和可伸缩性问题上。将应用程序启动、关闭和监视过程与 Sun Cluster 相集成花费的时间更少。

管理配置属性

所有回调方法都需要访问配置属性。DSDL 采用以下方式支持对属性的访问:

scds_initialize() 函数必须在每个回调方法的开头进行调用,它执行以下操作:


注 –

对于 Validate 方法,scds_initialize() 将解析通过命令行传递的属性值,而无需写入 Validate 的解析函数。


DSDL 提供了几组函数用于检索资源类型、资源、资源组属性以及常用扩展属性。这些函数通过使用以下约定对属性的访问进行了标准化:

启动和停止数据服务

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

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

Start 方法可以调用 scds_pmf_start() 来启动在进程监视器工具 (PMF) 控制下的应用程序。PMF 使您可以指定要应用到进程的监视级别,它还提供了在失败的情况下重新启动进程的能力。有关使用 DSDL 实现的 Start 方法的示例,请参见xfnts_start 方法

Stop 方法必须是幂等的,这样即使在应用程序没在运行的节点上进行调用,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_debug()scds_syslog() 函数。

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

可以使用 HAStoragePlus 资源类型使本地文件系统在 Sun Cluster 环境中具有高可用性。本地文件系统分区必须位于全局磁盘组中。必须启用关联切换转移,并且必须针对故障转移配置 Sun Cluster 环境。此设置使群集管理员可以通过任何直接连接到多主机磁盘的主机访问位于那些多主机磁盘上的任何文件系统。对于一些 I/O 增强数据服务,强烈建议使用具有高可用性的本地文件系统。《Sun Cluster Data Services Planning and Administration Guide for Solaris OS》中的“Enabling Highly Available Local File Systems”包含关于配置 HAStoragePlus 资源类型的信息。