一个清漆主pipe可以查询它包含的健康后端的数量吗?

在Varnish 3中,有没有办法检查一个董事是否有健康的后端?

我的使用案例是我有一个负载平衡器,它将stream量分配到两个清漆盒,而这两个清洁盒又坐在几个Web服务器的前面。 如果导演至less有一个健康的后端,而不需要将请求传递给实际的后端,我想让Varnish将200返回到负载均衡器的健康检查。

我正在寻找像这样的东西:

if (req.url ~ "healthcheck.html") { if (my_director.has_healthy_backend) { return 200 } else { error 500 "No backends available" } } 

最主要的是你的导演设置了探测,所以它实际上在你的后端有一个健康状态。 如果是这样的话,那么你可以使用像下面这样的东西:

 sub vcl_recv { if (req.url ~ "healthcheck.html") { if (!req.backend.healthy) { error 503 "No backends available"; } else { error 200 "All is well"; } } [...rest of your logic...] 

等效的Varnish 4解决scheme是:

 if (req.url ~ "healthcheck.html") { if (!std.healthy(req.backend_hint)) { return (synth (503, "No backends available")); } else { return (synth (200, "All is well")); } }