{{indexmenu_n>11}} ====== FastBypass monitor ====== ''fastbypass_monitor'' (далее в документации и скрипте называется "демон") представляет собой инструмент для отслеживания и управления состоянием сетевых интерфейсов, состояние которых контролируют bypass модули по средством ping. Демон реагирует на HEARTBEAT сигналы, поступающие от DPI на определенные порты, указанные в конфигурационном файле. При не получении HEARTBEAT сигналов в соответствии с правилами из конфигурации, демон выполняет определенные действия, такие как удаление или создание IP-адресов, к которым подключены карты Bypass, а также включение или выключение определенных сетевых интерфейсов. {{ :dpi:dpi_components:fastdpi-bypass.png?900 |}} В случае если на DPI произошел сбой ПО, NPB выводит DPI из стека и NPB перебалансирует нагрузку между остальными DPI.\\ Если падает более 2 DPI узлов — вся система переходит в режим bypass.\\ Если падает линк на DPI, то NPB перебалансирует нагрузку между остальными DPI.\\ ===== Требования к оборудованию ===== ОС: OpenSwitch 2+ / Debian 9+\\ Python: 2.7.9 ===== Основные функции ===== * Отслеживание HEARTBEAT сигналов от DPI на заданных портах. * Динамическое управление IP-адресами и сетевыми интерфейсами. ===== Установка ===== - Скопировать установочный пакет ''fastbypass_monitor-X.X.XX.deb'' на хост машину. - Из директории, где находится установочный пакет, выполните команду установки: sudo dpkg -i fastbypass_monitor-X.X.XX.deb После установки демон становится доступным для управления с помощью системного менеджера (''systemctl''). Файл конфигурации доступен по пути ''/var/fastbypass_monitor/backend/.env''\\ Файл с примером полной конфигурации доступен по пути ''/var/fastbypass_monitor/backend/sample.env''\\ Логи демона сохраняются по пути ''/var/fastbypass_monitor/backend/logs/'' ===== Использование ===== После установки демон автоматически запускается и находится в состоянии работы. При перезагрузке хост-машины демон автоматически запускается после успешного запуска сервиса ''network''.\\ Управление демоном осуществляется командами системного менеджера. :!: Использование алиасов (коротких аналогов команд) возможно только в режиме sudo — перед началом использования введите команду ''sudo su -'' и пароль. ===Запуск демона:=== sudo systemctl start fastbypass_monitor Алиас: fbypass_ctl start Служба запускается в состоянии unknown, то есть не включает и не выключает bypass. После поднятия всех ресиверов и определения их состояния, система переходит в режим normal или bypass в зависимости от конфигурации и состояния ресиверов. ===Перезапуск демона:=== sudo systemctl restart fastbypass_monitor Алиас: fbypass_ctl restart ===Перезагрузка демона без остановки:=== sudo systemctl reload fastbypass_monitor Алиас: fbypass_ctl reload ===Остановка демона:=== sudo systemctl stop fastbypass_monitor Алиас: fbypass_ctl stop ===Проверка текущего статуса демона:=== sudo systemctl status fastbypass_monitor Алиас: fbypass_ctl status ===Просмотр последних строк лог-файла с обновлением в реальном времени:=== tail -f /var/fastbypass_monitor/backend/logs/fastbypass_monitor.log Алиас: fbypass_ctl tailf ===Вывод последних 100 строк лога:=== tail -n 100 /var/fastbypass_monitor/backend/logs/fastbypass_monitor.log Алиас: fbypass_ctl tail 100 ===Остановка демона с удалением IP-адресов, указанных в конфиге для bypass карт и тем самым принудительный перевод системы в состояние bypass:=== fbypass_ctl force_on ===Остановка демона с добавлением IP-адресов, указанных в конфиге для bypass карт и тем самым принудительный перевод системы в состояние normal:=== fbypass_ctl force_off ===Добавление демона в автозагрузку:=== fbypass_ctl enable ===Удаление демона из автозагрузки:=== fbypass_ctl disable Для настройки и запуска демона с новой конфигурацией необходимо отредактировать конфигурационный файл и затем выполнить перезагрузку демона или остановить и снова запустить его. Для настройки параметров работы демона, используется конфигурационный файл, расположенный по пути ''/var/fastbypass_monitor/backend/.env'' При запуске и перезагрузке, демон читает конфигурационный файл, и в случае, если он может успешно настроить указанные IP-адреса и интерфейсы, то продолжает свою работу. Однако, если часть конфигурации не прошла проверку, демон запускает только те компоненты, которые могут быть успешно настроены. В случае возникновения критической ошибки демон автоматически перезагружается. При использовании команды ''sudo systemctl reload fastbypass_monitor'' демон перечитывает конфигурацию без остановки своей работы, и останавливает работу удаленных компонентов и создает новые добавленные компоненты, указанные в конфигурации. Важно отметить, что при запуске и перезагрузке демон не управляет указанными в конфигурации интерфейсами и IP-адресами до того момента, пока не получит состояние всех listener.\\ При перезапуске демон продолжает находиться в том же состоянии, как и до перезапуска, пока не получит новое состояние от всех listener. ====Локальное и глобальное состояние. Режим Bypass==== Демон поддерживает два вида управления интерфейсами в зависимости от их состояния: **глобального** (основанного на работе всех listener) или от **локального** (связанного с конкретным listener).\\ Например, если указать список интерфейсов для управления в глобальных настройках, то их включение или отключение зависит от общего состояния демона. Это означает, что если демон не получает сигналов от достаточного количества lisner, то указанные интерфейсы отключаются. **Пример: ** LISTEN_CUBRO_IFS=<список интерфейсов> LISTEN_SHUTDOWN_CUBRO_IFS_WHEN_BYPASS=1 Также для каждого listener можно указать свой собственный список интерфейсов, который будет управляться в зависимости от состояния этого конкретного listener. **Пример:** LISTEN_CUBRO_IFS[0]=<список интерфейсов> LISTEN_SHUTDOWN_CUBRO_IFS_WHEN_BYPASS[0]=1 Если интерфейсы, указанные в ''LISTEN_CUBRO_IFS[N]'' дублируются у нескольких listener, то они переходят в bypass mode в случае если один из соответствующих listener перестает получать сигнал. Переход интерфейсов в режим normal осуществляется только если все соответствующие listener получают сигналы. В случае, если интерфейсы указаны как в локальных, так и глобальных настройках, то интерфейсы находятся в режиме bypass mode, пока соответствующий listener не начнет получать сигналы, а демон не перейдет в режим normal mode. ===== Конфигурация ===== ==== Минимальная конфигурация ==== Минимальная конфигурация для работы демона включает указание хотя бы одного интерфейса, IP-адреса и порта для приема HEARTBEAT сигналов, а также одного интерфейса и IP-адреса для подключения карты Bypass. **Пример:** # уровень логирования - сообщения об ошибках и информационные сообщения LOG_LEVEL=INFO # интерфейс для работы listener по умолчанию LISTEN_HEARTBEAT_IFS=eth0 # интерфейс для работы с картами Bypass по умолчанию BYPASS_CARD_IFS=eth0 # количество неудачных HEARTBEAT listener для перехода в режим Bypass LISTEN_HEARTBEAT_FAILED=1 # количество попыток получения HEARTBEAT сигнала по умолчанию для listener LISTEN_HEARTBEAT_ATTEMPTS=1 # время ожидания HEARTBEAT сигнала в миллисекундах по умолчанию для listener LISTEN_HEARTBEAT_TIMEOUT=3000 # IP-адрес, на котором демон ожидает HEARTBEAT сигналы LISTEN_HB_HOST[0]=192.168.1.202 # порт, на котором демон ожидает HEARTBEAT сигналы LISTEN_HB_PORT[0]=3000 # IP-адрес, на котором демон ожидает HEARTBEAT сигналы LISTEN_HB_HOST[1]=192.168.1.202 # порт, на котором демон ожидает HEARTBEAT сигналы LISTEN_HB_PORT[1]=3100 # IP-адрес карты Bypass, к которой демон будет подключен BYPASS_CARD_HOST[0]=192.168.1.211 # IP адрес карты Bypass, к которой демон будет подключен BYPASS_CARD_HOST[1]=192.168.1.212 Выше приведен пример конфигурации для получения HEARTBEAT сигналов с использованием интерфейса ''eth0'' на IP-адресе ''192.168.1.202'' и портах ''3000'' и ''3100'' Bypass карты подключены по интерфейсу ''eth0'' на IP-адреса ''192.168.1.211'' и ''192.168.1.212''. По умолчанию для всех listener установлены значения: ''LISTEN_HEARTBEAT_ATTEMPTS'' — количество попыток получения сигнала: ''1''\\ ''LISTEN_HEARTBEAT_TIMEOUT'' — время ожидания сигнала: ''3000'' миллисекунд Когда listener не получает сигнал после одной попытки в течение ''3000'' миллисекунд, он считается неудачным. Если количество неудачных слушателей равно или превышает установленный порог (''LISTEN_HEARTBEAT_FAILED''), демон переходит в режим Bypass и удаляет указанные для Bypass карт IP-адреса. При восстановлении сигналов, listener считается рабочим. Если общее количество неудачных слушателей становится меньше порога, то демон возвращается в режим NORMAL и восстанавливает указанные IP-адреса для Bypass карт. ==== Общая конфигурация ==== Приведенные ниже настройки конфигурации распространяются на всё функционирование демона в целом. Блок с настройками listener служит в качестве значений по умолчанию для тех listener, для которых не указаны соответствующие конфигурации. То же самое относится и к настройкам интерфейсов для подключения сетевых карт Bypass. Кроме того, демон предоставляет возможность подключать свои собственные команды для управления интерфейсами и IP-адресами. Это позволяет адаптировать демон под особенности сети и внедрить собственные скрипты, оптимизированные под специфические требования сетевого окружения. # уровень логирования (необязательная настройка, по умолчанию соответствует INFO): # INFO - сообщения об ошибках и информационные сообщения # DEBUG - сообщения об ошибках, информационные сообщения и сообщения отладки LOG_LEVEL= # маска сети для указанных IP адресов (необязательная настройка, по умолчанию - 32) //NETWORK_MASK=// # интерфейс по умолчанию для тех listener у которых не указано имя интерфейса для прослушивания HEARTBEAT (необязательная настройка) LISTEN_HEARTBEAT_IFS= # IP-адрес по умолчанию для тех listener у которых не указан IP-адрес для прослушивания HEARTBEAT сигналов (необязательная настройка) //LISTEN_HEARTBEAT_HOST=// # количество попыток получения HEARTBEAT сигнала по умолчанию для тех listener у которых не указана соответствующая конфигурация (необязательная настройка, по умолчанию - 3) //LISTEN_HEARTBEAT_ATTEMPTS=// # время ожидания HEARTBEAT сигнала в миллисекундах по умолчанию для тех listener у которых не указана соответствующая конфигурация (необязательная настройка, по умолчанию - 3000) //LISTEN_HEARTBEAT_TIMEOUT=// # количество неудачных HEARTBEAT listener для перехода в режим Bypass (необязательная настройка, по умолчанию - 1) //LISTEN_HEARTBEAT_FAILED=// # интерфейс для работы с картами Bypass по умолчанию для карт, у которых не указано имя интерфейса (необязательная настройка) BYPASS_CARD_IFS= # список интерфейсов для выключения при переходе в режим Bypass (необязательная настройка) LISTEN_CUBRO_IFS= # настройка работы интерфейсов указанных в //LISTEN_CUBRO_IFS// (необязательная настройка, по умолчанию - 0) # 1 - выключить указанные интерфейсы при переходе в режим Bypass # 0 - не выполнять действий с указанными интерфейсами при переходе в режим Bypass LISTEN_SHUTDOWN_CUBRO_IFS_WHEN_BYPASS= # абсолютный путь к скрипту для включения интерфейса (необязательная настройка, по умолчанию - см. примечание 2) CMD_SET_UP_INTFS= # абсолютный путь к скрипту для отключения интерфейса (необязательная настройка, по умолчанию - см. примечание 2) CMD_SET_DOWN_INTFS= # абсолютный путь к скрипту для добавления IP адреса(необязательная настройка, по умолчанию - см. примечание 2) CMD_ADD_IP= # абсолютный путь к скрипту для удаления IP адреса (необязательная настройка, по умолчанию - см. примечание 2) CMD_DEL_IP= __Примечание 1__ Все IP-адреса, указываемые в конфигурации, могут быть представлены в формате ''192.168.1.202'' или с указанием маски сети, например, ''192.168.1.202/16''. По умолчанию маска сети равна ''32'' (в случае, если не указана в глобальной настройке ''NETWORK_MASK'' или в соответствующей конфигурации и listener или карты Bypass). Важно учитывать следующее: если IP-адрес совпадает с IP-адресом управления (Management IP-адрес), который используется для SSH соединения, то маска сети не меняется и остается такой, как была указана в операционной системе. Это важное условие следует учитывать при настройке IP-адресов в конфигурации, чтобы избежать конфликтов с управляющим IP-адресом и ненамеренных изменений маски сети. __Примечание 2__ Конфигурация демона предоставляет возможность указывать оригинальные скрипты для выполнения базовых операция таких как включение/выключение интерфейсов и создания/удаления IP-адресов. Демон ожидает получить в соответствующей конфигурации абсолютный путь до shell скрипта с указанием используемых переменных в конце строки в формате ''%(<имя переменной>)s'' Используемые переменные: * ''intfs'' — имя интерфейса * ''ip'' — IP адрес * ''netmask'' — маска сети По умолчанию используются следующие конфигурации: * ''CMD_SET_UP_INTFS=/var/fastbypass_monitor/backend/app_bash/cmd_set_up_intfs.sh %(intfs)s'' * ''CMD_SET_DOWN_INTFS=/var/fastbypass_monitor/backend/app_bash/cmd_set_down_intfs.sh %(intfs)s'' * ''CMD_ADD_IP=/var/fastbypass_monitor/backend/app_bash/cmd_add_ip.sh %(ip)s %(netmask)s %(intfs)s'' * ''CMD_DEL_IP=/var/fastbypass_monitor/backend/app_bash/cmd_del_ip.sh %(ip)s %(netmask)s %(intfs)s'' ==== Конфигурация Listener ==== Каждый listener обеспечивает возможность получения HEARTBEAT сигналов от различных устройств DPI. Каждый последующий listener указывается в конфигурации со следующим индексом (например, [0], [1], [2]). Listener имеет следующие параметры для полной конфигурации: # listener идентификатор (необязательная настройка, по умолчанию соответствует индексу) LISTEN_HB_ID[0]=0 # имя интерфейса, на котором listener ожидает HEARTBEAT сигналы LISTEN_HB_IFS[0]=eth0 # IP адрес/маска подсети для прослушивания HEARTBEAT сигналов LISTEN_HB_HOST[0]= 192.168.1.202/32 # порт для прослушивания HEARTBEAT сигналов LISTEN_HB_PORT[0]=3000 # количество попыток получения HEARTBEAT сигнала (необязательная настройка, по умолчанию: 3) LISTEN_HB_ATTEMPTS[0]=3 # время ожидания HEARTBEAT сигнала в миллисекундах (необязательная настройка, по умолчанию: 3000) LISTEN_HB_TIMEOUT[0]=3000 # настройка немедленного переключения в Bypass режим (необязательная настройка) # 1 - если HEARTBEAT сигнал не получен, немедленно перейти в режим Bypass # 0 - если HEARTBEAT сигнал не получен, перейти в режим Bypass после всех попыток получить сигнал (по умолчанию) LISTEN_HB_SWITCH_IMMEDIATELY[0]=0 # список интерфейсов для выключения при переходе в режим Bypass (необязательная настройка) LISTEN_CUBRO_IFS[0]=e101-001-0,e101-002-0 # настройка выключения интерфейсов указанных в настройке LISTEN_CUBRO_IFS[N] (необязательная настройка) # 1 - выключить указанные интерфейсы при переходе в режим Bypass # 0 - не выполнять действий с указанными интерфейсами при переходе в режим Bypass (по умолчанию) LISTEN_SHUTDOWN_CUBRO_IFS_WHEN_BYPASS[0]=1 ==== Конфигурация интерфейсов для сетевых карт Bypass ==== Демон автоматически управляет (удаляет/создает) IP-адресами на соответствующих интерфейсах при переходе в режим BYPASS или NORMAL в соответствии с настройками карт Bypass.\\ Для каждой Bypass карты в конфигурации указывается следующий индекс (например, [0], [1], [2]). Интерфейсы для карт Bypass имеют следующие параметры для полной конфигурации: # идентификатор карты Bypass (необязательная настройка, по умолчанию соответствует индексу) BYPASS_CARD_ID[0]= # IP адрес/маска подсети для прослушивания HEARTBEAT сигналов BYPASS_CARD_HOST[0]= # режим работы карты Bypass # 0 - удалить указанный IP адрес при включении режима Bypass # 1 - удалить указанный IP адрес при включении режима Bypass, добавить обратно при выключении режима Bypass (по умолчанию) BYPASS_CARD_ACTIVE[0]= # форсированный режим карты Bypass # 0 - отключить форсированный режим карты (по умолчанию) # 1 - включить форсированный режим, IP адрес карты работает вне зависимости от состояния демона BYPASS_CARD_FORCE[0]=