用于 Apache 的 Sun Cluster 数据服务指南(适用于 Solaris OS)

Sun Cluster HA for Apache 故障监视器

Sun Cluster HA for Apache 探测向服务器发送请求,以查询 Apache 服务器的运行状况。 在探测实际查询 Apache 服务器之前,探测将检查以确认网络资源已针对此 Apache 资源进行了配置。 如果未配置网络资源,将记录一条错误消息(未找到资源的网络资源),并且探测将以失败结束。

探测将执行以下步骤。

  1. 使用资源特性 Probe_timeout 设置的超时值来限制尝试成功探测 Apache 服务器所用的时间。

  2. 对于不安全的 Webserver,请连接到 Apache 服务器,并通过发送 HTTP 请求和接收响应来执行 HTTP 1.0 HEAD 检查。 然后,探测将连接到每个 IP 地址/端口组合上的 Apache 服务器。

    此查询结果可以是失败,也可以是成功。 如果探测成功接收到 Apache 服务器的回复,探测将返回其无限循环,并继续下一个周期的探测和休眠。

    查询会因各种原因而失败,例如网络通信繁忙、系统负载大和配置错误。 如果未将 Apache 服务器配置为在被探测的所有 IP 地址/端口组合上进行侦听,则会发生配置错误。 Apache 服务器应该为针对此资源指定的每个 IP 地址的每个端口提供服务。 如果未在 Probe_timeout 限制(先前在步骤 1 中指定)内收到对查询的回复,探测会将此情况视为 Apache 数据服务的部分失败,并在其历史记录中记录该失败。 Apache 探测失败可以是完全失败,也可以是部分失败。

    以下探测失败被认为是完全失败。

    • 无法连接到服务器,如以下错误消息所示(%s 表示主机名,%d 表示端口号)。


      无法连接到 %s(端口 %d)%s
    • 尝试连接到连接器后,运行超时(超过资源特性超时值 Probe_timeout)。

    • 无法将探测字符串成功发送到服务器,如以下错误消息所示(第一个 %s 表示主机名,%d 表示端口号,第二个 %s 表示有关错误的详细信息)。


      无法与服务器 %s 端口 %d 进行通信: %s

    当监视器在资源特性间隔 Retry_interval 内累计了两个这样的部分失败时,监视器会将这些失败计为一个完全失败。

    以下探测失败被认为是部分失败:

    • 尝试从服务器读取对探测查询的回复时,运行超时(超过资源特性超时值 Probe_timeout)。

    • 由于其他原因无法从服务器读取数据,如以下错误消息所示(第一个 %s 表示主机名,%d 表示端口号, 第二个 %s 表示有关错误的详细信息)。


      无法与服务器 %s 端口 %d 进行通信: %s
  3. 如果您在 Monitor_Uri_List 扩展特性中配置了 URI,则探测将连接到 Sun Cluster HA for Apache 服务器,并通过将 HTTP 请求发送到 Monitor_Uri_List 中的每个 URI 和接受响应来执行 HTTP 1.1 GET 检查。 如果 HTTP 服务器返回的代码是 500(内部服务器错误)或者如果连接失败,探测将采取操作。

    HTTP 请求的结果可能是失败,也可能是成功。 如果所有请求均成功接收到 Sun Cluster HA for Apache 服务器的回复,探测将返回并继续下一个周期的探测和休眠。

    网络通信繁忙、系统负载大和配置错误均会导致 HTTP GET 探测失败。 如果 Monitor_Uri_List 中的某个 URI 包含不正确的端口或主机名,则 Monitor_Uri_List 特性的配置错误会导致故障。 例如,如果 Web 服务器实例正在逻辑主机 schost-1 上进行侦听并且 URI 被指定为 http://schost-2/servlet/monitor,则探测将尝试联系 schost-2 以向 /servlet/monitor 提出请求。

  4. 对于安全的 Webserver,请连接到每个 IP 地址和端口组合。 如果此连接尝试成功,探测将断开连接,并以成功状态返回。 不执行进一步检查。

  5. 基于故障的历史记录,故障会导致本地重新启动或数据服务的故障转移。 用于 Solaris OS 的 Sun Cluster 数据服务规划和管理指南》的“Sun Cluster 数据服务故障监视器”中进一步介绍了此操作。