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

启动和停止资源

资源类型实现至少需要使用 Start 方法和 Stop 方法。 RGM 将以适当的次数对适当的节点调用资源类型的方法程序,以使资源组脱机或联机。 例如,群集节点崩溃后,RGM 将把该节点控制的所有资源组移到新的节点上。 您必须实现 Start 方法,以通过重启未崩溃主机节点上每个资源的方法来提供 RGM。

在资源启动并可用于本地节点之前不能返回 Start方法。 请确保需要较长初始化时间的资源类型在其 Start 方法中设置了足够的超时值(在资源类型登记文件中设置 Start_timeout 特性的缺省值和最小值)。

在 RGM 使资源组脱机的情况下,您必须实现 Stop 方法。 例如,假设某个资源组在 Node1 上脱机,在 Node2 上恢复联机。当使资源组脱机时,RGM 对组中的资源调用 Stop 方法以停止 Node1 上的所有活动。当在 Node1 上对所有资源执行完 Stop 方法后,RGM 将使资源组在 Node2 上恢复联机。

在资源完全停止本地节点上的所有活动并完全关闭之前,Stop 方法不能返回。 Stop 方法的最安全实现操作将终止与该资源相关的本地节点上的所有进程。 应该在需要较长时间进行关闭的资源类型的 Stop 方法中为其设置足够的超时值。 在资源类型登记文件中设置 Stop_timeout 特性。

Stop 方法的失败和超时将导致资源组进入需要操作员介入的错误状态。 要避免进入这种状态,StopMonitor_stop 方法实现应该尝试从所有可能出错的情况下恢复。 理想的情况是,成功地停止本地节点上的资源及其监视器的所有活动之后,这些方法将在 0(成功)错误状态下退出。

决定使用哪种 StartStop 方法

本节将对照 Prenet_startPostnet_stop 方法的使用,介绍一些有关何时使用 StartStop 方法的提示。 要正确决定要使用的方法,您必须对客户机和数据服务的客户机服务器网络协议有深入的了解。

使用网络地址资源的服务可能需要按照与逻辑主机名地址配置相关的特定顺序来执行启动或停止步骤。 可选的回叫方法 Prenet_start 允许资源类型实现在将同一资源组中的网络地址配置为启用之前执行特定的启动操作,而可选的回叫方法 Postnet_stop 允许资源类型实现在将同一资源组中的网络地址配置为关闭之后执行特定的关闭操作。

在调用数据服务的 Prenet_start 方法之前,RGM 调用检测网络地址(但不将网络地址配置为启用)的方法。 在调用数据服务的 Postnet_stop 方法之后,RGM 调用不检测网络地址的方法。 RGM 使资源组联机的顺序如下。

  1. 检测网络地址。

  2. 调用数据服务的 Prenet_start 方法(如果有)。

  3. 将网络地址配置为启用。

  4. 调用数据服务的 Start 方法(如果有)。

RGM 使资源组脱机时采用相反的顺序:

  1. 调用数据服务的 Stop 方法(如果有)。

  2. 将网络地址配置为关闭。

  3. 调用数据服务的 Postnet_stop 方法(如果有)。

  4. 取消检测网络地址。

当决定是否使用 StartStopPrenet_startPostnet_stop 方法时,首先要考虑服务器端。 当使同时包含数据服务应用程序资源和网络地址资源的资源组联机时,RGM 将在调用该数据服务资源的 Start 方法之前,调用用来将网络地址配置为启用的方法。 因此,如果数据服务需要在启动时将网络地址配置为启用,请使用 Start 方法启动该数据服务。

同样,当使同时包含数据服务资源和网络地址资源的资源组脱机时,RGM 将在调用数据服务资源的 Stop 方法之后,调用用来将网络地址配置为关闭的方法。 因此,如果数据服务需要在停止时将网络地址配置为关闭,请使用 Stop 方法来停止该数据服务。

例如,要启动或停止数据服务,您可能需要调用该数据服务的管理公用程序或库。 有时,数据服务具有使用客户机服务器网络接口进行管理的管理公用程序或库。 即管理公用程序将调用服务器守护程序,因此可能需要将网络地址配置为启用来使用管理公用程序或库。 在这种情况下请使用 StartStop 方法。

如果数据服务需要在启动和停止时将网络地址配置为关闭,请使用 Prenet_startPostnet_stop 方法来启动和停止该数据服务。 请考虑在进行群集重新配置(带有 SCHA_GIVEOVER 变量的 scha_control() 或带有 scswitch 命令的切换)之后,网络地址还是数据服务首先联机的不同情况会不会使客户机软件作出不同反应。 例如,客户机实现可能进行最小限度的重试,当确定数据服务端口不可用后将立即放弃重试。

如果数据服务不需要在启动时将网络地址配置为启用,请在将网络接口配置为启用之前启动该数据服务。 这样可以确保数据服务在完成将网络地址配置为启用后,立刻对客户机的请求作出反应,并且客户机不太可能停止重试。 在这种情况下,请不要使用 Start 方法,最好使用 Prenet_start 方法来启动数据服务。

如果使用 Postnet_stop 方法,在将网络地址配置为关闭时,数据服务资源仍然可用。 只有在网络地址配置为关闭后,才会调用 Postnet_stop 方法。 结果是,数据服务的 TCP 或 UDP 服务端口或其 RPC 程序号似乎始终可以供网路上的客户机使用(除了该网络地址也未作出反应的情况)。

与使用 Prenet_startPostnet_stop 方法相比,决定使用 StartStop 方法时,或决定同时使用这两套方法时,必须将服务器和客户机的要求和行为方式都考虑在内。