Upstream Probe#
Реализует активные проверки работоспособности (health probes)
для Upstream. Добавлено в версии 1.2.0: PRO По умолчанию — location Задает активную проверку работоспособности серверов тех upstream,
которые указаны в директивах proxy_pass, uwsgi_pass и т. д.
в том же контексте Сервер проходит проверку, если запрос к нему успешно выполняется с учетом всех
параметров самой директивы Чтобы использовать проверки,
в апстриме необходима зона разделяемой памяти (zone).
Для одного апстрима можно определить несколько проверок. Могут быть заданы следующие параметры: Обязательное имя проверки. URI запроса, который добавляется к аргументу proxy_pass,
uwsgi_pass и т. д. По умолчанию — Альтернативный порт для запроса. Интервал между проверками. По умолчанию — HTTP-метод запроса проверки. По умолчанию — Проверяемое при запросе условие; задается строкой с переменными.
Если результат подстановки переменных — Если параметр задан, то изначально состояние сервера подлежит уточнению
и клиентские запросы не передаются ему, пока проверка не будет пройдена. Установка этого параметра требует сначала включить Число последовательных неуспешных запросов,
при котором проверка считает сервер неработающим.
По умолчанию — 1. Число последовательных успешных запросов,
при котором проверка считает сервер работающим.
По умолчанию — 1. Максимальный объем памяти для тела ответа.
По умолчанию — Режим проверки в зависимости от работоспособности серверов: По умолчанию — Пример: Детали работы: Изначально сервер не получает клиентские запросы,
пока не пройдет все заданные для него проверки с параметром Сервер считается неработающим и не получает клиентские запросы,
если какая-либо заданная для него проверка достигает своего порога Чтобы неработающий сервер снова мог считаться работающим,
все заданные для него проверки должны достичь своего порога Модуль Имя активной сейчас проверки upstream_probe. Тело ответа от сервера,
полученного при проверке upstream_probe.
Его размер ограничен параметром Пример конфигурации#
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)#
upstream_probe имя [uri=адрес] [port=число] [interval=время] [method=метод] [test=условие] [essential [persistent]] [fails=число] [passes=число] [max_body=размер] [mode=always | idle | onfail];location, где находится директива upstream_probe.
При этом Angie регулярно выполняет запросы согласно указанным параметрам
к каждому серверу в составе апстрима.upstream_probe и всех параметров, влияющих на
использование апстримов тем контекстом location, где она задана. Это
касается в том числе директив proxy_next_upstream,
uwsgi_next_upstream и пр., а также proxy_set_header и т. д.имяuri/.portinterval5s.methodGET.test"" или "0",
проверка не пройдена.essentialpersistentessential;
серверы с persistent, работавшие до
перезагрузки конфигурации,
начинают получать запросы без необходимости сначала пройти эту проверку.failspassesmax_body256k.modealways — серверы проверяются независимо от состояния;idle — проверяются неработающие серверы, а также серверы,
где с последнего клиентского запроса прошло время interval.onfail — проверяются серверы только в неработающем состоянии.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
(пропуская помеченные как persistent, если конфигурация перезагружена
и до этого сервер считался работающим).
Если таких проверок нет, сервер считается работающим.fails
или сам сервер достигает порога max_fails.passes;
после этого учитывается порог max_fails.Встроенные переменные#
http_upstream_probe поддерживает следующие встроенные переменные:$upstream_probe (PRO)#$upstream_probe_body (PRO)#max_body.