将后端主机动态添加或删除到Varnish

将后端主机动态添加或删除到Varnish,varnish,varnish-vcl,Varnish,Varnish Vcl,在不停机的情况下,以编程方式向Varnish控制器添加或从中删除单个后端服务器的最佳方法是什么?我一直在寻找一个很好的例子,但没有找到 我希望能够扩大我的后端服务器上下需求 谢谢 Sam虽然这不是添加后端的最优雅甚至最动态的方式,但我会通过在单独的VCL中定义后端并使用 include "backend.vcl"; 定义后端和控制器。比如说 probe healthcheck { .url = "/online"; .interval = 15s; .timeout = 0.

在不停机的情况下,以编程方式向Varnish控制器添加或从中删除单个后端服务器的最佳方法是什么?我一直在寻找一个很好的例子,但没有找到

我希望能够扩大我的后端服务器上下需求

谢谢


Sam

虽然这不是添加后端的最优雅甚至最动态的方式,但我会通过在单独的VCL中定义后端并使用

include "backend.vcl";
定义后端和控制器。比如说

probe healthcheck {
   .url = "/online";
   .interval = 15s;
   .timeout = 0.3 s;
   .window = 3;
   .threshold = 1;
   .initial = 1;
}

backend web1 {
  .host = "10.1.2.1";
  .port = "80";
  .connect_timeout = 300s;
  .first_byte_timeout = 5000s;
  .between_bytes_timeout = 300s;
  .probe = healthcheck;
}

director backendpool round-robin {
  { .backend = web1; }
}
并使用
backendpool
作为后端。然后使用shell脚本、ssh、自定义守护进程或任何适合您需要的方法,通过添加后端更新
backend.vcl
,并为Varnish重新加载

这种方法的问题在于Varnish实际上并没有删除从
backend.vcl
中删除的后端。即使他们没有使用,清漆将继续探测他们。从长远来看,这可能会导致意外行为。如果重新使用后端名称,至少后端运行状况探测的结果会变得混乱。例如,在对上述示例中的
web1
后端重命名几次,然后将其主机更改为无效主机后,以下是在仅定义了有效
web1
后端的情况下恢复到上述配置后的
后端运行状况
轮询结果

0 Backend_health - web1 Still healthy 4--X-RH 3 1 3 0.001141 0.001055 HTTP/1.1 200 OK
0 Backend_health - web1 Still sick ------- 0 1 3 0.000000 0.000000
0 Backend_health - web2 Still healthy 4--X-RH 3 1 3 0.001061 0.001111 HTTP/1.1 200 OK
0 Backend_health - web3 Still healthy 4--X-RH 3 1 3 0.001007 0.001021 HTTP/1.1 200 OK
Varnish 2.1提供了更细粒度的后端处理,但据我所知,Varnish 3不提供