上游探针#
该模块实现了针对 http_upstream 的主动健康探测。
配置示例#
server {
listen ...;
location @probes {
...
proxy_pass http://backend;
upstream_probe backend_probe
uri=/probe
port=10004
interval=5s
test=$good
essential
fails=3
passes=3
max_body=10m
mode=idle;
}
}
指令#
upstream_probe (PRO)#
Added in version 1.2.0: PRO
|
|
默认 |
— |
location |
为在相同 location
上下文中指定的 proxy_pass、uwsgi_pass 等的 upstream 组内的节点定义一个主动健康探测。接下来,Angie 会定期根据此处配置的参数探测上游组的每个节点。
如果请求成功并考虑了 upstream_probe
指令的所有参数设置,以及指令所在 location
上下文对上游使用的控制设置(如 proxy_next_upstream 和 uwsgi_next_upstream 指令等,以及 proxy_set_header 等),则节点的探测通过。
要使用探测,上游必须有一个共享内存区 (zone)。一个上游可以配置多个探测。
接受以下参数:
|
探测的必需名称。 |
|
要添加到 proxy_pass、uwsgi_pass 等参数中的请求 URI。 |
|
探测请求的替代端口号。 |
|
探测之间的间隔。 |
|
探测的 HTTP 方法。 |
|
探测的条件,定义为一个包含变量的字符串。如果变量替换结果为 |
|
如果设置,节点的初始状态正在被检查,因此在探测通过前节点不会接收客户端请求。 |
|
此参数需要首先启用 |
|
将节点标记为不健康的连续失败探测次数。 |
|
将节点标记为健康的连续通过探测次数。 |
|
响应体的最大内存量。 |
|
探测模式,取决于节点的健康状况:
默认值 — |
示例:
upstream backend {
zone backend 1m;
server backend1.example.com;
server backend2.example.com;
}
map $upstream_status $good {
200 "1";
}
server {
listen ...;
location @probes {
...
proxy_pass http://backend;
upstream_probe backend_probe
uri=/probe
port=10004
interval=5s
test=$good
essential
persistent
fails=3
passes=3
max_body=10m
mode=idle;
}
}
探测操作的详细信息:
内置变量#
http_upstream
模块支持以下内置变量:
$upstream_probe
(PRO)#
当前活动的 upstream_probe 的名称。
$upstream_probe_body
(PRO)#
在一个 upstream_probe 中接收到的节点响应体;其大小由 max_body
限制。