我正在使用清漆在两台服务器之间进行负载平衡,并且我已经设置了一个导向器和两个后端,这些都是成功完成的。
我的问题是我的两个后端在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;
}
}
如何在不遇到此问题的情况下检查我的实例?或者换句话说,有什么方法可以查询不同的端口,然后查询后端的主要端口?
答案 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;
}
}