Apache mod_proxy_balancer 健康检查

Apache mod_proxy_balancer 健康检查

我在另一台运行 mod_proxy_balancer 的 Apache 服务器后面设置了 3 个 Apache Web 服务器。

今天,其中一台网络服务器重新启动了。重新启动大约需要 16 分钟。

在此期间,我可以看到以下日志行每 30 秒在我的 Apache mod_proxy_balancer 服务器的错误日志中

[Tue Sep 30 07:04:42 2014] [error] ap_proxy_connect_backend disabling worker for (s1-sc1-c-use)

在 16 分钟的停机时间内,该日志被记录了 32 次

我正在尝试弄清楚这里发生了什么。我担心的是,由于我的平衡器配置存在缺陷,平衡器会反复尝试向正在重新启动的服务器发送请求(因此向用户返回错误)。

为什么 Apache 反复告诉我它正在“禁用工作程序”?平衡器模块是否会间歇性地向故障节点发送用户请求,以尝试确定它是否已恢复,或者它是否有自己的内部健康检查机制(对用户不可见)?

答案1

好的。我可以解释一下。

Apache mod_proxy_balancer 没有自己独立的健康检查机制。Balancer 成员(worker)的状态是根据实际转发的用户请求的结果来确定的。

顺序如下:

  1. Apache httpd 向 worker 发送请求
  2. 工作进程没有响应,或者响应 HTTP 状态,从而触发故障转移,并使成员进入 ERR 状态
  3. Apache httpd 启动重试计时器(默认 60 秒),并且在重试计时器到期之前不会再发送任何请求
  4. 当重试计时器到期时,按顺序返回步骤 1

我的重试值是 60 秒(默认)。

我看到多个日志条目的原因是我的 Apache httpd Balancer 配置了多个平衡器,每个平衡器都有自己独立的重试计时器。

因此,根据应用程序活动,重试计时器会被任意重置,并被任意测试,这解释了日志中工作状态更新的不均匀分布。

相关内容