作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试嵌套Varnish Director,但尽管在多个地方都提到过,但它在4.1.10或6.4中不起作用。
我有两个随机导演,我想将它们添加到后备导演中,如下所示:
vcl 4.0;
import directors;
backend alpha { .host = "192.168.0.101"; }
backend bravo { .host = "192.168.0.102"; }
sub vcl_init {
new primary_director = directors.random();
primary_director.add_backend(alpha, 1.0);
new secondary_director = directors.random();
secondary_director.add_backend(bravo, 1.0);
new fallback_director = directors.fallback();
fallback_director.add_backend(primary_director);
fallback_director.add_backend(secondary_director);
}
official documentation支持这种情况:
Note that directors can use other directors as backends
/tmp/test.vcl
并在Docker中运行 Varnish 来自己进行测试:
$ docker run -v /tmp/test.vcl:/test.vcl --rm varnish:6.4 varnishd -F -f /test.vcl
Error:
Message from VCC-compiler:
Expression has type INSTANCE, expected BACKEND
('/test.vcl' Line 15 Pos 35) -- (Pos 50)
fallback_director.add_backend(primary_director);
----------------------------------################--
Expected argument: BACKEND (unnamed argument)
While compiling function call:
('/test.vcl' Line 15 Pos 5) -- (Pos 50)
fallback_director.add_backend(primary_director);
----##############################################--
Running VCC-compiler failed, exited with 2
VCL compilation failed
最佳答案
非常感谢Varnish IRC董事会的成员-他们使我迅速得到了答案!
这是我的示例的更正版本:
vcl 4.0;
import directors;
backend alpha { .host = "192.168.0.101"; }
backend bravo { .host = "192.168.0.102"; }
sub vcl_init {
new primary_director = directors.random();
primary_director.add_backend(alpha, 1.0);
new secondary_director = directors.random();
secondary_director.add_backend(bravo, 1.0);
new fallback_director = directors.fallback();
fallback_director.add_backend(primary_director.backend());
fallback_director.add_backend(secondary_director.backend());
}
sub vcl_recv {
set req.backend_hint = fallback_director.backend();
}
这里的关键点是:
fallback_director.add_backend(primary_director.backend());
set req.backend_hint = fallback_director.backend();
,Varnish将使用定义的第一个后端。 关于varnish - 无法在其他导演中使用Varnish导演,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62882300/
我正在开发一个网络应用程序,让用户可以告诉他们他们最喜欢的电影、导演、电影编剧和 Actor 。为此,我想为他们每个人提供一个下拉列表或自动完成,以便他们可以选择自己的选择。 为此:我需要 Imdb
我是一名优秀的程序员,十分优秀!