如何在vcl_recv中检查后端是否健康

时间:2012-09-13 23:54:25

标签: proxy varnish varnish-vcl

我有非常复杂的清漆配置。我无法真正使用导演并手动完成路线。

//webservice1 and webservice2 has probes working there

set req.backend = webservice1;
if (req.backend.healthy)
{ 
     #redirect there 
}

set req.backend = webservice2;
if(req.backend.healthy)
{ 
     #change parameters with regex and redirect
}

这很有效。但看起来真的很蹩脚。

有没有"合法"找出后端是否健康的方法?像这样:

if(webservice2.healthy)
{ 
     #change parameters with regex and redirect
}

显然这不起作用。

1 个答案:

答案 0 :(得分:1)

我一直在做很多研究,这是实现它的唯一方法(除非你想写一个vmod)。

假设你总是想回复webservice1,除非它生病了,我可能会建议一点点重构:

set req.backend = webservice1;
if(!req.backend.healthy) {
     set req.backend = webservice2;
     #change parameters with regex
}
# redirect here