Upstream Probe#
O módulo implementa sondas de saúde ativas
para stream_upstream. Nota De acordo com a RFC 2616 (HTTP/1.1) e RFC 9110 (HTTP Semantics), os cabeçalhos HTTP
devem ser separados por uma sequência CRLF ( Padrão — server Define uma sonda de saúde ativa para servidores dentro do grupo upstream
especificado na diretiva proxy_pass
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. Número de porta alternativo para a requisição da sonda. Intervalo entre sondas.
Por padrão — A condição para a sonda, definida como uma string de variáveis.
Se a substituição das variáveis resultar em Se definido, o estado inicial do servidor está sendo verificado, então o servidor
não recebe requisições de clientes até que a sonda seja aprovada. Definir este parâmetro requer habilitar Número de sondas falhadas subsequentes que
tornam o servidor não saudável.
Por padrão — 1. Número de sondas aprovadas subsequentes que
tornam o servidor saudável.
Por padrão — 1. Tamanho máximo de memória para a resposta. Se um
valor zero for especificado, a espera por resposta é desabilitada.
Por padrão — Modo da sonda, dependendo da saúde dos servidores: Por padrão — Se especificado, o protocolo UDP é usado para sondagem.
Por padrão, TCP é usado para sondagem. Dados enviados para a sonda: dados inline com o prefixo Ao usar um arquivo: O processo worker abre e lê
o arquivo a cada acesso; o conteúdo não é armazenado em cache na memória. Recarregamento de configuração não é necessário quando o arquivo muda;
o novo conteúdo será lido no próximo acesso. Permissões de acesso necessárias: Atualize arquivos usando o comando move ( Exemplo: Detalhes da operação da sonda: Inicialmente, o servidor não receberá requisições de clientes
até que passe em todas as sondas O servidor é considerado não saudável e não receberá requisições de clientes,
se qualquer das sondas configuradas para ele atingir Para um servidor não saudável ser considerado saudável novamente,
todas as sondas configuradas para ele devem atingir seus respectivos Define o tempo máximo de inatividade para uma conexão estabelecida com o servidor para sondas de saúde configuradas usando a diretiva upstream_probe (PRO); se este limite for excedido, a conexão será fechada. O módulo Nome da upstream_probe atualmente ativa. Conteúdo da resposta recebida durante uma sonda ativa configurada por
upstream_probe.Exemplo de Configuração#
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\r\n\r\n";
}
\r\n) ao invés de apenas
\n.Diretivas#
upstream_probe (PRO)#
upstream_probe name [port=number] [interval=time] [test=condition] [essential [persistent]] [fails=number] [passes=number] [max_response=size] [mode=always | idle | onfail] [udp] [send=string];server onde a diretiva upstream_probe está localizada.upstream_probe e todos os parâmetros que
afetam como os upstreams são usados pelo contexto server onde está definido,
incluindo a diretiva proxy_next_upstream.nameportinterval5s.test"" ou "0",
a sonda não é aprovada.essentialpersistentessential primeiro;
servidores persistent que foram considerados saudáveis antes de um
recarregamento de configuração
começam a receber requisições sem serem obrigados a passar nesta sonda primeiro.failspassesmax_response256k.modealways — 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.udpsenddata:
ou um caminho de arquivo (absoluto ou relativo a /usr/local/angie/).644 para o arquivo,
755 para o diretório.mv),
não por edição direta.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\r\n\r\n";
}
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 servidor atingir max_fails.passes;
depois disso, max_fails também é considerado.upstream_probe_timeout (PRO)#
Variáveis Integradas#
stream_upstream suporta as seguintes variáveis integradas:$upstream_probe (PRO)#$upstream_probe_response (PRO)#