WEB — Health Monitor¶
Обзор¶
Health Monitor используется для проверки доступности Workers. На основе конфигурации каждого Health Monitor можно определить гибкие правила мониторинга доступности серверов для вывода недоступных серверов из пула балансировки или их восстановления при возобновлении работы.
Кроме стандартных режимов работы, вы можете создавать собственные скрипты проверки.
Настройка¶
В боковом меню слева разверните раздел Balancer и выберите Health Monitors.
Над таблицей расположена панель действий с кнопками:
New – добавить новую строку в таблицу для создания Health Monitor
Rollback – откатить незафиксированные изменения
Apply changes – применить внесённые изменения
Settings – настройки отображения таблицы (видимость колонок)
Чтобы создать новый Health Monitor, нажмите New. В таблице появится новая строка. Заполнить поля можно прямо в строке таблицы или нажать
и ввести параметры в боковой панели Edit Row. Поля Name и Type обязательны для заполнения. Для применения изменений нажмите Apply changes.
Чтобы удалить Health Monitor, нажмите
в строке нужного монитора, затем нажмите Apply changes.
Примечание
Имена объектов используют формат partition/name, например default/my-hm. Указание партиции в названии HM обязательно. Чтобы выбрать нужную партицию, щелкните по полю Name. В боком меню Edit Row название партиции необходимо вводить вручную.
Колонки таблицы¶
Режимы Health Monitor¶
Примечание
Настройки интервалов (Timeout, Interval, Down retries, Up retries) общие для всех режимов.
TCP, UDP, ICMP¶
- TCP
Доступность проверяется путём установления TCP-соединения между ADC и IP:port Worker. Проверка считается успешной, если:
ADC отправляет SYN указанному Worker,
ADC получает ACK от указанного Worker.
- UDP
Доступность проверяется путём отправки UDP-запроса на IP:port Worker. Проверка считается успешной, если Health Monitor получает корректный ответ или не получает никакого ответа. Если получен ошибочный ответ, Worker удаляется из пула балансировки нагрузки.
- ICMP
Доступность Worker проверяется с использованием ICMP-запросов эхо. Проверка считается успешной, если ADC получает ICMP-ответ от IP-адреса Worker.
HTTP¶
Дополнительные параметры для HTTP Health Monitor:
Поле |
Описание |
|---|---|
Expect code |
HTTP-код состояния, ожидаемый от сервера. По умолчанию – 200. Подробнее см. RFC 7231#6.1 |
Expect body |
Ожидаемое тело HTTP-ответа, например, |
Expect body file |
Ожидаемое тело HTTP-ответа, взятое из файла, хранящегося в файловом хранилище |
Host |
Имя хоста в HTTP-заголовке, например, |
Port |
Порт хоста в HTTP-заголовке. Диапазон: 1-65535 |
Request method |
Метод HTTP-запроса согласно RFC 7231#4.3. Поддерживаемые методы: GET, POST, HEAD |
Path |
Путь. По умолчанию – |
Username |
Логин для базовой HTTP-аутентификации |
Password |
Пароль для базовой HTTP-аутентификации |
HTTPS¶
Дополнительные параметры для HTTPS Health Monitor:
Поле |
Описание |
|---|---|
Expect code |
HTTP-код состояния, ожидаемый от сервера. По умолчанию – 200. Подробнее см. RFC 7231#6.1 |
Expect body |
Ожидаемое тело HTTP-ответа, например, |
Expect body file |
Ожидаемое тело HTTP-ответа, взятое из файла, хранящегося в файловом хранилище |
Host |
Имя хоста в HTTP-заголовке, например, |
Port |
Порт хоста в HTTP-заголовке. Диапазон: 1-65535 |
Request method |
Метод HTTP-запроса согласно RFC 7231#4.3. Поддерживаемые методы: GET, POST, HEAD |
Path |
Путь. По умолчанию – |
Username |
Логин для HTTP-аутентификации |
Password |
Пароль для HTTP-аутентификации |
CA certificate |
Цепочка сертификатов для проверки доступности сервера по HTTPS |
Certificate |
Сертификат для проверки доступности сервера по HTTPS |
Disable security check |
Отключить проверку самоподписанных сертификатов |
Важно
При использовании базовой HTTP-аутентификации логин и пароль передаются в открытом виде. При использовании проверок доступности по HTTPS пакет, содержащий эти данные, шифруется с помощью TLS.
Script¶
Поле |
Описание |
|---|---|
Type |
|
Value |
Пользовательский скрипт, который выполняется в бесконечном цикле |
File |
Загрузить скрипт из файлового хранилища |
Этот режим Health Monitor реализован в виде шаблона скрипта. При создании Worker (сервера) его специфические атрибуты и часть скрипта, определённая пользователем, добавляются к базовому шаблону.
Следующие константы доступны в скрипте:
TG– Target-группаIP– IP-адрес сервераPORT– Порт сервераINTERVAL– Интервал (в секундах) между проверкамиTIMEOUT– Время ожидания ответа от Worker
Эти константы можно использовать в пользовательском скрипте.
Пользователь должен определить часть скрипта, которая выполняется в бесконечном цикле. Скрипт может работать в одном из двух режимов:
Проверка статуса Worker (успех/неудача)¶
Вам не требуется реализовывать логику изменения статуса Worker или обработки порогов повторных попыток. Подсистема Health Monitoring обрабатывает эту логику.
Вы должны определить функцию (любое имя допустимо), которая возвращает одно из следующих значений для обозначения состояния Worker:
-1– Успешная проверка-2– Неуспешная проверкаЛюбое другое отрицательное число или нечисловое значение – ошибка скрипта
Пример скрипта на Python
from subprocess import DEVNULL, STDOUT, check_call
def userscript() -> int:
response = check_call(["ping" + f" -c 1 -W {TIMEOUT} {IP}"], shell=True, stdout=DEVNULL, stderr=STDOUT)
if response == 0:
return -1
return -2
Пример скрипта на Shell
userscript() {
if ping -c 1 -i $TIMEOUT $IP &> /dev/null
then
status=-1
else
status=-2
fi
echo $status
}
Возврат веса Worker¶
В этом режиме скрипт должен возвращать вес Worker. Вес может быть рассчитан внутри скрипта или получен из внешнего источника (например, от самого Worker). Возвращаемое значение 0 означает, что Worker считается недоступным.
Пример скрипта на Python
from subprocess import DEVNULL, STDOUT, check_call
def userscript() -> int:
response = check_call(["ping" + f" -c 1 -W {TIMEOUT} {IP}"], shell=True, stdout=DEVNULL, stderr=STDOUT)
if response == 0:
return 200
return 0
Пример скрипта на Shell
userscript() {
if ping -c 1 -i $TIMEOUT $IP &> /dev/null
then
weight=200
else
weight=0
fi
return $weight
}
DNS¶
Дополнительные параметры для DNS Health Monitor:
Поле |
Описание |
|---|---|
Domain |
Доменное имя для опроса |
Reply code |
Код ответа DNS-сервера. Принимает значения в диапазоне от 0 до 5. По умолчанию – 0 |
Mode |
Транспортный протокол для запросов к DNS-серверу (UDP или TCP). По умолчанию – UDP |
Port |
Порт для отправки DNS-запросов. Диапазон: 1-65535 |
Compound¶
Дополнительные параметры для составного (compound) Health Monitor:
Поле |
Описание |
|---|---|
Health Monitors |
Список Health Monitor, которые будут использоваться |
Mode |
Режим сравнения. |
LDAP(S)¶
Дополнительные параметры для LDAP Health Monitor:
Поле |
Описание |
|---|---|
Mode |
Протокол для отправки запросов:
|
Port |
Порт для подключения. Диапазон: 1-65535 |
Bind DN |
Идентификатор для привязки к LDAP-серверу. FQDN + корневой контейнер, например, |
Auth mode |
Метод аутентификации. При |
Password |
Пароль для доступа к защищённому каталогу LDAP |
Base DN |
Базовое DN для операций поиска, например, |
Request |
Фильтр поиска: укажите атрибут объекта и его значение. Остальная часть DN берётся из Base DN, например, |
Search request matches check |
По умолчанию успешное выполнение поискового запроса считается успешной проверкой состояния. Если необходимо проверить результат поиска (т.е. наличие объекта), включите эту опцию |
CA certificate |
Цепочка сертификатов для проверки доступности сервера по LDAPS и LDAP over TLS |
Certificate |
Сертификат для проверки доступности сервера по LDAPS и LDAP over TLS |
Disable security check |
Отключить проверку самоподписанных сертификатов |