Varnish 是否可以为一个站点配置多个后端?例如,我有一个具有多个后端的高可用性站点。
例如,我有一个www.goodies.com
在 php 5.6 上运行的网站。所以我有3个www-nodes
作为后端www-node5.6a
www-node5.6b
www-node5.6c
我在 Varnish 中配置了后端,如下所示:
backend www-node5.6a {
.host = "10.0.0.11";
.port = "80";
.connect_timeout = 6000s;
.first_byte_timeout = 6000s;
.between_bytes_timeout = 6000s;
}
backend www-node5.6b {
.host = "10.0.0.12";
.port = "80";
.connect_timeout = 6000s;
.first_byte_timeout = 6000s;
.between_bytes_timeout = 6000s;
}
backend www-node5.6c {
.host = "10.0.0.13";
.port = "80";
.connect_timeout = 6000s;
.first_byte_timeout = 6000s;
.between_bytes_timeout = 6000s;
}
我的问题是,如何配置 Varnish,以便用户可以随机使用该特定站点的任何后端?
答案1
如果您想要随机分发内容,那么您正在寻找什么,您需要在配置文件中添加如下内容:
director cl1 random {
{ .backend = [Backend0]; .weight = 1; }
{ .backend = [Backend1]; .weight = 1; }
}
有关 Varnish 后端如何工作的更多信息可以在这里找到。我发现上面的片段来自这个博客。您也可以根据 url 执行此操作,如下所示这里。您还可以阅读有关配置 Varnish 以实现高可用性的更多信息这里。
您应该考虑进行健康检查,并以循环模式设置和定义实际的主管。随机就是随机。理论上,访问您网站的每个用户都可以被随机发送到同一个后端,这就像根据后端运行状况和状态均匀分配内容一样“随机”。期待另一个来源他们有一些类似的东西:
import directors; backend [Backend0] { .host = "192.168.0.10"; .probe = { .url = "/"; .timeout = 1s; .interval = 5s; .window = 5; .threshold = 3; } } backend [Backend1] { .host = "192.168.0.10"; .probe = { .url = "/"; .timeout = 1s; .interval = 5s; .window = 5; .threshold = 3; } } sub vcl_init { new vdir = directors.round_robin(); vdir.add_backend([Backend0]); vdir.add_backend([Backend1]); }
根据您的环境进行必要的更改。在尝试任何操作之前,请阅读所有链接和文档,并备份您的旧配置。