scha_control -O optag -G group -R resource [-Z zonename]
scha_control 命令可以请求重新启动或重定位受资源组管理器 (Resource Group Manager, RGM) 控制的资源或资源组。可以在资源监视器的 shell 脚本实现中使用该命令。此命令可提供与 scha_control(3HA) 函数相同的功能。
该命令的退出代码指示是否拒绝了所请求的操作。如果接受了请求,则在资源组或资源已完成脱机并已重新联机之前,该命令不会返回。调用 scha_control(1HA) 的故障监视器可能会由于资源或资源组脱机而停止。因此,故障监视器可能永远无法收到成功的请求的返回状态。
要使用该命令,您需要具有 solaris.cluster.resource.admin 基于角色的访问控制 (role-based access control, RBAC) 授权。请参见 rbac(5)。
您还必须能够承担已向其分配 Oracle Solaris Cluster 命令权限配置文件的角色,才能使用该命令。经授权的用户可以通过 pfsh(1)、pfcsh(1) 或 pfksh(1) 配置文件 shell 在命令行中发出授权的 Oracle Solaris Cluster 命令。配置文件 shell 是一种特殊的 shell,通过该 shell,可以访问分配给 Oracle Solaris Cluster 命令权限配置文件的 Oracle Solaris Cluster 特权命令。当您运行 su(1M) 以承担某个角色时,即会启动配置文件 shell。也可以使用 pfexec(1) 发出授权的 Oracle Solaris Cluster 命令。
支持以下选项:
需要重新启动或重定位的资源组的名称,或者需要重新启动或重定位的资源所在的资源组的名称。如果该资源组未在发出请求的节点上联机,则请求会被拒绝。
请求 optag 选项。
支持以下 optag 值:
请求使 –R 选项指定的代理资源在本地节点上脱机。代理资源是一种 Oracle Solaris Cluster 资源,它可以从另一群集(例如 Oracle Clusterware)导入某个资源的状态。在 Oracle Solaris Cluster 软件的上下文中,这种状态变化反映了外部资源的状态变化。
当您使用该 optag 值更改某个代理资源的状态时,不会执行该代理资源的方法。
如果节点上的“被依赖”资源发生故障,并且该资源无法恢复,则监视器将使该资源在该节点上脱机。监视器将会通过调用 scha_control 命令并使用 CHANGE_STATE_OFFLINE optag 值来使该资源脱机。监视器还会通过触发重新启动操作,使被依赖资源的所有 offline-restart 依赖项脱机。当群集管理员解决故障并重新启用被依赖资源后,监视器还会使被依赖资源的 offline-restart 依赖项重新联机。
请求使 –R 选项指定的代理资源在本地节点上联机。代理资源是一种 Oracle Solaris Cluster 资源,它可以从另一群集(例如 Oracle Clusterware)导入某个资源的状态。在 Oracle Solaris Cluster 软件的上下文中,这种状态变化反映了外部资源的状态变化。
当您使用该 optag 值更改某个代理资源的状态时,不会执行该代理资源的方法。
对 – G 选项指定的资源组执行与 GIVEOVER 相同的有效性检查,但不实际重定位该资源组。
对 –G 选项指定的资源组执行与 RESTART 相同的有效性检查,但不实际重新启动该资源组。
请求使 –G 选项指定的资源组在本地节点上脱机,然后在 RGM 选择的另一个节点上重新联机。请注意,如果该资源组当前已在两个或更多个节点上联机,并且没有其他可用节点可供该资源组在其上联机,则可使它在本地节点上脱机,且无需再让它在其他位置联机。请求可能会被拒绝,具体取决于各项检查的结果。例如,如果组是由于在 PINGPONG_INTERVAL 属性指定的时间间隔内某个节点上发出的 GIVEOVER 请求而脱机,则可能会拒绝将该节点用作主机。
如果群集管理员配置了一个或多个资源组的 RG_Affinities 属性,且您对一个资源组发出了 scha_control GIVEOVER 请求,那么,最终可能会重定位多个资源组。rg_properties(5) 中介绍了 RG_Affinities 属性。
通过故障监视器发出 scha_control 命令或调用 scha_control() 函数而使包含资源的资源组重定位到新的节点之前,将会调用 MONITOR_CHECK 方法。
您可以在作为资源组潜在新主机的任何节点上调用 MONITOR_CHECK 方法。MONITOR_CHECK 方法旨在评估某个节点的运行状况是否良好并足以运行某个资源。MONITOR_CHECK 方法必须以这样一种方式实现,即它不与同时运行的其他方法相冲突。
如果 MONITOR_CHECK 失败,则会禁止将资源组重定位到调用了回调的节点。
请求在当前执行的 Prenet_start 或 Start 方法失败时资源组不进行故障转移,无论 Failover_mode 属性的设置如何。
换言之,该 optag 值将覆盖当 Failover_Mode 属性设置为 SOFT 或 HARD 的资源无法启动时通常情况下会采取的恢复操作。通常,资源组会故障转移到另一个节点。而资源的行为却如同 Failover_Mode 设置为 NONE 一样。如果未发生其他错误,资源将进入 START_FAILED 状态,而资源组最终将进入 ONLINE_FAULTED 状态。
仅当通过 Start 或 Prenet_start 方法(该方法随后会退出并返回非零状态,或者超时)调用时,该 optag 值才有意义。该 optag 值仅对 Start 或 Prenet_start 方法的当前调用有效。在 Start 方法确定资源在其他节点上无法成功启动的情况下,应使用该 optag 值调用 scha_control 命令。如果由其他任何方法调用该 optag 值,将返回错误 SCHA_ERR_INVAL。该 optag 值可防止可能会发生的资源组“交替”故障转移。
在调用 scha_control 命令的节点上禁用 –R 选项指定的资源。
如果节点上的“被依赖”资源发生故障,并且该资源无法恢复,则监视器将使该资源在该节点上脱机。监视器将会通过调用 scha_control 命令并使用 RESOURCE_DISABLE optag 值来使该资源脱机。监视器还会通过触发重新启动操作,使被依赖资源的所有 offline-restart 依赖项脱机。当群集管理员解决故障并重新启用被依赖资源后,监视器还会使被依赖资源的 offline-restart 依赖项重新联机。
请求在本地节点上递增 –R 选项指定的资源的资源重新启动计数器,但不实际重新启动该资源。
未调用 scha_control 的 RESOURCE_RESTART 选项而直接重新启动资源(例如,使用 pmfadm(1M))的资源监视器可以使用该选项来通知 RGM 已重新启动该资源。scha_resource_get(1HA) 的后续 NUM_RESOURCE_RESTARTS 查询会反映此递增情况。
如果资源的类型无法声明 RETRY_INTERVAL 标准属性,则不允许使用 scha_control 命令的 RESOURCE_IS_RESTARTED 选项。因此,scha_control 命令将会失败,并生成退出状态代码 13 (SCHA_ERR_RT)。
请求使 –R 选项指定的资源在本地节点上脱机,然后在该节点上再次联机,而无需停止该资源组中的任何其他资源。这将通过在本地节点上对该资源应用以下方法序列来使其停止后再启动:
MONITOR_STOP STOP START MONITOR_START
如果资源类型没有声明 STOP 和 START 方法,则会改用 POSTNET_STOP 和 PRENET_START 来重新启动该资源:
MONITOR_STOP POSTNET_STOP PRENET_START MONITOR_START
如果资源的类型没有声明 MONITOR_STOP 和 MONITOR_START 方法,则只会调用 STOP 和 START 方法或者 POSTNET_STOP 和 PRENET_START 方法来执行重新启动。
如果重新启动资源时某个方法调用失败,RGM 可能会设置一个错误状态、重定位资源组或重新引导节点,具体取决于对该资源的 FAILOVER_MODE 属性的设置。有关更多信息,请参见 r_properties(5) 中的 FAILOVER_MODE 属性。
使用该选项重新启动资源的资源监视器可以使用 scha_resource_get(1HA) 的 NUM_RESOURCE_RESTARTS 查询来统计最近的重新启动尝试次数。
具有 PRENET_START 和/或 POSTNET_STOP 方法的资源类型应慎用 RESOURCE_RESTART 函数。只会对此类资源应用 MONITOR_STOP、STOP 、START 和 MONITOR_START 方法。该资源所依赖的网络地址资源不会重新启动,将保持联机状态。
如果节点上的“被依赖”资源发生故障,并且该资源无法恢复,则监视器将使该资源在该节点上脱机。监视器将会通过调用 scha_control 命令并使用 RESOURCE_RESTART optag 值来使该资源脱机。监视器还会通过触发重新启动操作,使被依赖资源的所有 offline-restart 依赖项脱机。当群集管理员解决故障并重新启用被依赖资源后,监视器还会使被依赖资源的 offline-restart 依赖项重新联机。
请求使 –G 选项指定的资源组脱机,然后再联机,而无需强制重定位到其他节点。如果该资源组中的某个资源无法重新启动,该请求最终可能会导致重定位该组。使用该选项重新启动资源组的资源监视器可以使用 scha_resource_get(1HA) 的 NUM_RG_RESTARTS 查询来统计最近的重新启动尝试次数。
CHECK_GIVEOVER 和 CHECK_RESTART optag 值用于供资源监视器直接对资源采取操作(例如,终止并重新启动进程,或者重新引导节点),而不是通过调用 scha_control 命令来执行移交或重新启动。如果检查失败,监视器应休眠片刻,然后重新启动其探测器,而不是调用其重新启动或故障转移操作。有关更多信息,请参见 scha_control(3HA)。
资源组中某个资源的名称,该资源很可能是其监视器正在发出 scha_control(1HA) 请求的资源。如果指定的资源不在资源组中,则请求会被拒绝。
所指定的资源的 Failover_mode 属性设置可能会抑制所请求的 scha_control 操作。如果 Failover_mode 为 RESTART_ONLY,则允许除 scha_controlGIVEOVER 和 scha_controlCHECK_GIVEOVER 以外的所有请求。GIVEOVER 和 CHECK_GIVEOVER 请求将返回 SCHA_ERR_CHECKS 退出代码,并且所请求的移交操作不会执行,而只生成 syslog 消息。
如果在资源上设置了 Retry_count 和 Retry_interval 属性,则资源重新启动次数限制为 Retry_interval 中的 Retry_count 尝试次数。如果 Failover_mode 为 LOG_ONLY,则任何 scha_control 移交、重新启动或禁用请求将返回 SCHA_ERR_CHECKS 退出代码,并且所请求的移交或重新启动操作不会执行,而只生成 syslog 消息。
资源组配置为在其中运行的区域的名称。
如果 Global_zone 属性设置为 TRUE,则即使包含资源的资源组在非全局区域中运行,也会在全局区域中执行方法。该选项提供在其中配置要运行的资源组的非全局区域的名称。
请仅对 Global_zone 属性设置为 TRUE 的资源类型使用 –Z 选项。如果 Global_zone 属性设置为 FALSE,则不需要此选项。有关 Global_zone 属性的更多信息,请参见 rt_properties(5) 手册页。
返回以下退出状态代码:
命令已成功完成。
发生错误。
scha_calls(3HA) 中介绍了故障错误代码。
有关下列属性的说明,请参见 attributes(5):
|
pmfadm(1M)、rt_callbacks(1HA)、scha_cmds(1HA)、scha_resource_get(1HA)、scha_calls(3HA)、scha_control(3HA)、scha_control_zone(3HA)、attributes(5)、r_properties(5)、rbac(5)、rg_properties(5)、rt_properties(5)