Upstream Probe#
该模块为 Upstream 实现主动健康探测。
相关指南
负载均衡:说明
test、essential和persistent。
配置示例#
server {
listen ...;
location /backend {
...
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)#
| |
默认值 | — |
location |
为 upstream 组中的服务器定义主动健康探测,这些上游组在与 upstream_probe 指令相同的 location 上下文中通过 proxy_pass、uwsgi_pass 和类似指令指定。Angie 根据指定的参数定期向上游组中的每个服务器执行请求。
如果对服务器的请求成功,考虑到 upstream_probe 指令的所有参数设置以及控制其定义所在的 location 上下文如何使用上游的所有参数,则服务器通过探测。这包括 proxy_next_upstream 和 uwsgi_next_upstream 指令等,以及 proxy_set_header 等。
要使用探测,上游必须具有共享内存区域(zone)。一个上游可以配置多个探测。
接受以下参数:
| 探测的必需名称。 |
| 要附加到 proxy_pass、uwsgi_pass 等参数的请求 URI。默认为 |
| 探测请求的备用端口号。 |
| 探测之间的间隔。默认为 |
| 探测请求的 HTTP 方法。默认为 |
| 在请求期间要检查的条件;定义为包含变量的字符串。如果变量替换产生 |
| 如果设置,服务器的初始状态需要验证,在通过探测之前不会将客户端请求转发给它。 |
| 设置此参数需要首先启用 |
| 使服务器变为不健康状态的连续失败请求数。默认为 1。 |
| 使服务器变为健康状态的连续成功请求数。默认为 1。 |
| 响应正文的最大内存量。默认为 |
| 探测模式,取决于服务器的健康状态:
默认为 |
示例:
upstream backend {
zone backend 1m;
server backend1.example.com;
server backend2.example.com;
}
map $upstream_status $good {
200 "1";
}
server {
listen ...;
location /backend {
...
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;
}
}
探测操作的详细信息:
内置变量#
当前活动的 upstream_probe 的名称。 在 upstream_probe 期间接收的服务器响应正文;其大小受 http_upstream_probe 模块支持以下内置变量:$upstream_probe (PRO)#$upstream_probe_body (PRO)#max_body 限制。