【问题标题】:Run Varnish probe on port that's different from the main backend port在不同于主后端端口的端口上运行 Varnish 探测
【发布时间】:2014-09-23 18:12:34
【问题描述】:

我正在使用 varnish 在两台服务器之间进行负载平衡,并且我已经设置了一个导向器和两个后端,它们都成功地做到了这一点。

我的问题是我的两个后端在端口 80 上运行 nginx 列出 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;
            }
    }

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

【问题讨论】:

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


    【解决方案1】:

    您仍然需要将健康检查发送至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;
            }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 2021-12-16
      • 2018-09-21
      • 2019-06-29
      • 2021-06-16
      • 2014-04-14
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      相关资源
      最近更新 更多