检查清漆 4 中超过 2 个 Web 服务器的后端健康状况

checking backend health for more than 2 web servers in varnish 4

有一个带有 3 个后端的清漆服务器。所有后端都是apache。一切正常,清漆服务器缓存了我需要的一切,连接正常。我想监控网络服务器的健康状况。如果发生故障,varnish 不会向发生故障的 Web 服务器发送请求。问题是,当我为所有 backedns 启用探测时,我收到 503 错误!如果我在一个或两个后端启用它,一切正常,但是当我为 3 个后端启用它时,我得到 503 错误。这是后端和健康检查的清漆配置:

vcl 4.0;

import directors;

probe backend_healthcheck {
   .url = "/";
   .timeout = 34 ms;
   .window = 5;
   .threshold = 3;
   .interval = 1s;

}

backend web1 {
    .host = "192.168.1.16";
    .port = "8080";
    .probe = backend_healthcheck;
}

backend web2 {
    .host = "192.168.1.18";
    .port = "8080";
    .probe = backend_healthcheck;
}

backend web3 {
    .host = "192.168.1.20";
    .port = "8080";
    .probe = backend_healthcheck;
}

 sub vcl_init {
    new apache = directors.round_robin();
    apache.add_backend(web1);
    apache.add_backend(web2);
    apache.add_backend(web3);
}

您的健康检查很可能需要超过 34 毫秒才能完成,因此请尝试将其调整为 3 秒或更高:

probe backend_healthcheck {
   .url = "/";
   .timeout = 3s;
   .window = 5;
   .threshold = 3;
   .interval = 1s;
}

如果上述方法没有帮助,请使用 varnishlog -g raw -i Backend_health 和 post 输出监视您的探测器状态。