Entaxy

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

Entaxy обеспечивает следующую функциональность:

  1. обеспечение доступа внешних систем к шине через опубликованные сервисы (SOAP, REST, прочее)

  2. поддержка синхронного и асинхронного способа вызова служб;

  3. использование защищённой шины, с гарантированной доставкой сообщений, поддерживающего транзакционную модель;

  4. статическая и алгоритмическая (условная, опирающаяся на значение передаваемых данных) маршрутизация сообщений;

  5. доступ к данным из сторонних информационных систем с помощью готовых или специально разработанных адаптеров;

  6. обработка и преобразование сообщений;

  7. отказоустойчивая конфигурация;

  8. разнообразные механизмы контроля и управления (аудиты, протоколирование);

  9. мониторинг данных и бизнес-процессов

Entaxy решает следующие задачи:

  1. обмен сообщениями/данными между приложениями и ИС

  2. организация точек доступа к услугам (сервисам) и данным

  3. унификация взаимодействия с внешними ИС

  4. мониторинг данных и бизнес-процессов

  5. снижение трудоемкости процесса сбора и агрегации информации

  6. повышение оперативности подготовки отчетов

  7. обеспечение автоматизированной проверки данных, используемых в процессе деятельности

Entaxy реализована на следующем наборе ПО:

  • ОС: AstraLinux 2.12 (Orel)/ RHEL (CentOS)/ Ubuntu

  • Программная платформа: Java 11 (librca / Liberica JDK / Axiom JDK)

  • СУБД : PostgreSQL / MS SQL Server

  • Платформа исполнения: Apache Karaf 4.3.6

  • Платформа интеграции: Apache Camel 3.4.5

  • Каркас реализации веб-сервисов: Apache CXF 3.3.6

  • Брокер сообщений: ActiveMQ Artemis 2.19.1

  • Система мониторинга: Zabbix, Grafana

  • Система управления журналами: стек ELK

Схема развертывания

Ниже представлена схема развертывания основных компонентов шины, содержащая следующие элементы:

  1. кластер NGINX - два узла, обеспечивающих отказоустойчивый балансировщик нагрузки, с одним виртуальным IP-адресом

  2. кластер Karaf - в начальной конфигурации используется 2 узла, в дальнейшем схема масштабируется горизонтально. Наличие кластера обеспечивает отказоустойчивость и производительность, так как нагрузка распределяется между всеми активными узлами

  3. кластер брокера сообщений ActiveMQ Artemis - отказоустойчивая конфигурация "активный - пассивный", в которой все транзакции активного брокера реплицируются на пассивный. При выходе из строя активного брокера, активным становится пассивный. Все вызовы брокера сообщений осуществляются по схеме failover, которая гарантирует переадресацию запроса в случае недоступности основного узла.

  4. отказоустойчивый кластер СУБД - предоставляется заказчиком

  5. NFS Share - подключаемое сетевое файловое хранилище, предоставляется заказчиком

  6. ELK - узел сбора и обработки логов стеком продуктов ELK (ElasticSearch, Logstash, Kibana)

  7. узел сбора и обработки метрик с установленными продуктами Zabbix и Grafana

clustering

Ниже представлена схема деплоя профилей/коннекторов в шине:

System management

Список и характеристики узлов предпродуктивного контура

Имя сервера Ресурсы Назначение Операционная система Софт

PREPRD_NGINX1

2xCPU, 4Gb RAM, 40 Gb Local

Балансировщик

AstraLinux 2.12 (Orel)/ RHEL (CentOS)/ Ubuntu

Nginx

PREPRD_NGINX2

2xCPU, 4Gb RAM, 40 Gb Local

Балансировщик

AstraLinux 2.12 (Orel)/ RHEL (CentOS)/ Ubuntu

Nginx

PREPRD_KRF1

8xCPU, 12 Gb RAM, 60 Gb Local

Платформа запуска интеграционных маршрутов

AstraLinux 2.12 (Orel)/ RHEL (CentOS)/ Ubuntu

Apache Karaf, Cellar, 11.0.11.fx-librca

PREPRD_KRF2

8xCPU, 12 Gb RAM, 60 Gb Local

Платформа запуска интеграционных маршрутов

AstraLinux 2.12 (Orel)/ RHEL (CentOS)/ Ubuntu

Apache Karaf, Cellar, 11.0.11.fx-librca

PREPRD_NEXUS

4xCPU, 12 Gb RAM, 60 Gb Local

Хранение артефактов

AstraLinux 2.12 (Orel)/ RHEL (CentOS)/ Ubuntu

Nexus

PREPRD_AMQ1

4xCPU, 16 Gb RAM, 60 Gb Local

Брокер сообщений

AstraLinux 2.12 (Orel)/ RHEL (CentOS)/ Ubuntu

Java, ActiveMQ Artemis

PREPRD_AMQ2

4xCPU, 16 Gb RAM, 60 Gb Local

Брокер сообщений

AstraLinux 2.12 (Orel)/ RHEL (CentOS)/ Ubuntu

Java, ActiveMQ Artemis

Схема прохождения пакета Система1 - Система2

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

Экземпляры систем соединяются с шиной через Коннектор, который взаимодействует с сервисом SOAP, Универсальный коннектор, (контекст/cxf/uniform-exchange), предоставляемым шиной.

Укрупненно маршрут выглядит следующим образом:

  1. доставка сообщения до очереди получателя: CXF-сервис → маршрут Camel send-to-jms → очередь в Artemis

  2. получение сообщения: CXF-сервис → очередь в Artemis

  3. подтверждение получения: CXF-сервис → маршрут Camel receive-acknowledge

route packet

Средства мониторинга и отладки

Для мониторинга работы и отладки шины для сценария прохождения пакета могут быть использованы следующие инструменты.

Журнал (лог) Nginx

Логи Nginx’a располагаются в папке по пути “/var/log/nginx”.

В папке с логами Nginx’a располагаются 2 типа логов:

  1. Access - отображает все процессы, которые проходят через Nginx. В случае когда запрос отработал успешно, сервер возвращает код 200 в access.log и записывает строку с URL запроса, кодом, размером ответа и временем получения ответа.

  2. Error - отображает процессы, в которых возникли ошибки В случае когда запрос отработал с ошибкой, сервер возвращает код 400 (например) в error.log и записывает строку с URL запроса, кодом, кратким описанием ошибки, размером ответа, временем получения ответа и юзер-агентом (HTTP-заголовок, который показывает из какого браузера или иного софта был отправлен запрос).

Трассировка маршрутов Camel

Apache Сamel - это платформа для запуска интеграционных маршрутов (процессов), которые в самой платформе называются “route”. Основными функциями Apache Camel являются подключения по различным протоколам, маршрутизация запросов и сообщений, а также преобразование данных.

Работа с маршрутами в Apache Camel и самой платформой осуществляется из hawtio. Hawtio - это графическая консоль управления. Hawtio доступна по следующим ссылкам:

screenshot hawtio 1

Трассировка маршрутов в hawtio производится на вкладке “Camel”, путем выбора маршрута (папка route) в левой области экрана и перехода на вкладку “Trace”.

screenshot hawtio 2
screenshot hawtio 3

После перехода необходимо нажать на кнопку “Start tracing”, платформа запустит трассировку маршрута и выведет на экран схему процесса трассировки.

screenshot hawtio 4

В связи с тем что в 3й версии Camel, используемой нами, трассировка по умолчанию отключена потребуется подготовить отлаживаемый контекст. Для этого необходимо включить параметры backlogTrace и useBreadcrumb.

Пример:

<camelContext id="passive-common-connector-context" xmlns="http://camel.apache.org/schema/blueprint" errorHandlerRef="commonErrorHandler" backlogTrace="true" useBreadcrumb="true">

Так же для удобства работы можно включить отображение потоков в текстовом формате. Для этого в Настройках(Preferences) hawtio нужно включить флаг Include trace/debug streams

screenshot hawtio 5

В веб-консоли hawtio, помимо работы с маршрутами, есть возможность установки бандлов, плагинов (вкладка OSGI) Возможность просмотра логов и прочее.

screenshot hawtio 6
screenshot hawtio 7

Веб-консоль брокера сообщений

Добавить описание, урлы (для обоих брокеров) и скриншоты на примере любой очереди. Показать, где содержимое, где рейт и прочее.

Apache ActiveMQ - это брокер сообщений, основной функцией которого является отправка и получение сообщений.

Работа с брокером сообщений производится через веб-консоль, перейти на которые можно по следующим ссылкам:

screenshot artemis 1

В веб-консоли можно просматривать очереди сообщений на вкладке “Queues”.

screenshot artemis 2

На этой же вкладке можно просмотреть название очереди, адрес очереди.

screenshot artemis 3

Посмотреть скорость обмена сообщениями (столбец “Rate”), количество сообщений в очереди.

screenshot artemis 4

На вкладке “Producer” можно посмотреть данные об отправленных сообщениях (id сообщений, название адресов, на которые были отправлены сообщения).

screenshot artemis 5

На вкладке “Consumers” можно посмотреть данные о полученных сообщениях (id сообщений, из какой очереди пришли сообщения, название адресов, с которых были получены сообщения).

screenshot artemis 6

В левой области экрана можно выбрать в списке нужную очередь и посмотреть количество сообщений в ней.

screenshot artemis 7

При выборе очереди, автоматически открывается вкладка “Browse”, на которой отображаются все сообщения из выбранной очереди. При нажатии на id сообщения, появится диалоговое окно с сообщением.

screenshot artemis 8

При необходимости сообщение можно переместить в другую очередь (кнопка “Move”) или удалить (кнопка “Delete”).

screenshot artemis 9

Также в консоли имеется возможность полностью очистить очередь от сообщений или полностью удалить очередь из брокера сообщений, выбрав очередь в левой области экрана и перейдя на вкладку “Delete”.

screenshot artemis 10