
O HAProxy tem uma página de status muito boa que mostra quais servidores da web estão ativos e quais estão inativos no backend. Estou tentando depurar alguns problemas e preciso saber quais servidores o nginx considera que estão ativos e quais estão inativos. Existe uma página da web ou algo que você possa configurar para o nginx para que eu possa acessar um URL quando precisar desse tipo de informação?
obrigado, Dean
Responder1
Existem alguns módulos que você pode querer verificar:
- https://github.com/anomalizer/ngx_upstream_status(exibe o status visto pelo trabalhador que atende a página de status)
- https://github.com/yaoweibin/nginx_upstream_check_module(verifica proativamente o status dos servidores upstream)
- https://github.com/cep21/healthcheck_nginx_upstreams(semelhante ao anterior, mas suporta apenas HTTP 1.0 para verificações de status)
- http://nginx.localdomain.pl/wiki/UpstreamFair(balanceador de carga com página de status integrada)
- ...
Responder2
Infelizmente, isso é quase impossível fora da caixa. vanila nginx não possui estado global para upstream por design, portanto, essas informações são locais para cada processo de trabalho.
Dê uma olhada neste módulo que parece ser útil para vocêhttp://wiki.nginx.org/NginxHttpHealthcheckModule
Responder3
Esta resposta está com um ano de atraso, mas o módulo ustats para nginx parece bastante impressionante:
https://code.google.com/p/ustats/
mudou para o githubhttps://github.com/0xc0dec/ustats
Infelizmente não parece mantido após 1.2, mas ainda pode funcionar.
Encontrei um garfo mantidohttps://github.com/nginx-modules/ngx_ustats_module
O patch 1.7.2 ainda funciona perfeitamente contra 1.7.4
Responder4
Eu estava procurando uma verificação de integridade simples fornecida pelo Amazon ELB. Capacidade de adicionar instâncias em um LB, ter um mecanismo de verificação de integridade para remover instâncias defeituosas.
Então aqui estavam minhas opções.
- https://github.com/yaoweibin/nginx_upstream_check_module
- https://github.com/openresty/lua-resty-upstream-healthcheck
O Nginx também oferece uma verificação de integridade passiva gratuitamente. Ele faz exatamente o que eu quero, sem monitoramento sofisticado, sem pesos, sem verificação de rota sofisticada. Ele executaria ping no servidor e verificaria 200 respostas de status. Faria isso no estilo round robin.
O parâmetro fail_timeout define o tempo durante o qual o número especificado de tentativas fracassadas deve acontecer e ainda considerar o servidor indisponível. Em outras palavras, o servidor fica indisponível durante o intervalo definido por fail_timeout.
O parâmetro max_fails define o número de tentativas fracassadas que devem acontecer durante o tempo especificado para ainda considerar o servidor indisponível.
Por exemplo:
upstream search { server 192.168.215.43:9200 max_fails=3 fail_timeout=10s; server 192.168.171.66:9200 max_fails=3 fail_timeout=10s; }