上游探针#
该模块为 stream_upstream 实现主动健康探针。
配置示例#
server {
listen ...;
# ...
proxy_pass backend;
upstream_probe_timeout 1s;
upstream_probe backend_probe
port=12345
interval=5s
test=$good
essential
fails=3
passes=3
max_response=512k
mode=onfail
"send=data:GET / HTTP/1.0\n\n";
}
指令#
upstream_probe (PRO)#
Added in version 1.4.0: PRO
|
|
默认 |
— |
server |
定义一个针对 upstream 组内节点的主动健康探针,
这些组在相同 location
上下文中通过 upstream_probe
指令为 proxy_pass 指定。
随后,Angie 会根据此处配置的参数定期探测上游组的每个节点。
如果向节点的请求成功,并考虑到 upstream_probe
指令的所有参数设置以及控制指令 location
上下文使用上游的设置,包括 proxy_next_upstream 指令,则节点的探测通过。
为了使用探针,上游必须具有共享内存区域 (zone)。 一个上游可以配置多个探针。
接受以下参数:
|
探针的必需名称。 |
|
探针请求的备用端口号。 |
|
探针之间的 间隔。 |
|
探针的条件,定义为变量字符串。
如果变量替换结果为 |
|
如果设置,则在探针通过之前,节点不会接收客户端请求。 |
|
设置此参数需要先启用 |
|
使节点不健康的连续失败探针次数。 |
|
使节点健康的连续通过探针次数。 |
|
响应的最大内存大小。如果指定零 值,则禁用响应等待。 |
|
探针模式,取决于节点的健康状态:
默认值 — |
|
如果指定,则使用UDP协议进行探测。 默认情况下,使用TCP进行探测。 |
|
用于检查的数据;
这可以是带有前缀 |
示例:
upstream backend {
zone backend 1m;
server a.example.com;
server b.example.com;
}
map $upstream_probe_response $good {
~200 "1";
default "";
}
server {
listen ...;
# ...
proxy_pass backend;
upstream_probe_timeout 1s;
upstream_probe backend_probe
port=12345
interval=5s
test=$good
essential
persistent
fails=3
passes=3
max_response=512k
mode=onfail
"send=data:GET / HTTP/1.0\n\n";
}
探针操作细节:
内置变量#
stream_upstream
模块支持以下内置变量:
$upstream_probe
(PRO)#
当前活动的 upstream_probe 的名称。
$upstream_probe_response
(PRO)#
在由 upstream_probe 配置的主动探针期间接收到的响应内容。