通用数据服务 (Generic Data Service, GDS) 机制允许您通过将简单的网络感知和非网络感知应用程序插入到 Oracle Solaris Cluster 资源组管理器 (Resource Group Manager, RGM) 框架中,使这些应用程序具有高可用性或可伸缩性。
GDS 包含一个全功能的 Oracle Solaris Cluster 资源类型,通过回调方法 (rt_callbacks(1HA)) 和资源类型注册 (Resource Type Registration, RTR) 文件 (rt_reg(4)) 完成。
修改资源无法成功启动或停止时或者资源监视器发现运行状态不佳的资源并进而请求重新启动或故障转移时 RGM 执行的恢复操作。
有关 Failover_mode 属性的更多信息,请参见 r_properties(5) 手册页。
可选
SOFT
随时
该资源依赖的逻辑主机名或共享地址网络资源的列表。该列表包含在属性 Resource_dependencies、Resource_dependencies_weak、Resource_dependencies_restart 或 Resource_dependencies_offline_restart 中出现的所有网络地址资源。
该属性由 RGM 基于资源依赖性属性的设置自动更新。不能直接设置此属性。可使用 Resource_dependencies 属性替代。
有条件的/可选
空列表
禁用时
指定应用程序侦听的端口号的逗号分隔列表。请参见 r_properties(5) 手册页。
必须在代理生成器创建的启动脚本中指定 Port_list 属性,或者,如果使用 Oracle Solaris Cluster 管理命令,使用 clresource 命令指定该属性。
附加到每个端口号的是一个斜杠 (/),后跟该端口正在使用的协议,例如 Port_list=80/tcp 或 Port_list=80/tcp6,40/udp6。
可以指定以下协议值:
tcp,表示 TCP IPv4
tcp6,表示 TCP IPv6
udp,表示 UDP IPv4
udp6,表示 UDP IPv6
有条件的/必需
无默认值
随时
指定某个资源依赖的资源的列表。此列表包含该资源使用的所有逻辑主机名或共享地址网络资源。此属性的默认值为 null。如果 Network_aware 属性设置为真,您必须将该属性设置为应用程序正在侦听的逻辑主机名或共享地址网络资源。
在创建 GDS 资源之前,必须已经配置了 LogicalHostname 或 SharedAddress 资源。
可以指定一个或多个资源名。每个网络资源可以包含一个或多个逻辑主机名。有关更多信息,请参见 clreslogicalhostname(1CL ) 和 clressharedaddress(1CL) 手册页。
可以使用 Resource_dependencies_weak 、Resource_dependencies_restart 或 Resource_dependencies_offline_restart 属性而不是 Resource_dependencies 属性来指定其他依赖性类别。有关更多信息,请参见 r_properties(5) 手册页。
可选
空列表
随时
监视器在启动资源失败时尝试重新启动该资源的次数。
有关 Retry_count 属性的更多信息,请参见 r_properties(5) 手册页。
有条件的
2
随时
对尝试重新启动失败的资源进行计数的秒数。
有关 Retry_interval 属性的更多信息,请参见 r_properties(5) 手册页。
有条件的
370 秒
随时
指示资源是否可伸缩,即,资源是否使用 Oracle Solaris Cluster 软件的网络负载平衡功能。
如果 Scalable 属性设置为 TRUE,将使用其他属性(例如 Load_balancing_policy 和 Load_balancing_weights)来配置负载平衡行为。
有关 Scalable、Load_balancing_policy 和 Load_balancing_weights 属性的更多信息,请参见 r_properties(5) 手册页。
可选
FALSE
创建时
指定启动命令的超时值(秒)。
可选
60 秒
300 秒
随时
指定停止命令的超时值(秒)。
可选
60 秒
300 秒
随时
指定验证命令的超时值(秒)。
可选
60 秒
300 秒
随时
提供对通过进程监视设备 (Process Monitor Facility, PMF) 监视的进程的控制。该属性表示分支子进程受监视的级别。省略此属性或将该属性设置为默认值与省略 pmfadm(1M) 的 –C 选项的结果相同:监视所有子进程(及其后代)。
可选
-1
创建时
允许资源故障转移。如果将该属性设置为 False,将禁止资源进行故障转移。可以使用该属性阻止应用程序资源启动资源组的故障转移。
可选
True
禁用时
指定由 GDS 记录的诊断消息的级别或类型。可以为该属性指定 None、Info 或 Err。当指定 None 时,GDS 不会记录诊断消息。当指定 Info 时,会记录信息和错误消息。当指定 Err 时,仅会记录错误消息。
可选
Info
随时
进程监视器工具 (process monitor facility, PMF) 在 Monitor_retry_interval 属性指定的时间窗口中重新启动故障监视器的次数。该属性表示重新启动故障监视器本身而非资源。系统定义的属性 Retry_interval 和 Retry_count 控制资源的重新启动。
可选
整数
4
0 - 2147483647
-1 表示无限的重试尝试次数。
随时
以分钟为单位的时间,在此时间段内对故障监视器的失败进行计数。如果在该时间段内故障监视器的失败次数超出了扩展属性 Monitor_retry_count 指定的值,则 PMF 将不会重新启动故障监视器。
可选
整数
2
0 – 2147483647
-1 表示无限的重试间隔。
随时
该属性指定应用程序是否使用网络。
可选
True
创建时
指定定期检查网络感知或非网络感知应用程序运行状况的命令。该命令必须是完整的命令行,以便可以直接传递给 Shell 来探测应用程序。如果应用程序运行正确,该探测命令将以退出状态 0 返回。
探测命令的退出状态用于确定应用程序故障的严重程度。该退出状态称为探测状态,是一个介于 0(表示成功)与 100(表示完全失败)的整数值。探测状态还可以是 201,该状态会使应用程序进行故障转移,除非 Failover_enabled 设置为 False。
GDS 探测算法使用探测状态来确定是在本地重新启动应用程序,还是将应用程序故障转移到其他节点。如果省略 probe 命令,GDS 将提供其自己的简单探测来连接网络资源中的应用程序。如果连接成功,GDS 将立即断开连接。如果连接和断开连接均成功,则应用程序被认定为正常运行。
GDS 不为非网络感知应用程序提供“默认”探测行为。但是,非网络感知应用程序在 PMF 下启动,PMF 可监视该应用程序并在其失败时重新启动它。pmfadm(1M) 手册页中提供了更多信息。
可选
Null
禁用时
指定探测命令的超时值(秒)。
可选
2 秒
30 秒
随时
指定启动应用程序的命令。该命令必须是完整的命令行,以便可以直接传递给 Shell 来启动应用程序。
启动命令或其分支子进程之一应该是长期运行的程序或守护进程,用于将服务实际提供给客户机。启动命令进程树由进程监视设备 (Process Monitor Facility, PMF) 监视,如 Child_mon_level 扩展属性部分中所述。如果受监视的进程退出,它们将根据 Retry_count 和 Retry_interval 资源属性的设置重新启动。如果超过了重试计数,系统会尝试将资源组重定位到其他节点。
启动命令或其子进程返回的退出状态将被忽略。
必需
1
无默认值
禁用时
指定停止应用程序的命令。该命令必须是完整的命令行,以便可以直接传递给 Shell 来停止应用程序。如果省略该属性或者停止命令返回非零值,GDS 将使用信号停止应用程序。
可选
Null
禁用时
指定用于停止应用程序的信号。该属性的值与 signal(3HEAD) 中定义的值相同。
可选
1
37
15
禁用时
指定用于验证应用程序的命令的绝对路径。如果未提供绝对路径,则不会验证应用程序。
验证命令的退出状态用于确定是否应允许创建或更新 GDS 资源。在创建或更新资源之前,指定的验证命令将在该资源所属资源组的节点列表中的每个节点上执行。如果验证命令返回非零值,则不允许创建或更新请求的资源。验证命令写入到 stdout 或 stderr 的任何输出将传递回发出管理命令来创建或更新该资源的用户。可根据这些输出解释资源验证失败的原因。
验证命令还会在使 gds 资源联机时、执行 Start_command 扩展属性之前执行。如果验证命令返回非零值,系统会将其视为启动失败。
在执行 scha_control 命令的 GIVEOVER 选项来将资源组重定位到新节点之前也会执行验证命令。如果该命令以非零状态退出,则会阻止移交,该资源组仍在其当前节点上受管理。
可选
Null
禁用时
以下示例说明如何使用 GDS 使名为 app 的应用程序具有高可用性。也可以使用 Oracle Solaris Cluster 代理生成器 (scdsbuilder(1HA)) 创建包含这些命令的脚本。
此示例说明如何注册 SUNW.gds 资源类型、如何为应用程序创建资源组、为逻辑主机名 hhead 创建 LogicalHostname 资源、创建网络感知应用程序资源、管理资源组、启用其所有资源,以及如何使其资源联机。
此时,应用程序正在运行,具有高可用性,并且由 GDS 提供的简单探测监视。现在可以检查该应用程序的状态。
# clresourcetype register SUNW.gds # clresourcegroup create rg1 # clreslogicalhostname create -g rg1 -h hhead # clresource create -g rg1 -t SUNW.gds \ -p Start_command="/usr/local/app/bin/start" \ -p Port_list="1234/tcp" -p Network_aware=True \ -p Resource_dependencies=hhead app-rs # clresourcegroup online -M rg1 # clresourcegroup status +
此示例说明如何注册 SUNW.gds 资源类型、如何为应用程序创建资源组、为逻辑主机名 hhead 创建 LogicalHostname 资源、创建网络感知应用程序资源、仅记录错误消息、管理资源组、启用所有资源,以及如何使资源联机。
此时,应用程序正在运行,具有高可用性,并且由 Probe_command 指定的故障监视器监视。现在可以检查该应用程序的状态。
# clresourcetype register SUNW.gds # clresourcegroup create rg1 # clreslogicalhostname create -g rg1 -h hhead # clresource create -g rg1 -t SUNW.gds \ -p Start_command="/usr/local/app/bin/start" \ -p Stop_command="/usr/local/app/bin/stop" \ -p Validate_command="/usr/local/app/bin/config" \ -p Probe_command="/usr/local/app/bin/probe" \ -p stop_signal=9 -p failover_enabled=FALSE \ -p Start_timeout=120 -p Stop_timeout=180 \ -p Port_list="1234/tcp" -p Probe_timeout=60 \ -p Network_aware=True \ -p Validate_timeout=120 -p Log_level=Err \ -p Resource_dependencies=hhead app-rs # clresourcegroup online -M rg1 # clresourcegroup status +
有关下列属性的说明,请参见 attributes(5):
|
clreslogicalhostname(1CL ), clresource(1CL), clresourcegroup(1CL), clresourcetype(1CL), clressharedaddress(1CL), rt_callbacks(1HA), scdsbuilder(1HA), scha_control(1HA), scha_resource_get(1HA), hatimerun(1M), pmfadm(1M), signal(3HEAD), rt_reg(4), attributes(5), r_properties(5), scalable_service(5)