haproxy httpchk在后台进行多重检查

是否有可能在一个后端检查两个条件? 例

backend web-static option httpchk GET /path/alive.php HTTP/1.1\r\nHost:\ www1.domain.com option httpchk GET /path2/alive.php HTTP/1.1\r\nHost:\ www1.domain.com server appsrv1 192.168.1.10:80 check inter 3000 weight 1 

也许,制作一个“包装器”PHP会更容易:它检查其他文件,如果一切正常,则返回HTTP代码200,否则返回404。

正如我记得,当我们想要function检查的时候,这也适用于我们。

啊,我有同样的问题! 由于我们需要支持非CORS兼容的浏览器(IE 8和IE 9),因此我们的开发人员使用一个URL名称生成了多functionWeb服务。 一个通往一个VIP地址的DNS名称有几个子目录,每个子目录都是一个不同的应用程序。 因此,我们的负载均衡器必须对每个服务进行健康检查,然后将其视为一个大的“AND”testing,也就是说, 即使其中一个服务没有通过检查,我们也必须将该服务器抽出农场,直到他们全部通过。

我们正在从Cisco ACE负载平衡器转换过来,在该平台上,您只需定义多个“探测”configuration,然后在单个服务器场中调用多个探测器,一行接一行地运行所有探测器。 正如你可能发现的,HAProxy不会让你定义多个“选项httpchk”…或者至less它忽略了其中的一个,所以你没有得到你以后的testing。 但是我从手册中发现,我可以通过不使用httpchk来代替“option tcp-check”下的一系列“连接,发送,检查”行。 它完美的作品。

 option tcp-check tcp-check connect tcp-check send GET\ /FirstApplication/check.aspx?healthcheck\ HTTP/1.0\r\n\r\n tcp-check expect string Healthy tcp-check connect tcp-check send GET\ /SecondApplication/check.aspx\ HTTP/1.0\r\n\r\n tcp-check expect string YesThisIsGood tcp-check connect tcp-check send GET\ /ThirdApp/Check.aspx\ HTTP/1.0\r\n\r\n tcp-check expect string ExpectedCheckResult tcp-check connect tcp-check send GET\ /NumberFourApp/check.aspx\ HTTP/1.0\r\n\r\n tcp-check expect string YesItIsWorking 

请注意,您必须反斜杠 – 转义您发送的string中的每个空格。 我在请求中使用HTTP / 1.0,默认情况下,它不会保持连接,所以我正在重新连接每个系列的行。 我想我也可以使用HTTP / 1.1,但是我也必须发送一个主机头,所以我认为这样更容易。 连续执行这四项检查,仍然只需要60ms,所以我很满意。 另外请注意,我只是使用“期望string”,但也有一个“期望rstring”正则expression式search从服务器返回的结果内容。