10.6.1. WEB

Описание

Health Monitor необходим для проверки доступности серверов (Workers). С учетом настроек каждого Health Monitor Вы можете создать гибкие правила проверок серверов для оперативного их выведения из балансировки и обратного включения.

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

Настройка

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

../../_images/hm_main_window.png

Для того, чтобы создать Health Monitor, нажмите на кнопку Add.

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

Для того, чтобы обновить список Health Monitor, нажмите на кнопку Refresh.

Примечание

Вы можете удалить все Health Monitor. Для этого нажмите на чекбокс напротив колонки Name, и далее на Delete

Есть несколько режимов работы Health Monitor:

TCP, UDP, ICMP

TCP

Проверка доступности осуществляется путем установления TCP-соединения между балансировщиком и сервером (Worker). Проверка считается пройденной, если:

  1. Балансировщик отправляет SYN указанному серверу,

  2. Балансировщик получает ACK от указанного сервера.

UDP

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

ICMP

Проверка доступности Worker осуществляется с помощью ICMP echo request. Проверка считается пройденной, если балансировщиком получен ICMP-reply от Worker.

Поля для всех трех режимов одинаковые. Внутри полей даются их определение:

../../_images/hm_tcp_upd_icmp.png

Поле

Описание

Name

Название Health Monitor

Mode

tcp, upd, 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

Interval

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

Response Timeout

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

Up Retries

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

Down Retries

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

Expect code

Код, который мы ожидаем в ответе от сервера. По умолчанию 200. Со списком кодов можно ознакомиться в RFC 7231#6.1

Expect body

Тело HTTP-ответа, который мы ожидаем от сервера. Например, <html><body><h1>Server1</h1></body></html>

Host

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

Port

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

Request method

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

Path

Путь. По умолчанию /. Можно опрашивать не только главную страницу WEB-сервера, но какой-то конкретный URL. Например, /checker/check.html

HTTP username

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

HTTP password

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

HTTPS

../../_images/hm_https.png

Поле

Описание

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-ответа, который мы ожидаем от сервера. Например, <html><body><h1>Server1</h1></body></html>

Host

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

Port

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

Request method

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

Path

Путь. По умолчанию, /. Можно опрашивать не только главную страницу WEB-сервера, но какой-то конкретный URL. Например, /checker/check.html

HTTP username

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

HTTP password

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

Важно

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

Script

../../_images/hm_script.png

Поле

Описание

Name

Название Health Monitor

Mode

script

Interval

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

Response Timeout

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

Up Retries

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

Down Retries

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

Script type

python или shell

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

../../_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

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

DNS port

Порт, на который будут приходить DNS-запросы. Диапазон от 1 до 65535

Compound

../../_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-Monitor

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

Bind authentication

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

Bind password

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

Search Base DN

Задать базовую точку для поиска, например, cn=users,dc=lab,dc=local. Данный параметр является обязательным.

Search request

Настройка поисковых запросов. Указывается атрибут объекта и его значение. Остальная часть пути испольуется из BaseDN, например, cn=test. Данный параметр является обязательным.

Search request matches check

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

CA certificate

Цепочка сертификатов, используемых для проверки доступности сервера по LDAPS и LDAP over TLS

Certificate

Сертификат, используемый для проверки доступности сервера по LDAPS и LDAP over TLS.

Disable SSL security check

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