Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

Общее описание

Масштабирование сервиса 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 и новее.

...

Примечание
titleВажно!

Проксирующий веб-сервер Nginx не требует рестарта после внесения изменений в конфигурацию.

Обновление конфигурации можно выполнить командой: sudo systemctl reload nginx

Настройка серверов для работы с резервированием по протоколу VRRP

Настройка резервирования с использованием keepalived рассмотрено в v1.27_Keepalived. Настройки Nginx и ActiveMQ выполняются идентично на обоих сервера. В качестве адреса сервера APB на ТД указывается VRRP адрес серверов. Так же он используется в конфигурации нод APB как адрес брокера сообщений ActiveMQ.

Достоинства и недостатки мультикастового и юникастового режима кластера APB

Режим работыMulticastUnicast
Достоинства

возможность простого добавления дополнительных нод - требуется сконфигурировать одну ноду и включить её,

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

не требуется анализировать настройки мультикастового взаимодействия между нодами



более простая настройка (выделение адреса и настройка обычного роутинга при необходимости)

в схеме включения 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
bordertrue
viewerToolbartrue
fitWindowfalse
diagramNameapb-node-failure1
simpleViewerfalse
width
diagramWidth602
revision1

...

На рис. 7 приведена ситуация отказа одной из нод APB (node-1). В этом случае Nginx определяет, что нода APB стала недоступна и перестает выполнять проксирование подключений на неё. ТД, подключенные к отказавшей ноде после обнаружения её недоступности попробуют снова выполнить подключение к сервису APB. Nginx выполнит проксирование этих подключений к оставшимся нодам APB.

Отказ сервера с Nginx и ActiveMQ

draw.io Diagram
bordertrue
viewerToolbartrue
fitWindowfalse
diagramNameAPB-server-failure
simpleViewerfalse
diagramWidth601

...

На рис. 8 приведена ситуация отказа сервера VM1, на котором работает Nginx и ActiveMQ. В этом случае VIP адрес переедет на сервер VM2, на котором ранее аналогичным образом был настроен сервер Nginx и ActiveMQ. ТД обнаружив потерю подключения к сервису APB будут пытаться выполнить повторное подключение. Nginx выполнит распределение этих запросов по нодам APB.

Обновление ActiveMQ

Предупреждение
titleВажно

Apache ActiveMQ программа с открытым исходным кодом, разработанная  на Java, в котором была обнаружена уязвимость CVE-2023-46604.

Рекомендуемая версия, исправляющая данную уязвимость  - 5.18.3.

...

Блок кода
languagebash
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.

...