WEB¶
Обзор¶
Health Monitor используется для проверки доступности Workers. На основе конфигурации каждого Health Monitor можно определить гибкие правила мониторинга доступности серверов для вывода недоступных серверов из пула балансировки или их восстановления при возобновлении работы.
Кроме стандартных режимов работы, вы можете создавать собственные скрипты проверки.
Настройка¶
В боковом меню выберите Health Monitors.
Над таблицей расположена панель действий с кнопками:
New row – добавить новую строку в таблицу для создания Health Monitor
Rollback – откатить незафиксированные изменения
Apply changes – применить внесённые изменения
Settings – настройки отображения таблицы (видимость колонок)
Чтобы создать новый Health Monitor, нажмите New row. В таблице появится новая строка, в которой необходимо заполнить поля. После заполнения нажмите Apply changes.
Чтобы удалить Health Monitor, нажмите значок корзины в строке нужного монитора, затем нажмите Apply changes.
Примечание
Имена объектов используют формат partition/name, например default/my-hm.
Колонки таблицы¶
Колонка |
Описание |
|---|---|
Name |
Имя Health Monitor в формате |
Timeout |
Время ожидания ответа от Worker (в секундах). По умолчанию – 5 секунд |
Interval |
Интервал (в секундах) между попытками проверки. По умолчанию – 5 секунд |
Down retries |
Количество неуспешных проверок, после которых Worker считается недоступным. По умолчанию – 2 |
Up retries |
Количество успешных проверок, после которых Worker считается доступным. По умолчанию – 1 |
Type |
Режим работы Health Monitor (выпадающий список) |
Режимы 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-ответа, например, |
Host |
Имя хоста в HTTP-заголовке, например, |
Port |
Порт хоста в HTTP-заголовке. Диапазон: 1–65535 |
Request method |
Метод HTTP-запроса согласно RFC 7231#4.3. Поддерживаемые методы: GET, POST, HEAD |
Path |
Путь. По умолчанию – |
HTTP username |
Логин для базовой HTTP-аутентификации |
HTTP password |
Пароль для базовой HTTP-аутентификации |
HTTPS¶
Дополнительные параметры для HTTPS Health Monitor:
Поле |
Описание |
|---|---|
CA certificate |
Цепочка сертификатов для проверки доступности сервера по HTTPS |
Certificate |
Сертификат для проверки доступности сервера по HTTPS |
Disable SSL security check |
Отключить проверку самоподписанных сертификатов |
Expect code |
HTTP-код состояния, ожидаемый от сервера. По умолчанию – 200. Подробнее см. RFC 7231#6.1 |
Expect body |
Ожидаемое тело HTTP-ответа, например, |
Host |
Имя хоста в HTTP-заголовке, например, |
Port |
Порт хоста в HTTP-заголовке. Диапазон: 1–65535 |
Request method |
Метод HTTP-запроса согласно RFC 7231#4.3. Поддерживаемые методы: GET, POST, HEAD |
Path |
Путь. По умолчанию – |
HTTP username |
Логин для базовой HTTP-аутентификации |
HTTP password |
Пароль для базовой HTTP-аутентификации |
Важно
При использовании базовой HTTP-аутентификации логин и пароль передаются в открытом виде. При использовании проверок доступности по HTTPS пакет, содержащий эти данные, шифруется с помощью TLS.
Скрипт¶
Поле |
Описание |
|---|---|
Script type |
|
Script code |
Пользовательский скрипт, который выполняется в бесконечном цикле |
Этот режим 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:
Поле |
Описание |
|---|---|
DNS domain query |
Доменное имя для опроса |
DNS reply code |
Код ответа DNS-сервера. Принимает значения в диапазоне от 0 до 5. По умолчанию – 0 |
DNS transport protocol |
Транспортный протокол для запросов к DNS-серверу (UDP или TCP). По умолчанию – UDP |
DNS port |
Порт для отправки DNS-запросов. Диапазон: 1–65535 |
Составной¶
Дополнительные параметры для составного (compound) Health Monitor:
Поле |
Описание |
|---|---|
Compound: list of Health Monitors |
Список Health Monitor, которые будут использоваться |
Compound mode |
Режим сравнения. |
LDAP(S)¶
Дополнительные параметры для LDAP Health Monitor:
Поле |
Описание |
|---|---|
LDAP mode |
Протокол для отправки запросов:
|
LDAP port |
Порт для подключения. Диапазон: 1–65535 |
Bind DN |
Идентификатор для привязки к LDAP-серверу. FQDN + корневой контейнер, например, |
Bind authentication |
Метод аутентификации. При |
Bind password |
Пароль для доступа к защищённому каталогу LDAP |
Search Base DN |
Базовое DN для операций поиска, например, |
Search request |
Фильтр поиска: укажите атрибут объекта и его значение. Остальная часть DN берётся из Base DN, например, |
Search request matches check |
По умолчанию успешное выполнение поискового запроса считается успешной проверкой состояния. Если необходимо проверить результат поиска (т.е. наличие объекта), включите эту опцию |
CA certificate |
Цепочка сертификатов для проверки доступности сервера по LDAPS и LDAP over TLS |
Certificate |
Сертификат для проверки доступности сервера по LDAPS и LDAP over TLS |
Disable SSL security check |
Отключить проверку самоподписанных сертификатов |