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

控制应用程序

每当节点加入或退出群集时,回调方法将启用 RGM 来控制基本资源(即应用程序)。

启动和停止资源

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

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

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

在资源完全停止本地节点上的所有活动并完全关闭之前,Stop 方法不能返回。Stop 方法的最安全实现将终止与该资源相关的本地节点上的所有进程。需要较长时间进行关闭的资源类型的 Stop 方法应设置了足够长的超时。在 RTR 文件中设置 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 程序号始终可供网络上的客户机使用(除非网络地址也未响应)。


注 –

如果在群集中安装 RPC 服务,则该服务不能使用以下程序号:100141、100142 和 100248。这些编号分别专用于 Sun Cluster 守护进程 rgmd_receptionistfedpmfd。如果您安装的 RPC 服务使用上述程序号之一,请更改该 RPC 服务的程序号。


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

InitFiniBoot 方法

InitFiniBoot 这三种可选方法可启用 RGM 对资源执行初始化和终止代码。

当资源受管理后出现以下一种情况时,RGM 将运行 Init 方法对该资源执行一次性初始化:

当资源不受管理后出现以下一种情况时,RGM 将运行 Fini 方法清理该资源:

清理操作必须具有幂等性。即如果已经完成了清理操作,Fini 将成功退出。

RGM 在新加入群集的节点(即刚刚对这些节点进行了引导或重新引导)上运行 Boot 方法。

使用 Boot 方法执行的初始化操作通常与使用 Init 执行的初始化操作相同。此初始化操作必须具有幂等性,即如果资源已在本地节点上进行了初始化,则 BootInit 将成功退出。