10.6.1. WEB¶
Описание¶
Health Monitor необходим для проверки доступности серверов (Workers). С учетом настроек каждого Health Monitor Вы можете создать гибкие правила проверок серверов для оперативного их выведения из балансировки и обратного включения.
Кроме стандартных режимов работы есть возможность создания собственных скриптов проверки.
Настройка¶
Перейдите в Traffic Management -> Health Monitoring.

Для того, чтобы создать Health Monitor, нажмите на кнопку Add.
Для того, чтобы удалить Health Monitor, выберите нужный, нажав на чекбокс напротив имени Health Monitor, далее нажмите на кнопку Delete или в колонке Actions на иконку корзины.
Для того, чтобы обновить список Health Monitor, нажмите на кнопку Refresh.
Примечание
Вы можете удалить все Health Monitor. Для этого нажмите на чекбокс напротив колонки Name, и далее на Delete
Есть несколько режимов работы Health Monitor:
TCP, UDP, ICMP¶
- TCP
Проверка доступности осуществляется путем установления TCP-соединения между балансировщиком и сервером (Worker). Проверка считается пройденной, если:
Балансировщик отправляет SYN указанному серверу,
Балансировщик получает ACK от указанного сервера.
- UDP
Проверка доступности осуществляется с помощью отправки UDP-запроса на IP:port сервера. Проверка считается пройденной, если health checker получил успешный ответ, либо не получил ничего. Если получена ошибка, то Worker выводится из балансировки.
- ICMP
Проверка доступности Worker осуществляется с помощью ICMP echo request. Проверка считается пройденной, если балансировщиком получен ICMP-reply от Worker.
Поля для всех трех режимов одинаковые. Внутри полей даются их определение:

Поле |
Описание |
---|---|
Name |
Название Health Monitor |
Mode |
tcp, upd, icmp |
Interval |
Интервал (в секундах) между попытками проверки. По умолчанию 5 секунд |
Response Timeout |
Время ожидания ответа от Worker в секундах. По умолчанию 5 секунд |
Up Retries |
Количество успешных проверок, после которых Worker считается доступным. По умолчанию 1 |
Down Retries |
Количество неуспешных проверок, после которых Worker считается недоступным. По умолчанию 2 |
HTTP¶

Поле |
Описание |
---|---|
Name |
Название Health Monitor |
Mode |
http |
Interval |
Интервал (в секундах) между попытками проверки. По умолчанию 5 секунд |
Response Timeout |
Время ожидания ответа от Worker в секундах. По умолчанию 5 секунд |
Up Retries |
Количество успешных проверок, после которых Worker считается доступным. По умолчанию 1 |
Down Retries |
Количество неуспешных проверок, после которых Worker считается недоступным. По умолчанию 2 |
Expect code |
Код, который мы ожидаем в ответе от сервера. По умолчанию 200. Со списком кодов можно ознакомиться в RFC 7231#6.1 |
Expect body |
Тело HTTP-ответа, который мы ожидаем от сервера. Например,
|
Host |
Название хоста в HTTP-заголовке. Например, |
Port |
Порт хоста в HTTP-заголовке. Диапазон от 1 до 65534 |
Request method |
Метод HTTP-запроса согласно RFC 7231#4.3. Доступны методы GET, POST и HEAD |
Path |
Путь. По умолчанию |
HTTP username |
Логин для базовой HTTP аутентификации |
HTTP password |
Пароль для базовой HTTP аутентификации |
HTTPS¶

Поле |
Описание |
---|---|
Name |
Название Health Monitor |
Mode |
https |
Interval |
Интервал (в секундах) между попытками проверки. По умолчанию 5 секунд |
Response Timeout |
Время ожидания ответа от Worker в секундах. По умолчанию 5 секунд |
Up Retries |
Количество успешных проверок, после которых Worker считается доступным. По умолчанию 1 |
Down Retries |
Количество неуспешных проверок, после которых Worker считается недоступным. По умолчанию 2 |
CA certificate |
Цепочка сертификатов, используемых для проверки доступности сервера по HTTPS |
Certificate |
Сертификат, используемый для проверки доступности сервера по HTTPS. |
Disable SSL security check |
Отключить проверку на использование самоподписанных сертификатов |
Expect code |
Код, который мы ожидаем в ответе от сервера. По умолчанию 200. Со списком кодов можно ознакомиться в RFC 7231#6.1 |
Expect body |
Тело HTTP-ответа, который мы ожидаем от сервера. Например,
|
Host |
Название хоста в HTTP-заголовке. Например, |
Port |
Порт хоста в HTTP-заголовке. Диапазон от 1 до 65534 |
Request method |
Метод HTTP-запроса согласно RFC 7231#4.3. Доступны методы GET, POST и HEAD |
Path |
Путь. По умолчанию, |
HTTP username |
Логин для базовой HTTP аутентификации |
HTTP password |
Пароль для базовой HTTP аутентификации |
Важно
При базовой HTTP аутентификации логин и пароль передаются в открытом виде. При способе проверки https сам пакет, в котором передаются данные, шифруется TLS.
Script¶

Поле |
Описание |
---|---|
Name |
Название Health Monitor |
Mode |
script |
Interval |
Интервал (в секундах) между попытками проверки. По умолчанию 5 секунд |
Response Timeout |
Время ожидания ответа от Worker в секундах. По умолчанию 5 секунд |
Up Retries |
Количество успешных проверок, после которых Worker считается доступным. По умолчанию 1 |
Down Retries |
Количество неуспешных проверок, после которых Worker считается недоступным. По умолчанию 2 |
Script type |
|
Script code |
Пользовательская часть кода, которая будет выполняться в бесконечном цикле |
Реализация этого режима Health Monitor представляет собой шаблон уже готового скрипта, в который при создании Worker (сервера) добавляется пользовательская часть скрипта, а также атрибуты конкретного сервера в качестве констант:
TG
- Target-группаIP
- IP-адрес сервераPORT
- Порт сервераINTERVAL
- Интервал (в секундах) между попытками проверкиTIMEOUT
- Время ожидания ответа от Worker в секундах
Константы могут использоваться в пользовательской части скрипта.
От пользователя требуется написать часть скрипта, которая далее будет выполняться в бесконечном цикле.
Скрипт может быть написан для работы в двух режимах:
Успех/неуспех проверки воркера¶
Пользователю не требуется реализовывать часть с логикой по изменению статуса Worker и реакцию на срабатывание пороговых значений. Эта логика остается на стороне подсистемы Health Monitoring.
Пользователю необходимо в своем скрипте написать функцию (имя функции может быть любым), которая будет возвращать несколько возможных значений, которые указывают на состояние сервера:
-1 - успешная проверка;
-2 - неуспешная проверка;
Любое другое отрицательное значение, либо буквенные символы - ошибка в ходе запуска проверки.
Пример Script code на 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
Пример Script code на shell
userscript() {
if ping -c 1 -i $TIMEOUT $IP &> /dev/null
then
status=-1
else
status=-2
fi
echo $status
}
Возврат веса Worker¶
В скрипте должен возвращаться вес Worker, который должен быть подсчитан самостоятельно, либо получен из внешнего источника (например, от Worker). Возвращаемое значение должно равняться весу Worker. Вес 0 означает переход Worker в нерабочее состояние.
Пример Script code на 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
Пример Script code на shell
userscript() {
if ping -c 1 -i $TIMEOUT $IP &> /dev/null
then
weight=0
else
weight=200
fi
return $weight
}
DNS¶

Поле |
Описание |
---|---|
Name |
Название Health Monitor |
Mode |
dns |
Interval |
Интервал (в секундах) между попытками проверки. По умолчанию, 5 секунд |
Response Timeout |
Время ожидания ответа от Worker в секундах. По умолчанию 5 секунд |
Up Retries |
Количество успешных проверок, после которых Worker считается доступным. По умолчанию 1 |
Down Retries |
Количество неуспешных проверок, после которых Worker считается недоступным. По умолчанию 2 |
DNS domain query |
Название домена для опроса |
DNS reply code |
Код ответа DNS-сервера. Можно указать диапазон от 0 до 5. По умолчанию 0 |
DNS transport protocol |
Транспортный протокол (UDP или TCP), использующийся для проверки DNS-сервера. По умолчанию UDP |
DNS port |
Порт, на который будут приходить DNS-запросы. Диапазон от 1 до 65535 |
Compound¶

Поле |
Описание |
---|---|
Name |
Название Health Monitor |
Mode |
compound |
Interval |
Интервал (в секундах) между попытками проверки. По умолчанию 5 секунд |
Response Timeout |
Время ожидания ответа от Worker в секундах. По умолчанию 5 секунд |
Up Retries |
Количество успешных проверок, после которых Worker считается доступным. По умолчанию 1 |
Down Retries |
Количество неуспешных проверок, после которых Worker считается недоступным. По умолчанию 2 |
Compound: list of Health-Monitor |
Список Health Monitor, которые будут использоваться |
Compound mode |
Режим сравнения. |
LDAP(S)¶

Поле |
Описание |
---|---|
Name |
Название Health Monitor |
Mode |
ldap |
Interval |
Интервал (в секундах) между попытками проверки. По умолчанию 5 секунд |
Response Timeout |
Время ожидания ответа от Worker в секундах. По умолчанию 5 секунд |
Up Retries |
Количество успешных проверок, после которых Worker считается доступным. По умолчанию 1 |
Down Retries |
Количество неуспешных проверок, после которых Worker считается недоступным. По умолчанию 2 |
LDAP mode |
Использовать для отправки пакетов протокол: - LDAP - LDAPS (enable-ldaps). Health Monitor сразу использует подключение по TLS на другой порт TCP 636 - LDAP over TLS (start-tls). Health Monitor вначале начинает работать по LDAP на стандартном порту TCP 389, далее пытается переключиться на TLS (порт не меняется). Если сервер позволяет это сделать, то открывается TLS сессия, если нет, то в зависимости от настроек сервера, либо продолжается работа по LDAP, либо соединение разрывается. |
LDAP port |
Порт для подключения. Можно задать в диапазоне от 1 до 65535 |
Bind DN |
Задать идентификатор для привязки к LDAP-серверу. Соответствует FQDN + root контейнер, например
|
Bind authentication |
Метод аутентификации. При методе simple операция bind шлет пакеты в открытом виде. При методе md5 пароль шифруется хэш-функцией md5 |
Bind password |
Пароль для доступа к защищенному каталогу LDAP |
Search Base DN |
Задать базовую точку для поиска, например, |
Search request |
Настройка поисковых запросов. Указывается атрибут объекта и его значение. Остальная часть пути
испольуется из BaseDN, например, |
Search request matches check |
По умолчанию, успешный статус выполнение запроса на поиск является успешной проверкой health checker. Если требуется проверять результат поиска (наличие объекта), то используется данная опция |
CA certificate |
Цепочка сертификатов, используемых для проверки доступности сервера по LDAPS и LDAP over TLS |
Certificate |
Сертификат, используемый для проверки доступности сервера по LDAPS и LDAP over TLS. |
Disable SSL security check |
Отключить проверку на использование самоподписанных сертификатов |