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

普通数据服务概念

GDS 是一种机制,它通过将简单的网络可识别和非网络可识别应用程序插入 Sun Cluster 资源组管理 (RGM) 框架而使其具有高可用性或高可伸缩性。此机制无需对数据服务进行编码,而通常必须执行编码操作才能使应用程序具有高可用性或高可伸缩性。

GDS 是一项单独的、预编译的数据服务。您不能修改预编译的数据服务及其组件、回调方法 (rt_callbacks) 实现和资源类型注册文件 (rt_reg)。

本节包含以下主题:

预编译的资源类型

SUNWscgds 软件包中包含普通数据服务资源类型 SUNW.gdsscinstall 实用程序将在群集安装过程中安装此软件包。请参见 scinstall(1M) 手册页。SUNWscgds 软件包中包含下列文件:


# pkgchk -v SUNWscgds

/opt/SUNWscgds
/opt/SUNWscgds/bin
/opt/SUNWscgds/bin/gds_monitor_check
/opt/SUNWscgds/bin/gds_monitor_start
/opt/SUNWscgds/bin/gds_monitor_stop
/opt/SUNWscgds/bin/gds_probe
/opt/SUNWscgds/bin/gds_svc_start
/opt/SUNWscgds/bin/gds_svc_stop
/opt/SUNWscgds/bin/gds_update
/opt/SUNWscgds/bin/gds_validate
/opt/SUNWscgds/etc
/opt/SUNWscgds/etc/SUNW.gds

使用 GDS 的优点与不足

使用 GDS 与使用 Agent Builder 源代码(请参见 scdscreate(1HA) 手册页)或者 Sun Cluster 管理命令相比,具有以下优点:

虽然使用 GDS 有很多优点,但 GDS 机制不能用于以下实例:

创建使用 GDS 的服务的方法

创建使用 GDS 的服务的方法有两种:

GDS 和 Agent Builder

使用 Agent Builder 并选择 GDS 作为生成源代码的类型。使用用户输入的内容生成一组脚本,以便为给定的应用程序配置资源。

GDS 和 Sun Cluster 管理命令

此方法使用 SUNWscgds 中的预编译数据服务代码。但是,群集管理员必须使用 Sun Cluster 管理命令来创建和配置资源。请参见 scrgadm(1M)scswitch(1M) 手册页。

选择创建基于 GDS 的服务时所应使用的方法

发布正确的 scrgadmscswitch 命令需要键入大量内容。例如,请参见如何使用 Sun Cluster 管理命令来创建使用 GDS 且具有高可用性的服务如何使用 Sun Cluster 管理命令来创建使用 GDS 的可伸缩服务

将 GDS 与 Agent Builder 结合使用可以简化此进程,因为它将为您生成用于发布 scrgadmscswitch 命令的脚本。

GDS 记录事件的方式

使用 GDS 可以记录 GDS 传递给 GDS 启动的脚本的相关信息。此信息包括启动、探测、停止方法以及属性变量的状态。您可以使用此信息诊断脚本中的问题或错误,或将其应用于其他目的。

使用 Log_level 属性 中介绍的 Log_level 属性来指定 GDS 要记录的消息级别或类型。可以指定 NONEINFOERR

GDS 日志文件

以下两个 GDS 日志文件放置于 /var/cluster/logs/DS/resource-group-name/resource-name 目录下:

以下示例显示了 start_stop_log.txt 包含的信息类型:

10/20/2005 12:38:05 phys-node-1 START-INFO> Start succeeded. [/home/brianx/sc/start_cmd]
10/20/2005 12:42:11 phys-node-1 STOP-INFO> Successfully stopped the application

以下示例显示了 probe_log.txt 包含的信息类型:

10/20/2005 12:38:15 phys-node-1 PROBE-INFO> The GDS monitor (gds_probe) has been started
10/20/2005 12:39:15 phys-node-1 PROBE-INFO> The probe result is 0
10/20/2005 12:40:15 phys-node-1 PROBE-INFO> The probe result is 0
10/20/2005 12:41:15 phys-node-1 PROBE-INFO> The probe result is 0

必需的 GDS 属性

如果使用的是网络可识别应用程序,则必须提供 Start_command 扩展属性和 Port_list 属性。如果使用的是非网络可识别的应用程序,则只应提供 Start_command 扩展属性。

Start_command 扩展属性

您在 Start_command 扩展属性中指定的 start 命令将启动应用程序。此命令必须为可直接传递给 shell 启动应用程序的带参数的 UNIX 命令。

Port_list 属性

Port_list 属性将标识应用程序进行侦听的端口列表。Port_list 属性必须根据由 Agent Builder 创建的启动脚本指定,或是根据 scrgadm 命令指定(如果使用的是 Sun Cluster 管理命令)。

可选的 GDS 属性

可选的 GDS 属性包括系统定义的属性扩展属性。系统定义的属性是 Sun Cluster 提供的一组标准属性。定义在 RTR 文件中的属性称为扩展属性。以下是可选的 GDS 属性:

Network_resources_used 属性

此属性的默认值为 Null。如果应用程序需要绑定到一个或多个特定的地址,则必须指定此属性。如果忽略此属性或将其指定为 Null,则应用程序会被认为是侦听所有地址。

创建 GDS 资源之前,必须已配置 LogicalHostnameSharedAddress 资源。有关如何配置 LogicalHostnameSharedAddress 资源的信息,请参见《Sun Cluster Data Services Planning and Administration Guide for Solaris OS》

要指定一个值,请指定一个或多个资源名称。每个资源名称可以包含一个或多个 LogicalHostname 资源或 SharedAddress 资源。有关详细信息,请参见 r_properties(5) 手册页。

Stop_command 属性

stop 命令必须停止应用程序并且只能在应用程序完全停止之后返回。此命令必须为可以直接传递给 shell 以停止应用程序的完整 UNIX 命令。

如果提供了 Stop_command 扩展属性,GDS 停止方法将在停止超时达到 80% 时启动 stop 命令。不管启动 stop 命令的输出结果是什么,GDS 停止方法都将在停止超时达到 15% 时发送 SIGKILL。剩余的 5% 的超时时间将用于内务处理开销。

如果忽略 stop 命令,GDS 将使用在 Stop_signal 中指定的信号尝试停止应用程序。

Probe_command 属性

probe 命令将定期检查给定应用程序的运行状况。此命令必须为可直接传递给 shell 以探测应用程序的带参数的 UNIX 命令。如果应用程序运行正常,probe 命令将以 0 退出状态返回。

probe 命令的退出状态用于确定应用程序失败的严重性。此退出状态(又称探测状态)必须是 0(表示成功)至 100(表示完全失败)之间的整数。探测状态也可以为特殊值 201,该值将导致应用程序立即故障转移,除非 Failover_enabled 设置为 FALSE。GDS 探测算法将使用探测状态决定是在本地重新启动应用程序还是将其故障转移。有关更多信息,请参见 scds_fm_action(3HA) 手册页。如果退出状态为 201,则应用程序将立即进行故障转移。

如果忽略 probe 命令,GDS 将提供它自己的简单探测。此探测将连接到源自 Network_resources_used 属性或 scds_get_netaddr_list() 函数的输出结果的 IP 地址集上的应用程序。有关更多信息,请参见 scds_get_netaddr_list(3HA) 手册页。如果连接成功,连接将立即断开。如果连接和断开连接均成功,则认为应用程序运行正常。


注 –

GDS 提供的探测仅适于简单替换功能全面的应用程序特定的探测。


Start_timeout 属性

此属性用于指定 start 命令的启动超时。有关附加信息,请参见Start_command 扩展属性Start_timeout 的默认值为 300 秒。

Stop_timeout 属性

此属性用于指定 stop 命令的停止超时。有关附加信息,请参见Stop_command 属性Stop_timeout 的默认值为 300 秒。

Probe_timeout 属性

此属性用于指定 probe 命令的超时值。有关附加信息,请参见Probe_command 属性Probe_timeout 的默认值为 30 秒。

Child_mon_level 属性


注 –

如果使用 Sun Cluster 管理命令,则可以使用 Child_mon_level 属性。如果使用 Agent Builder,则不能使用此属性。


此属性对通过进程监视工具 (PMF) 监视的进程提供控制。此属性指示要达到监视交叉子进程的级别。此属性的作用类似于 pmfadm 命令的 -C 参数。请参见 pmfadm(1M) 手册页。

如果忽略此属性或将其设置为默认值 -1,所产生的效果将与忽略 pmfadm 命令的 -C 选项相同。即,所有子进程以及它们的子进程都将被监视。

Failover_enabled 属性

此 Boolean 扩展属性用于控制资源的故障转移行为。如果将该扩展属性设置为 TRUE,则当应用程序在 Retry_interval 秒内重新启动的次数超出 Retry_count 次,此应用程序就将故障转移。

如果将此扩展属性设置为 FALSE,则当应用程序在 Retry_interval 秒内重新启动的次数超出 Retry_count 次,此应用程序将不重新启动或故障转移至其他节点上。

您可以使用此属性禁止应用程序资源启动资源组故障转移。此属性的默认值为 TRUE

Stop_signal 属性

GDS 使用整数扩展属性值来确定用于通过 PMF 停止应用程序的信号。有关可以指定的整数值列表,请参见 signal(3HEAD) 手册页。默认值为 15 (SIGTERM)。

Log_level 属性

此属性用于指定 GDS 所记录的诊断消息的级别或类型。可以为此属性指定 NONEINFOERR。如果指定为 NONE,则 GDS 将不会记录诊断消息。如果指定为 INFO,则只记录信息型消息。如果指定为 ERR,则只记录错误消息。缺省情况下,GDS 不记录诊断消息 (NONE)。