WEB

Обзор

Health Monitor используется для проверки доступности Workers. На основе конфигурации каждого Health Monitor можно определить гибкие правила мониторинга доступности серверов для вывода недоступных серверов из пула балансировки или их восстановления при возобновлении работы.

Кроме стандартных режимов работы, вы можете создавать собственные скрипты проверки.

Настройка

Перейдите в Traffic Management -> Health Monitor.

../../_images/hm_main_window.png

Чтобы создать новый Health Monitor, нажмите кнопку Add.

Чтобы удалить Health Monitor, нажмите чекбокс напротив его имени, а затем нажмите кнопку Delete или значок корзины в столбце Actions.

Чтобы обновить список Health Monitor, нажмите кнопку Refresh.

Примечание

Чтобы удалить все Health Monitor, нажмите чекбокс рядом с колонкой Name, а затем нажмите Delete.

Режимы Health Monitor

Примечание

Настройки интервалов общие для всех режимов и описаны ниже.

TCP, UDP, ICMP

TCP

Доступность проверяется путём установления TCP-соединения между ADC и IP:port Worker. Проверка считается успешной, если:

  1. ADC отправляет SYN указанному Worker,

  2. ADC получает ACK от указанного Worker.

UDP

Доступность проверяется путём отправки UDP-запроса на IP:port Worker. Проверка считается успешной, если Health Monitor получает корректный ответ или не получает никакого ответа. Если получен ошибочный ответ, Worker удаляется из пула балансировки нагрузки.

ICMP

Доступность Worker проверяется с использованием ICMP-запросов эхо. Проверка считается успешной, если ADC получает ICMP-ответ от IP-адреса Worker.

Поля для всех трёх режимов одинаковые:

../../_images/hm_tcp_upd_icmp.png

Поле

Описание

Name

Имя Health Monitor

Mode

tcp, udp, icmp

Interval

Интервал (в секундах) между попытками проверки. По умолчанию — 5 секунд

Response Timeout

Время ожидания ответа от Worker в секундах. По умолчанию — 5 секунд

Up Retries

Количество успешных проверок, после которых Worker считается доступным. По умолчанию — 1

Down Retries

Количество неуспешных проверок, после которых Worker считается недоступным. По умолчанию — 2

HTTP

../../_images/hm_http.png

Поле

Описание

Name

Имя Health Monitor

Mode

http

Expect code

HTTP-код состояния, ожидаемый от сервера. По умолчанию — 200. Подробнее см. RFC 7231#6.1

Expect body

Ожидаемое тело HTTP-ответа, например, <html><body><h1>Server1</h1></body></html>

Host

Имя хоста в HTTP-заголовке, например, trafficsoft.ru

Port

Порт хоста в HTTP-заголовке. Диапазон: 1–65535

Request method

Метод HTTP-запроса согласно RFC 7231#4.3. Поддерживаемые методы: GET, POST, HEAD

Path

Путь. По умолчанию — /. Можно указать URL конкретной страницы, например, /checker/check.html

HTTP username

Логин для базовой HTTP-аутентификации

HTTP password

Пароль для базовой HTTP-аутентификации

HTTPS

../../_images/hm_https.png

Поле

Описание

Name

Имя Health Monitor

Mode

https

CA certificate

Цепочка сертификатов для проверки доступности сервера по HTTPS

Certificate

Сертификат для проверки доступности сервера по HTTPS

Disable SSL security check

Отключить проверку самоподписанных сертификатов

Expect code

HTTP-код состояния, ожидаемый от сервера. По умолчанию — 200. Подробнее см. RFC 7231#6.1

Expect body

Ожидаемое тело HTTP-ответа, например, <html><body><h1>Server1</h1></body></html>

Host

Имя хоста в HTTP-заголовке, например, trafficsoft.ru. Если требуется Server Name Indication (SNI), значение, указанное в поле Host, также используется как SNI-значение для рукопожатия TLS

Port

Порт хоста в HTTP-заголовке. Диапазон: 1–65535

Request method

Метод HTTP-запроса согласно RFC 7231#4.3. Поддерживаемые методы: GET, POST, HEAD

Path

Путь. По умолчанию — /. Можно указать URL конкретной страницы, например, /checker/check.html

HTTP username

Логин для базовой HTTP-аутентификации

HTTP password

Пароль для базовой HTTP-аутентификации

Важно

При использовании базовой HTTP-аутентификации логин и пароль передаются в открытом виде. При использовании проверок доступности по HTTPS пакет, содержащий эти данные, шифруется с помощью TLS.

Скрипт

../../_images/hm_script.png

Поле

Описание

Name

Имя Health Monitor

Mode

script

Script type

python или shell

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

../../_images/hm_dns.png

Поле

Описание

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

Транспортный протокол для запросов к DNS-серверу (UDP или TCP). По умолчанию — UDP

DNS port

Порт для отправки DNS-запросов. Диапазон: 1–65535

Составной

../../_images/hm_compound.png

Поле

Описание

Name

Имя Health Monitor

Mode

compound

Interval

Интервал (в секундах) между попытками проверки. По умолчанию — 5 секунд

Response Timeout

Таймаут ожидания ответа от Worker (в секундах). По умолчанию — 5 секунд

Up Retries

Количество успешных проверок, после которых Worker считается доступным. По умолчанию — 1

Down Retries

Количество неуспешных проверок, после которых Worker считается недоступным. По умолчанию — 2

Compound: list of Health Monitors

Список Health Monitor, которые будут использоваться

Compound mode

Режим сравнения. And — все Health Monitor из списка должны успешно пройти проверку. Or — хотя бы один Health Monitor из списка должен успешно пройти проверку. Если не указано, используется And

LDAP(S)

../../_images/hm_ldap.png

Поле

Описание

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 + корневой контейнер, например, cn=admin,cn=users,dc=lab,dc=local

Bind authentication

Метод аутентификации. При simple запрос привязки отправляет данные в открытом виде. При md5 пароль хешируется с использованием MD5

Bind password

Пароль для доступа к защищённому каталогу LDAP

Search Base DN

Базовое DN для операций поиска, например, cn=users,dc=lab,dc=local. Этот параметр обязателен

Search request

Фильтр поиска: укажите атрибут объекта и его значение. Остальная часть DN берётся из Base DN, например, cn=test. Этот параметр обязателен

Search request matches check

По умолчанию успешное выполнение поискового запроса считается успешной проверкой состояния. Если необходимо проверить результат поиска (т.е. наличие объекта), включите эту опцию

CA certificate

Цепочка сертификатов для проверки доступности сервера по LDAPS и LDAP over TLS

Certificate

Сертификат для проверки доступности сервера по LDAPS и LDAP over TLS

Disable SSL security check

Отключить проверку самоподписанных сертификатов