为什么我的 Ldirectord 每隔一段时间就会在读取服务器上检查多次?

为什么我的 Ldirectord 每隔一段时间就会在读取服务器上检查多次?

我有一台 Ldirectord 服务器和两台真实服务器。我的 ldirectord 以前每隔一段时间就会检查一次真实服务器上的请求页面,但现在我发现它检查了四次。我监控了两台真实服务器上的日志,它们都有同样的问题。

这是我的 ldirectord 配置:

检查超时 = 10
检查间隔 = 5
自动重新加载 = 是
日志文件 =“/var/log/ldirectord.log”
静止 = 无
虚拟 = 192.168.1.100:80

   fallback=127.0.0.1:80
   real=192.168.1.10:80 gate
   real=192.168.1.20:80 gate
   service=http
   request="lb.html"
   receive="still alive"
   scheduler=sh
   persistent=60
   protocol=tcp
   checktype=negotiate

Ldirectord 会每 5 秒(checkinterval)连接每个真实服务器一次并请求 192.168.0.10:80/test.html (real/request)。

真实服务器的访问日志:

192.168.1.100 - - [13/Jun/2012:10:36:44 -0700] “GET /lb.html HTTP/1.1” 200 12 “-” “libwww-perl/5.805”
192.168.1.100 - - [13/Jun/2012:10:36:44 -0700] “GET /lb.html HTTP/1.1” 200 12 “-” “libwww-perl/5.805”
192.168.1.100 - - [13/Jun/2012:10:36:44 -0700] “GET /lb.html HTTP/1.1” 200 12 “-” “libwww-perl/5.805”
192.168.1.100 - - [13/Jun/2012:10:36:44 -0700] “GET /lb.html HTTP/1.1” 200 12 “-” “libwww-perl/5.805”
192.168.1.100 - - [13/Jun/2012:10:36:49 -0700] “GET /lb.html HTTP/1.1” 200 12 “-” “libwww-perl/5.805”
192.168.1.100 - - [13/Jun/2012:10:36:49 -0700] “GET /lb.html HTTP/1.1” 200 12 “-” “libwww-perl/5.805”
192.168.1.100 - - [13/Jun/2012:10:36:49 -0700] "GET /lb.html HTTP/1.1" 200 12 "-" "libwww-perl/5.805"
192.168.1.100 - - [13/Jun/2012:10:36:49 -0700] "GET /lb.html HTTP/1.1" 200 12 "-" "libwww-perl/5.805"
192.168.1.100 - - [13/Jun/2012:10:36:54 -0700] "GET /lb.html HTTP/1.1" 200 12 "-" "libwww-perl/5.805"
192.168.1.100 - - [13/Jun/2012:10:36:54 -0700] "GET /lb.html HTTP/1.1" 200 12 "-" "libwww-perl/5.805"
192.168.1.100 - - [13/Jun/2012:10:36:54 -0700] "GET /lb.html HTTP/1.1" 200 12 "-" "libwww-perl/5.805"
192.168.1.100 - - [13/Jun/2012:10:36:54 -0700] "GET /lb.html HTTP/1.1" 200 12 "-" "libwww-perl/5.805"

答案1

我唯一能说的是,我在我们的部署中看到了同样的问题。

我相信这与一致性检查有关,一次进行多次检查可确保获得的响应是​​一致的,从而检查通过。

我还没有找到任何文件提到这一点是可以改变的。

综上所述,如果经过多次检查,服务仍按预期运行,那么建议遵循那句老话“如果它没坏,就不要修理它”。

然而,如果您绝对必须删除多个检查(如果它们是为了一致性而运行,我强烈建议不要这样做),那么需要进一步研究配置变量(如果存在);如果不存在,则编辑代码并重新编译。

相关内容