Upstream Probe#
O módulo implementa sondas de saúde ativas
para Upstream. Adicionado na versão 1.2.0: PRO Padrão — location Define uma sonda de saúde ativa para servidores dentro dos grupos upstream
que são especificados para proxy_pass, uwsgi_pass, e assim por diante
no mesmo contexto Um servidor passa na sonda se a requisição para ele for bem-sucedida, considerando todas
as configurações de parâmetros da diretiva Para fazer uso das sondas,
o upstream deve ter uma zona de memória compartilhada (zone).
Um upstream pode ser configurado com várias sondas. Os seguintes parâmetros são aceitos: Nome obrigatório da sonda. URI da requisição a ser adicionado ao argumento para proxy_pass,
uwsgi_pass, etc. Por padrão — Número de porta alternativo para a requisição da sonda. Intervalo entre sondas. Por padrão — Método HTTP da requisição da sonda. Por padrão — A condição a ser verificada durante a requisição; definida como uma string com variáveis.
Se a substituição de variável resultar em Se definido, o estado inicial do servidor está sujeito à verificação
e requisições de cliente não são encaminhadas para ele até que a sonda seja aprovada. Definir este parâmetro requer habilitar Número de requisições consecutivas falhadas que
tornam o servidor não saudável. Por padrão — 1. Número de requisições consecutivas bem-sucedidas que
tornam o servidor saudável. Por padrão — 1. Quantidade máxima de memória para o corpo da resposta. Por padrão — Modo da sonda, dependendo da saúde dos servidores: Por padrão — Exemplo: Detalhes da operação da sonda: Inicialmente, o servidor não receberá requisições de cliente
até que passe em todas as sondas O servidor é considerado não saudável e não receberá requisições de cliente,
se qualquer das sondas configuradas para ele atingir seu limite Para um servidor não saudável ser considerado saudável novamente,
todas as sondas configuradas para ele devem atingir seus respectivos limites O módulo Nome da upstream_probe atualmente ativa. Corpo da resposta do servidor,
recebido durante uma upstream_probe;
seu tamanho é limitado por Exemplo de Configuração#
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;
}
}
Diretivas#
upstream_probe (PRO)#
upstream_probe
name [uri=
address] [port=
number] [interval=
time] [method=
method] [test=
condition] [essential
[persistent
]] [fails=
number] [passes=
number] [max_body=
size] [mode=
always
| idle
| onfail
];location
com a diretiva upstream_probe
.
Subsequentemente, o Angie executa regularmente requisições de acordo com os parâmetros especificados
para cada servidor no grupo upstream.upstream_probe
e todos os parâmetros que
controlam como os upstreams são usados pelo contexto location
onde é definido.
Isso inclui as diretivas proxy_next_upstream e uwsgi_next_upstream,
etc.; também, proxy_set_header e assim por diante.name
uri
/
.port
interval
5s
.method
GET
.test
""
ou "0"
,
a sonda não é aprovada.essential
persistent
essential
primeiro;
servidores persistent
que estavam funcionando antes de um
recarregamento de configuração
começam a receber requisições sem serem obrigados a passar nesta sonda primeiro.fails
passes
max_body
256k
.mode
always
— servidores são sondados independentemente de seu estado;idle
— sondas afetam servidores não saudáveis e servidores onde
interval
passou desde a última requisição do cliente.onfail
— apenas servidores não saudáveis são sondados.always
.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;
}
}
essential
configuradas para ele
(pulando as persistent
se a configuração foi recarregada
e o servidor foi considerado saudável antes disso).
Se não há tais sondas, o servidor é considerado saudável.fails
ou o próprio servidor atingir o limite max_fails.passes
;
depois disso, o limite max_fails é considerado.Variáveis Integradas#
http_upstream_probe
suporta as seguintes variáveis integradas:$upstream_probe
(PRO)#$upstream_probe_body
(PRO)#max_body
.