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

GDS 概述

GDS 是一种机制,它通过将支持网络的和不支持网络的简单应用程序插入到 Sun Cluster 资源组管理 (RGM) 框架中,从而使这些应用程序具有高可用性或可伸缩性。为使应用程序具有高可用性和可伸缩性,通常您必须为代理编写代码,而使用此机制,则不需要您这样做。

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

预编译的资源类型

普通数据服务资源类型 SUNW.gds 包含在 SUNWscgds 软件包中。请在群集安装过程中使用 scinstall 实用程序安装此软件包(请参见 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 的优点与不足

与使用 SunPlex Agent Builder 生成的源代码模型(请参见 scdscreate( 1HA) 手册页)或标准的 Sun Cluster 管理命令相比较,GDS 具有以下优点:

虽然使用 GDS 有很多优点,但还是存在不宜使用 GDS 机制的情况。在以下情况中,就适合使用 GDS 机制:

创建使用 GDS 的服务的方法

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

GDS 和 SunPlex Agent Builder

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

GDS 和标准的 Sun Cluster 管理命令

虽然此方法使用了 SUNWscgds 中预编译的数据服务代码,但还是需要系统管理员使用标准的 Sun Cluster 管理命令来创建和配置资源。请参见 scrgadm( 1M)scswitch( 1M) 手册页。

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

正如如何使用 Sun Cluster 管理命令来创建使用 GDS 且具有高可用性的服务如何使用 Sun Cluster 管理命令来创建使用 GDS 的可伸缩服务等过程所示,需要在键盘上输入大量的信息才能发出有关的 scrgadm 命令和 scswitch 命令。

结合 SunPlex Agent Builder 使用 GDS 可以简化该过程,因为这会生成可以为您发出 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/2004 12:38:05 phys-node-1 START-INFO> Start succeeded. [/home/brianx/sc/start_cmd]
10/20/2004 12:42:11 phys-node-1 STOP-INFO> Successfully stopped the application

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

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

必需的 GDS 特性

如果您的应用程序不支持网络,则必须同时给出 Start_command 扩展特性以及 Port_list 特性。如果您的应用程序支持网络,则必须仅给出 Port_list 特性。

Start_command 扩展特性

Start_command 扩展特性中指定的启动命令用来启动应用程序。它必须是一条具有一些参数的 UNIX 命令,这些参数可以直接传给 shell 来启动应用程序。

Port_list 特性

Port_list 特性必须在 SunPlex Agent Builder 所创建的启动脚本中指定,或者如果您使用的是标准的 Sun Cluster 管理命令,则必须随 scrgadm 命令一同指定。

可选的 GDS 特性

以下列表列出了可选的 GDS 特性:

Network_resources_used 特性

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

在创建 GDS 资源之前,必须已经配置了一种 LogicalHostname 资源或 SharedAddress 资源。有关如何配置 LogicalHostnameSharedAddress 资源的信息,请参见Sun Cluster 数据服务规划和管理指南(适用于 Solaris OS)

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

Stop_command 特性

停止命令必须停止 应用程序并仅在应用程序完全停止后返回。它必须是一条完整的 UNIX 命令,可以直接传给某个 shell 来停止应用程序。

如果给出了 Stop_command 扩展特性,则 GDS 的停止方法将使用 80% 的停止超时时间来发出停止命令。不管发出停止命令后的结果如何,GDS 的停止方法都将用 15% 的停止超时时间发送 SIGKILL。剩余的 5% 的超时时间将用于内务处理开销。

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

Probe_command 特性

probe 命令可定期检查给定应用程序的运行状况。它必须是一条结合参数使用的 UNIX 命令,可以直接传给某个 shell 来探测应用程序。如果应用程序运行正常,则探测命令返回时的退出状态为 0

探测命令的退出状态用于确定应用程序故障的严重程度。此退出状态(又称探测状态)必须是一个介于 0(表示成功)和 100(表示完全失败)之间的整数。探测状态还有一个特殊值 201,在未将 "Failover_enabled" 设置为 "FALSE" 的情况下,该值将导致应用程序立即进行故障转移。探测状态用于 GDS 探测算法(请参见 scds_fm_action( 3HA) 手册页),可决定是从本地重新启动应用程序,还是将其故障转移到其他节点。如果退出状态为 201,则应用程序将立即进行故障转移。

如果忽略探测命令,则 GDS 将使用自带的简单探测方法连接到从 Network_resources_used 特性导出的或 scds_get_netaddr_list 输出的一组 IP 地址上的应用程序以进行探测。(请参见 scds_get_netaddr_list(3HA) 手册页)。如果连接成功,它将立即断开连接。如果可以成功地进行连接和断开连接,则该应用程序即被认为运行状况完好。


注意 –

随 GDS 一起提供 probe 命令的目的仅在于为正常运行的、特定于应用程序的 probe 命令提供简单的替代命令。


Start_timeout 特性

此特性用来指定启动命令的启动超时值。有关其他信息,请参见Start_command 扩展特性Start_timeout 的缺省值为 300 秒。

Stop_timeout 特性

此特性用来指定停止命令的停止超时值。有关其他信息,请参见Stop_command 特性Stop_timeout 的缺省值为 300 秒。

Probe_timeout 特性

此特性用来指定探测命令的超时值。有关其他信息,请参见Probe_command 特性Probe_timeout 的缺省值为 30 秒。

Child_mon_level 特性


注意 –

如果使用的是标准的 Sun Cluster 管理命令,则您可以使用此选项。如果使用的是 SunPlex Agent Builder,则不能使用此选项。


此特性用来控制通过进程监视工具 (PMF) 监视的进程。它指定了一个级别,在该级别之内的所有派生子进程都将被监视。此特性的作用类似于 pmfadm 命令的 -C 参数。请参见 pmfadm(1M) 手册页。

忽略此特性或将其设置为缺省值 -1 所产生的效果与忽略 pmfadm 命令的 -C 选项相同。也就是说,所有子进程(以及它们的子孙进程)都会受到监视。

Failover_enabled 特性

此布尔型扩展特性用于控制资源的故障转移方式。如果将此扩展特性设置为 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)。