{{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]=