我有非常复杂的 Varnish 配置。我不能真正使用导演并手动完成路线。
//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
}
这显然行不通。
最佳答案
在用谷歌搜索了很多之后,我找到了这个 link ,他们在那里谈论迁移到 V4。
编码 :
if(!req.backend.healthy) {
#your logic
}
对 Varnish 3 有效,对 Varnish 4 无效。
对于 Varnish 4:
看看这里:
https://www.varnish-cache.org/docs/4.0/users-guide/vcl-grace.html#users-guide-handling-misbehaving-servers
所以解决方案将是:
import std;
set req.backend_hint = webservice1;
if (!std.healthy(req.backend_hint)) {
set req.backend_hint = webservice2;
}
我希望这对你有帮助:)
关于proxy - 如何在 vcl_recv 中检查后端是否健康,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416415/