VCL-探头¶
配置后端运行状况探测¶
- 手册部分:
7
后端运行状况探测器¶
可以将Varnish配置为定期发送请求,以测试后端是否正在应答,从而测试是否处于“健康”状态。
可以为每个后端配置探测::
backend foo {
[...]
.probe = {
[...]
}
}
它们可以命名并在后端之间共享::
probe light {
[...]
}
backend foo {
.probe = light;
}
backend bar {
.probe = light;
}
或者是一个 default
可以定义探测,它适用于所有后端,而不是特定的 .probe
已配置::
probe default {
[...]
}
基本语法与后端相同::
probe name {
.attribute1 = value;
.attribute2 = "value";
[...]
}
没有强制属性,它们都有缺省值。
属性 .url
¶
要查询的URL。默认为 /
**
.url = "/health-probe";
属性 .request
¶
可用于指定要发送的完整HTTP/1.1请求::
.request = "GET / HTTP/1.1"
"Host: example.com"
"X-Magic: We're fine with this."
"Connection: close";
每个字符串都将具有 CRNL
追加并终止最终的HTTP标头块 CRNL
也将被附加。
因为连接关闭是运行状况检查的一部分, Connection: close
是强制性的。
属性 .expected_response
¶
预期的HTTP状态,默认为 200
**
.expected_response = 418;
属性 .expect_close
¶
是否期望后端关闭底层连接。
接受 true
或 false
,默认为 true
**
.expect_close = false;
警告:后端未关闭连接时,设置 expect_close
至 false
使探测任务等到超时后才检查响应。
属性 .timeout
¶
探测必须成功的速度,默认为两秒::
.timeout = 10s;
属性 .interval
¶
探测之间的时间,默认为5秒::
.interval = 1m;
后端健康移位寄存器¶
后端健康探测使用64级移位寄存器来记住最新的健康探测并评估后端的总体健康状况。
在CLI中,良好的后端运行状况如下所示:
varnish> backend.list -p boot.backend
Backend name Admin Probe Health Last change
boot.backend probe 5/5 healthy Wed, 13 Jan 2021 10:31:50 GMT
Current states good: 5 threshold: 4 window: 5
Average response time of good probes: 0.000793
Oldest ================================================== Newest
4444444444444444444444444444444444444444444444444444444444444444 Good IPv4
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Good Xmit
RRRRRRRRRRRRRRRRRRRRRRR----RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR Good Recv
HHHHHHHHHHHHHHHHHHHHHHH--------HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH Happy
从底部开始,最后一行显示,这个后端对于64个健康探头来说大部分都被声明为“Happy”,但前段时间出现了一些麻烦。
然而,在这种情况下, .window
被配置为5,并且 .threshold
设置为4,因此在这个时间点,后端被认为是完全健康的。
一项额外的 .initial
当加载VCL时,在移位寄存器中填充那么多“Happy”条目,以便后端可以快速变得健康,即使它们的健康通常被考虑在许多样本上:
.interval = 1s;
.window = 60;
.threshold = 45;
.initial = 43;
如果最后一分钟的四个健康探测中有三个是正常的,那么这个后端将被认为是健康的,但是在加载VCL之后,一旦发生了两个良好的探测,它就会变得健康。
默认值为:
.window
=8.threshold
=3.initial
= one less than.threshold
请注意,默认设置为 .initial
意味着在第一个探测响应成功返回之前,后端将被标记为不健康。这意味着对于按需创建的后端(由vmod创建),不能使用的默认值 .initial
,因为当后端请求发生时,新创建的后端很可能仍然不健康。
另请参阅¶
HISTORY¶
VCL是由Pul-Henning Kamp与Verden Gang AS、Redpill Linpro和Varnish Software合作开发的。本手册页面由Per Buer、Pul-Henning Kamp、Martin Blix Grydeland、Kristian LyngstøL、Lasse Karstensen等人撰写。
COPYRIGHT¶
本文档使用与Varnish本身相同的许可。有关详细信息,请参阅许可证。
版权所有(C)2006 Verdens Gang AS
版权所有(C)2006-2021 Varnish软件AS