在与主后端端口不同的端口上运行Varnish探针

时间:2014-07-31 17:09:24

标签: node.js nginx varnish varnish-vcl health-monitoring

我正在使用清漆在两台服务器之间进行负载平衡,并且我已经设置了一个导向器和两个后端,这些都是成功完成的。

我的问题是我的两个后端在nginx的端口80上运行my.domain.com。然后,Nginx将我的请求重新路由到侦听端口3000的进程。我的进程有一个名为/healthcheck的路由,我想用它来进行清漆后端探测。

目前这是我的.vcl文件:

backend b0 {
        .host = "53.243.15.198";
        .probe = { 
                .url = "/healthcheck";
                .timeout = 34 ms; 
                .interval = 1s; 
                .window = 10;
                .threshold = 8;
        }
}

因此,如果我导航到my.domain.com/healthcheck,我会收到200 OK,但当varnish启动请求时,nginx不会提取请求,因为它不再来自my.domain.com

我是根据this documentation尝试过的,但无效

 backend b0 {
            .host = "53.243.15.198";
            .probe = { 
                    .request =
                         "GET /healthcheck HTTP/1.1"
                         "Host: 53.243.15.198:3000"
                         "Connection: close";
                    .timeout = 34 ms; 
                    .interval = 1s; 
                    .window = 10;
                    .threshold = 8;
            }
    }

如何在不遇到此问题的情况下检查我的实例?或者换句话说,有什么方法可以查询不同的端口,然后查询后端的主要端口?

1 个答案:

答案 0 :(得分:0)

您仍需要将健康检查发送至nginx。但是,您的探针必须具有HTTP主机my.domain.com

backend b0 {
        .host = "53.243.15.198";
        .host_header = "my.domain.com";
        .probe = { 
                .url = "/healthcheck";
                .timeout = 34 ms; 
                .interval = 1s; 
                .window = 10;
                .threshold = 8;
        }
}