【问题标题】:Why my varnish health check always return the backend server is sick?为什么我的清漆健康检查总是返回后端服务器生病了?
【发布时间】:2015-08-22 14:44:29
【问题描述】:

我在 nginx Web 服务器之前使用 varnish 作为缓存服务器。我在 varnish 配置文件中为后端服务器的定义配置了健康检查。但是清漆总是返回我的后端服务器生病了,当我停止我的清漆并直接连接 nginx 服务器时,它可以正常工作。我尝试使用 .url 或 .request 来启用后端服务器检查,但它永远无法正常工作。如何解决它很疯狂。

我的配置是:

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

backend nginx2 {
.host = "10.161.78.249";
.port = "80";
.probe = backend_healthcheck;
}

backend nginx2 {
.host = "10.161.78.249";
.port = "80";
.probe = backend_healthcheck;
}

import directors;
import std;
sub vcl_init {
new webserver = directors.hash();
webserver.add_backend(nginx1,1.0);
webserver.add_backend(nginx2,1.0);
}

sub vcl_recv {
set req.backend_hint = webserver.backend(req.http.cookie);
}

真不知道哪个配置出错了? varnish 在服务器上运行,有公共 ip,后端服务器只有内部 ip。

希望对我有所帮助,非常感谢。

【问题讨论】:

    标签: varnish


    【解决方案1】:

    请注意,请求必须返回 200 OK 以便 Varnish 接受它作为健康。 会不会是你的框架在/ URL 上返回了302

    此外,您的.window 大小意味着服务器开始时生病并一直生病,直到您收到.threshold 连续健康响应,在您的情况下这需要 15 分钟。

    另外,日志显示什么?

    文档: https://www.varnish-cache.org/trac/wiki/BackendPolling

    【讨论】:

    • 非常感谢,我检查了healthcheck的网址。它真的返回 302。
    猜你喜欢
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 2023-01-24
    • 1970-01-01
    • 2018-07-01
    相关资源
    最近更新 更多