HAProxy运行状况检查:使用httpchk并进行观察?


10

我将HAProxy 1.4.18与以下后端配置一起使用

backend staging
  option httpchk HEAD /check.txt HTTP/1.0
  http-check disable-on-404
  default-server error-limit 1 on-error mark-down
  server staging01 x.x.x.x:80 check observe layer7
  server staging02 x.x.x.x:80 check observe layer7

服务器正在apache / passenger上运行多个应用程序。

httpchk和disable-on-404的组合允许正常关闭并非常轻松地从lb中删除服务器,同时仍然可以直接访问(即用于测试)。

我正在尝试设置观察程序,以便在应用程序无法正常工作时禁用服务器。我已经破坏了staging02上的应用程序配置,因此它始终返回500。在第一个500之后正确地将其标记为DOWN,但是在下一个httpchk处将其标记为UP。

这是日志文件:

Server staging/staging02 is DOWN, reason: Health analyze, info: "Detected 1 consecutive errors, last one was: Wrong http response". 1 active and 1 backup servers left. 2 sessions active, 0 requeued, 0 remaining in queue.
Server staging/staging02 is DOWN, reason: Health analyze, info: "Detected 1 consecutive errors, last one was: Wrong http response". 1 active and 1 backup servers left. 1 sessions active, 0 requeued, 0 remaining in queue.
Server staging/staging02 is UP, reason: Layer7 check passed, code: 200, info: "OK", check duration: 0ms. 2 active and 1 backup servers online. 0 sessions requeued, 0 total in queue.

有没有办法将这两项检查结合起来?


可以肯定地说,HAProxy绝对是问题所在,您可以从后端Apache服务器中找到三个匹配的日志行并将它们添加到您的问题中吗?
Ladadadada 2011年

故意将其中一台apache服务器配置错误,以便其上的所有应用程序都返回500错误代码。但是,除非我删除该文件,否则/check.txt始终有效。我希望apache服务器被禁用,即使它返回500错误,即使check.txt文件仍然存在。
ouranos 2011年

Answers:


4

我现在明白了其中的区别在于/check.txt 实际上将返回200响应,但所有应用程序的请求返回500 HAProxy的看到从代理请求回来的500秒,都在服务器出池,但随后开始了自己检查,收到200,然后将服务器放回池中。

解决方案是执行以下一项操作:

  1. 配置Apache,而不是应用程序,以使每个请求都返回500响应,即使是静态文件也是如此/check.txt
  2. 更改/check.txt为仅包含足够逻辑以在适当时在200和500响应之间进行选择的Ruby应用程序。
  3. 将该inter设置为3600之类的荒谬。这应该给您一个小时的时间进行测试,或者(如果服务器自行关闭)找出问题并重新启动。
  4. inter值设置为较小的值(例如60),但将rise值设置为较高的值(例如60)。这也将使您有一个小时的时间将服务器添加回池中。 (请注意,最后列出这两个是因为它们可能是非常糟糕的主意。)

是的,这就是正在发生的事情。我认为我必须摆脱/check.txt并将httpchk指向一个应用程序。该check.txt文件非常有用,可以快速,正常地从所有HAProxy中删除服务器(在HA设置中有3个,只有一个处于活动状态)。disable server在重新加载之间似乎也不会持续存在。
ouranos 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.