
У HAProxy очень хорошая страница статуса, показывающая мне, какие веб-серверы работают, а какие нет на бэкэнде. Я пытаюсь отладить некоторые проблемы и мне нужно знать, какие серверы nginx считает работающими, а какие нет. Есть ли веб-страница или что-то еще, что можно настроить для nginx, чтобы я мог просто нажать на URL, когда мне нужна такая информация?
спасибо, Дин
решение1
Вот несколько модулей, которые вам, возможно, стоит изучить:
- https://github.com/anomalizer/ngx_upstream_status(отображает статус, как его видит работник, обслуживающий страницу статуса)
- https://github.com/yaoweibin/nginx_upstream_check_module(активно проверяет состояние вышестоящих серверов)
- https://github.com/cep21/healthcheck_nginx_upstreams(аналогично предыдущему, но поддерживает только HTTP 1.0 для проверки статуса)
- http://nginx.localdomain.pl/wiki/UpstreamFair(балансировщик нагрузки со встроенной страницей состояния)
- ...
решение2
К сожалению, изначально это практически невозможно. В стандартной комплектации Nginx не предусмотрено глобальное состояние для upstream-процесса, поэтому эта информация является локальной для каждого рабочего процесса.
Взгляните на этот модуль, он может быть вам полезен.http://wiki.nginx.org/NginxHttpHealthcheckModule
решение3
Хоть и год опоздал с ответом, но модуль ustats для nginx выглядит весьма впечатляюще:
https://code.google.com/p/ustats/
перемещено на githubhttps://github.com/0xc0dec/ustats
К сожалению, похоже, что после версии 1.2 эта функция не поддерживается, но может работать и дальше.
Найдена поддерживаемая вилкаhttps://github.com/nginx-modules/ngx_ustats_module
Патч 1.7.2 по-прежнему отлично работает с 1.7.4
решение4
Я искал простую проверку работоспособности, которую предоставляет Amazon ELB. Возможность добавлять экземпляры в LB, иметь механизм проверки работоспособности для удаления неисправных экземпляров.
Итак, вот какие у меня были варианты.
- https://github.com/yaoweibin/nginx_upstream_check_module
- https://github.com/openresty/lua-resty-upstream-healthcheck
Nginx также предоставляет пассивную проверку работоспособности бесплатно. Он делает именно то, что я хочу, никакого причудливого мониторинга, никаких весов, никакой причудливой проверки маршрута. Он пингует сервер и проверяет ответ статуса 200. Он делает это по принципу циклического перебора.
Параметр fail_timeout устанавливает время, в течение которого должно произойти указанное количество неудачных попыток и сервер все еще будет считаться недоступным. Другими словами, сервер недоступен в течение интервала, установленного fail_timeout.
Параметр max_fails задает количество неудачных попыток, которые должны произойти в течение указанного времени, чтобы сервер все еще считался недоступным.
Например:
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; }