| Оглавление |
|---|
Общее описание
Масштабирование сервиса Eltex-APB предполагает создание кластера из серверов APB и балансировку нагрузки на разные ноды кластера. Для балансировки нагрузки используется проксирующий веб-сервер NGINX (может быть использован другой тип сервера). На нодах APB для синхронизации информации о пользователях-WiFi используется EHCACHE (универсальная система распределенного кэширования общего назначения). Для гарантированной доставки информации по синхронизации между нодами используется брокер сообщений ActiveMQ. Общая схема приведена ниже, на рис. 1.
...
| Кол-во ТД | количество нод APB | Примечание |
|---|---|---|
| 10к | 1 | |
| 20к | 2 | |
| 30к | 3 | |
| >30к | из расчета 1 нода на каждые 10к + 1 |
Таблица 1.
Настройка кластера APB
Настройка кластера APB рассматривается на примере. Предполагается, что требуется обеспечить возможность подключения до 30к ТД. В этом случае потребуется минимум 3 ноды.
...
2) Ноды APB, ActiveMQ и Nginx могут находится по отношению друг к другу в разных подсетях, доступных через маршрутизаторы. В этом случае, если используется мультикастовый режим для построения кластера - то должна быть обеспечена мультикастовая маршрутизация между нодами APB.
Настройка APB для работы в режиме кластера
Для корректной работы кластера APB файлы /etc/eltex-apb/application.conf, /etc/eltex-apb/hosts.json и /etc/eltex-apb/hosts_kassa.json должны быть идентичны на всех нодах.
...
Подробнее про конфигурирование и возможности EHCACHE можно ознакомиться: https://www.ehcache.org/
Настройка ActiveMQ
Устанавливаем ActiveMQ. Инструкцию можно найти на официальном сайте: https://activemq.apache.org/installation
...
| Без форматирования |
|---|
sudo systemctl daemon-reload sudo systemctl enable activemq sudo systemctl start activemq |
Настройка Nginx
Для начала нужно установить в систему Nginx. Инструкцию можно найти на официальном сайте: https://nginx.ru/en/linux_packages.html#stable. Рекомендуется использовать версию 1.12 и новее.
...
| Примечание | ||
|---|---|---|
| ||
Проксирующий веб-сервер Nginx не требует рестарта после внесения изменений в конфигурацию. Обновление конфигурации можно выполнить командой: sudo systemctl reload nginx |
Настройка серверов для работы с резервированием по протоколу VRRP
Настройка резервирования с использованием keepalived рассмотрено в v1.27_Keepalived. Настройки Nginx и ActiveMQ выполняются идентично на обоих сервера. В качестве адреса сервера APB на ТД указывается VRRP адрес серверов. Так же он используется в конфигурации нод APB как адрес брокера сообщений ActiveMQ.
Достоинства и недостатки мультикастового и юникастового режима кластера APB
| Режим работы | Multicast | Unicast |
|---|---|---|
| Достоинства | возможность простого добавления дополнительных нод - требуется сконфигурировать одну ноду и включить её, обнаружение происходит в результате отправки анонсов на одинаковый мультикастовый адрес с остальными нодами. | не требуется анализировать настройки мультикастового взаимодействия между нодами |
более простая настройка (выделение адреса и настройка обычного роутинга при необходимости) в схеме включения L3 (ноды находятся в разных подсетях и доступны по роутингу) | ||
| Недостатки | в схеме включения L2 (ноды находятся в рамках одной подсети) требуется разрешить прохождение мультикастового трафика, если это запрещено настройками или политикой безопасности | при добавлении новой ноды потребуется внести информацию о её адресе в конфигурацию ВСЕХ нод apb и выполнить рестарт сервиса APB на ВСЕХ нодах. |
в схеме включения L3 (ноды находятся в разных подсетях и доступны по роутингу) подребуется выполнить настройку мультикастовой маршрутизации и вероятно вписать её в схему уже существующих настроек |
...
Как видно из приведенной в таблице 2 информации, юникастовый режим предпочтителен в случае когда редко возникает необходимость добавления новой ноды и они находятся в различных подсетях. Мультикастовый режим предпочтителен при большом числе нод и частой необходимости добавления новой, при этом все они взаимодействуют в рамках одной подсети.
Мониторинг состояния кластера APB
Для просмотра состояния кластера надо зайти на ноду по её адресу http://<IP-адрес ноды>:8090/apb/cluster.jsp
...
Для мониторинга состояния ActiveMQ можно зайти на его веб интерфейс по адресу http://<IP-адрес сервера>:8161/, дефолтные логин/пароль admin/admin. Далее перейдя по ссылке "Manage ActiveMQ broker" можно посмотреть состояние службы ActiveMQ. Более подробно о возможностях мониторинга и настройки можно ознакомиться по ссылке на официальном сайте: http://activemq.apache.org/components/classic/documentation.
Варианты отказов
Отказ одной из нод APB
| draw.io Diagram | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
На рис. 7 приведена ситуация отказа одной из нод APB (node-1). В этом случае Nginx определяет, что нода APB стала недоступна и перестает выполнять проксирование подключений на неё. ТД, подключенные к отказавшей ноде после обнаружения её недоступности попробуют снова выполнить подключение к сервису APB. Nginx выполнит проксирование этих подключений к оставшимся нодам APB.
Отказ сервера с Nginx и ActiveMQ
| draw.io Diagram | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
На рис. 8 приведена ситуация отказа сервера VM1, на котором работает Nginx и ActiveMQ. В этом случае VIP адрес переедет на сервер VM2, на котором ранее аналогичным образом был настроен сервер Nginx и ActiveMQ. ТД обнаружив потерю подключения к сервису APB будут пытаться выполнить повторное подключение. Nginx выполнит распределение этих запросов по нодам APB.
Обновление ActiveMQ
| Предупреждение | ||
|---|---|---|
| ||
Apache ActiveMQ программа с открытым исходным кодом, разработанная на Java, в котором была обнаружена уязвимость CVE-2023-46604. Рекомендуемая версия, исправляющая данную уязвимость - 5.18.3. |
...
| Блок кода | ||
|---|---|---|
| ||
sudo ln -s /opt/activemq/apache-activemq-5.18.3 /opt/activemq/run |
Траблшутинг
При некорректной конфигурации сервис APB может не стартовать и падать с ошибкой, в этом случае можно посмотреть лог комадой journalctl -e eltex-apb, а так же ошибки в файлах /var/log/eltex-apb/apb.log и /var/log/eltex-apb/apb-cache.log.
...