15 KiB
Общее описание Entaxy
Entaxy обеспечивает следующую функциональность:
-
обеспечение доступа внешних систем к шине через опубликованные сервисы (SOAP, REST, прочее)
-
поддержка синхронного и асинхронного способа вызова служб;
-
использование защищённой шины, с гарантированной доставкой сообщений, поддерживающего транзакционную модель;
-
статическая и алгоритмическая (условная, опирающаяся на значение передаваемых данных) маршрутизация сообщений;
-
доступ к данным из сторонних информационных систем с помощью готовых или специально разработанных адаптеров;
-
обработка и преобразование сообщений;
-
отказоустойчивая конфигурация;
-
разнообразные механизмы контроля и управления (аудиты, протоколирование);
-
мониторинг данных и бизнес-процессов
Entaxy решает следующие задачи:
-
обмен сообщениями/данными между приложениями и ИС
-
организация точек доступа к услугам (сервисам) и данным
-
унификация взаимодействия с внешними ИС
-
мониторинг данных и бизнес-процессов
-
снижение трудоемкости процесса сбора и агрегации информации
-
повышение оперативности подготовки отчетов
-
обеспечение автоматизированной проверки данных, используемых в процессе деятельности
Entaxy реализована на следующем наборе ПО:
-
ОС: Astra Linux 1.6 смоленск ?
-
Программная платформа: Java 11 (librca)
-
СУБД (предоставляется заказчиком): MS SQL Server
-
СУБД (может использоваться): PostgreSQL JDBC Driver
-
Платформа исполнения: Apache Karaf 4.2.9
-
Платформа интеграции: Apache Camel 3.4.4
-
Каркас реализации веб-сервисов: Apache CXF 3.4.0
-
Брокер сообщений: ActiveMQ Artemis 2.15
-
Система мониторинга (предоставляется заказчиком): Zabbix, Grafana
-
Система управления журналами (предоставляется заказчиком): стек ELK
Схема развертывания
Ниже представлена схема развертывания основных компонентов шины, содержащая следующие элементы:
-
кластер NGINX - два узла, обеспечивающих отказоустойчивый балансировщик нагрузки, с одним виртуальным IP-адресом
-
кластер Karaf - в начальной конфигурации используется 2 узла, в дальнейшем схема масштабируется горизонтально. Наличие кластера обеспечивает отказоустойчивость и производительность, так как нагрузка распределяется между всеми активными узлами
-
кластер брокера сообщений ActiveMQ Artemis - отказоустойчивая конфигурация "активный - пассивный", в которой все транзакции активного брокера реплицируются на пассивный. При выходе из строя активного брокера, активным становится пассивный. Все вызовы брокера сообщений осуществляются по схеме failover, которая гарантирует переадресацию запроса в случае недоступности основного узла.
-
отказоустойчивый кластер СУБД - предоставляется заказчиком
-
NFS Share - подключаемое сетевое файловое хранилище, предоставляется заказчиком
-
ELK - узел сбора и обработки логов стеком продуктов ELK (ElasticSearch, Logstash, Kibana)
-
узел сбора и обработки метрик с установленными продуктами Zabbix и Grafana
Ниже представлена схема деплоя профилей/коннекторов в шине:
Список и характеристики узлов предпродуктивного контура
Имя сервера | Ресурсы | Назначение | Операционная система | Софт |
---|---|---|---|---|
PREPRD_NGINX1 |
2xCPU, 4Gb RAM, 40 Gb Local |
Балансировщик |
AstraLinux SE 1.6 |
Nginx |
PREPRD_NGINX2 |
2xCPU, 4Gb RAM, 40 Gb Local |
Балансировщик |
AstraLinux SE 1.6 |
Nginx |
PREPRD_KRF1 |
8xCPU, 12 Gb RAM, 60 Gb Local |
Платформа запуска интеграционных маршрутов |
AstraLinux SE 1.6 |
Apache Karaf, Cellar, java-1.8.0-openjdk |
PREPRD_KRF2 |
8xCPU, 12 Gb RAM, 60 Gb Local |
Платформа запуска интеграционных маршрутов |
AstraLinux SE 1.6 |
Apache Karaf, Cellar, java-1.8.0-openjdk |
PREPRD_NEXUS |
4xCPU, 12 Gb RAM, 60 Gb Local |
Хранение артефактов |
AstraLinux SE 1.6 |
Nexus |
PREPRD_AMQ1 |
4xCPU, 16 Gb RAM, 60 Gb Local |
Брокер сообщений |
AstraLinux SE 1.6 |
Java, ActiveMQ Artemis |
PREPRD_AMQ2 |
4xCPU, 16 Gb RAM, 60 Gb Local |
Брокер сообщений |
AstraLinux SE 1.6 |
Java, ActiveMQ Artemis |
Схема прохождения пакета Система1 - Система2
Ниже представлена схема прохождения пакета на примере обмена данными между двумя экземплярами системами.
Экземпляры систем соединяются с шиной через Коннектор, который взаимодействует с сервисом SOAP, Универсальный коннектор, (контекст/cxf/uniform-exchange), предоставляемым шиной.
Укрупненно маршрут выглядит следующим образом:
-
доставка сообщения до очереди получателя: CXF-сервис → маршрут Camel send-to-jms → очередь в Artemis
-
получение сообщения: CXF-сервис → очередь в Artemis
-
подтверждение получения: CXF-сервис → маршрут Camel receive-acknowledge
Средства мониторинга и отладки
Для мониторинга работы и отладки шины для сценария прохождения пакета могут быть использованы следующие инструменты.
Журнал (лог) Nginx
Логи Nginx’a располагаются в папке по пути “/var/log/nginx”.
В папке с логами Nginx’a располагаются 2 типа логов:
-
Access - отображает все процессы, которые проходят через Nginx. В случае когда запрос отработал успешно, сервер возвращает код 200 в access.log и записывает строку с URL запроса, кодом, размером ответа и временем получения ответа.
-
Error - отображает процессы, в которых возникли ошибки В случае когда запрос отработал с ошибкой, сервер возвращает код 400 (например) в error.log и записывает строку с URL запроса, кодом, кратким описанием ошибки, размером ответа, временем получения ответа и юзер-агентом (HTTP-заголовок, который показывает из какого браузера или иного софта был отправлен запрос).
Трассировка маршрутов Camel
Apache Сamel - это платформа для запуска интеграционных маршрутов (процессов), которые в самой платформе называются “route”. Основными функциями Apache Camel являются подключения по различным протоколам, маршрутизация запросов и сообщений, а также преобразование данных.
Работа с маршрутами в Apache Camel и самой платформой осуществляется из hawtio. Hawtio - это графическая консоль управления. Hawtio доступна по следующим ссылкам:
Karaf-1 - http://<<host>>:8181/hawtio/
Трассировка маршрутов в hawtio производится на вкладке “Camel”, путем выбора маршрута (папка route) в левой области экрана и перехода на вкладку “Trace”.
После перехода необходимо нажать на кнопку “Start tracing”, платформа запустит трассировку маршрута и выведет на экран схему процесса трассировки.
В связи с тем что в 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
В веб-консоли hawtio, помимо работы с маршрутами, есть возможность установки бандлов, плагинов (вкладка OSGI) Возможность просмотра логов и прочее.
Веб-консоль брокера сообщений
Добавить описание, урлы (для обоих брокеров) и скриншоты на примере любой очереди. Показать, где содержимое, где рейт и прочее.
Apache ActiveMQ - это брокер сообщений, основной функцией которого является отправка и получение сообщений.
Работа с брокером сообщений производится через веб-консоль, перейти на которые можно по следующим ссылкам:
ActiveMQ-1 - http://<<host>>:8161/console/
В веб-консоли можно просматривать очереди сообщений на вкладке “Queues”.
На этой же вкладке можно просмотреть название очереди, адрес очереди.
Посмотреть скорость обмена сообщениями (столбец “Rate”), количество сообщений в очереди.
На вкладке “Producer” можно посмотреть данные об отправленных сообщениях (id сообщений, название адресов, на которые были отправлены сообщения).
На вкладке “Consumers” можно посмотреть данные о полученных сообщениях (id сообщений, из какой очереди пришли сообщения, название адресов, с которых были получены сообщения).
В левой области экрана можно выбрать в списке нужную очередь и посмотреть количество сообщений в ней.
При выборе очереди, автоматически открывается вкладка “Browse”, на которой отображаются все сообщения из выбранной очереди. При нажатии на id сообщения, появится диалоговое окно с сообщением.
При необходимости сообщение можно переместить в другую очередь (кнопка “Move”) или удалить (кнопка “Delete”).
Также в консоли имеется возможность полностью очистить очередь от сообщений или полностью удалить очередь из брокера сообщений, выбрав очередь в левой области экрана и перейдя на вкладку “Delete”.