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 |
与使用 SunPlex Agent Builder 生成的源代码模型(请参见 scdscreate( 1HA) 手册页)或标准的 Sun Cluster 管理命令相比较,GDS 具有以下优点:
GDS 易于使用。
GDS 及其方法都是预编译的,因此无法进行修改。
SunPlex Agent Builder 可以用来为您的应用程序生成脚本,并将些脚本放置到一个可在多个群集间重复使用的 Solaris 软件包中。
虽然使用 GDS 有很多优点,但还是存在不宜使用 GDS 机制的情况。在以下情况中,就不适合使用 GDS 机制:
当所需的控制力度超出了使用预编译的资源类型所能提供的范围时,例如,需要添加扩展特性或更改缺省值时
需要修改源代码以添加特殊功能
使用 SunPlex Agent Builder
使用标准的 Sun Cluster 管理命令
使用 SunPlex Agent Builder 并选择 GDS 作为生成的源代码的类型。使用用户输入的内容生成一组脚本,以便为给定的应用程序配置资源。
虽然此方法使用了 SUNWscgds 中预编译的数据服务代码,但还是需要系统管理员使用标准的 Sun Cluster 管理命令来创建和配置资源。请参见 scrgadm( 1M) 和 scswitch( 1M) 手册页。
正如如何使用 Sun Cluster 管理命令来创建使用 GDS 且具有高可用性的服务和如何使用 Sun Cluster 管理命令来创建使用 GDS 的可伸缩服务等过程所示,需要在键盘上输入大量的信息才能发出有关的 scrgadm 命令和 scswitch 命令。
结合 SunPlex Agent Builder 使用 GDS 可以简化该过程,因为这会生成可以为您发出 scrgadm 和 scswitch 命令的脚本。
使用 GDS,您可以记录一些从 GDS 传递到 GDS 所启动的脚本中的相关信息。此相关信息包括启动方法、探测方法和停止方法的状态以及特性变量的信息。您可以使用此信息来诊断脚本中存在的问题或错误,或者另作他用。
请使用Log_level 特性中介绍的 Log_level 特性来指定 GDS 要记录的消息的级别或类型。您可以指定 NONE、INFO 或 ERR。
以下两个 GDS 日志文件放置在目录 /var/cluster/logs/DS/resource_group_name/ resource_name 中:
start_stop_log.txt,其中包含由资源的启动和停止方法记录的消息
probe_log.txt,其中包含由资源监视器记录的消息
下例显示了 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
如果您的应用程序不支持网络,则必须同时给出 Start_command 扩展特性以及 Port_list 特性。如果您的应用程序支持网络,则必须仅给出 Port_list 特性。
Start_command 扩展特性中指定的启动命令用来启动应用程序。它必须是一条具有一些参数的 UNIX 命令,这些参数可以直接传给 shell 来启动应用程序。
Port_list 特性必须在 SunPlex Agent Builder 所创建的启动脚本中指定,或者如果您使用的是标准的 Sun Cluster 管理命令,则必须随 scrgadm 命令一同指定。
Network_resources_used
Stop_command(扩展特性)
Probe_command(扩展特性)
Start_timeout
Stop_timeout
Probe_timeout(扩展特性)
Child_mon_level(扩展特性,只用于标准的管理命令)
Failover_enabled(扩展特性)
Stop_signal(扩展特性)
Log_level(扩展特性)
此特性的缺省值为空。如果应用程序需要绑定到一个或多个特定的地址,则必须指定此特性。如果忽略此特性或将其指定为 Null,则应用程序会被认为是侦听所有地址。
在创建 GDS 资源之前,必须已经配置了一种 LogicalHostname 资源或 SharedAddress 资源。有关如何配置 LogicalHostname 或 SharedAddress 资源的信息,请参见《Sun Cluster 数据服务规划和管理指南(适用于 Solaris OS)》。
要指定一个值,请指定一个或多个资源名称。每个资源名称都可以包含一个或多个 LogicalHostname 或一个或多个 SharedAddress。有关详细信息,请参见 r_properties (5) 手册页。
停止命令必须停止 应用程序并仅在应用程序完全停止后返回。它必须是一条完整的 UNIX 命令,可以直接传给某个 shell 来停止应用程序。
如果给出了 Stop_command 扩展特性,则 GDS 的停止方法将使用 80% 的停止超时时间来发出停止命令。不管发出停止命令后的结果如何,GDS 的停止方法都将用 15% 的停止超时时间发送 SIGKILL。剩余的 5% 的超时时间将用于内务处理开销。
如果忽略停止命令,GDS 将尝试使用在 Stop_signal 中指定的信号来停止应用程序。
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_command 扩展特性。Start_timeout 的缺省值为 300 秒。
此特性用来指定停止命令的停止超时值。有关其他信息,请参见Stop_command 特性。Stop_timeout 的缺省值为 300 秒。
此特性用来指定探测命令的超时值。有关其他信息,请参见Probe_command 特性。Probe_timeout 的缺省值为 30 秒。
如果使用的是标准的 Sun Cluster 管理命令,则您可以使用此选项。如果使用的是 SunPlex Agent Builder,则不能使用此选项。
此特性用来控制通过进程监视工具 (PMF) 监视的进程。它指定了一个级别,在该级别之内的所有派生子进程都将被监视。此特性的作用类似于 pmfadm 命令的 -C 参数。请参见 pmfadm(1M) 手册页。
忽略此特性或将其设置为缺省值 -1 所产生的效果与忽略 pmfadm 命令的 -C 选项相同。也就是说,所有子进程(以及它们的子孙进程)都会受到监视。
此布尔型扩展特性用于控制资源的故障转移方式。如果将此扩展特性设置为 true,则只要应用程序在 retry_interval 中指定的秒内重启的次数超过 retry_count 中指定的次数,该应用程序就将进行故障转移。
如果将此特性设置为 false,则只要应用程序在 retry_interval 中指定的秒内重启的次数超过 retry_count 中指定的次数,该应用程序就不再重启或向另一个节点进行故障转移。
此特性可用于阻止应用程序资源启动对其资源组的故障转移。此特性的缺省值为 true。
GDS 使用此整型扩展特性的值来确定通过 PMF 停止应用程序时所使用的信号。有关您可以指定的整数值的列表,请参见 signal( 3HEAD) 手册页。缺省值为 15 ( SIGTERM)。
此特性用来指定由 GDS 记录的诊断消息的级别或类型。您可以将此特性指定为 NONE、INFO 或 ERR。如果指定为 NONE,则 GDS 将不会记录诊断消息。如果指定为 INFO,则仅记录信息消息。如果指定为 ERR,则仅记录错误消息。缺省情况下,GDS 不记录诊断消息 (NONE)。