Varnish - 一个站点的多个后端

Varnish - 一个站点的多个后端

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]);
 }

根据您的环境进行必要的更改。在尝试任何操作之前,请阅读所有链接和文档,并备份您的旧配置。

相关内容