= Общее описание 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 image::clustering.png[] Ниже представлена схема деплоя профилей/коннекторов в шине: image::System-management.png[] === Список и характеристики узлов предпродуктивного контура |=== |Имя сервера |Ресурсы |Назначение |Операционная система |Софт | 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 image::route_packet.png[] === Средства мониторинга и отладки Для мониторинга работы и отладки шины для сценария прохождения пакета могут быть использованы следующие инструменты. ==== Журнал (лог) 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/ image::screenshots/screenshot_hawtio_1.png[] Трассировка маршрутов в hawtio производится на вкладке “Camel”, путем выбора маршрута (папка route) в левой области экрана и перехода на вкладку “Trace”. image::screenshots/screenshot_hawtio_2.png[] image::screenshots/screenshot_hawtio_3.png[] После перехода необходимо нажать на кнопку “Start tracing”, платформа запустит трассировку маршрута и выведет на экран схему процесса трассировки. image::screenshots/screenshot_hawtio_4.png[] В связи с тем что в 3й версии Camel, используемой нами, трассировка по умолчанию отключена потребуется подготовить отлаживаемый контекст. Для этого необходимо включить параметры _backlogTrace_ и _useBreadcrumb_. Пример: [source,xml] ---- ---- Так же для удобства работы можно включить отображение потоков в текстовом формате. Для этого в Настройках(Preferences) hawtio нужно включить флаг Include trace/debug streams image::screenshots/screenshot_hawtio_5.png[] В веб-консоли hawtio, помимо работы с маршрутами, есть возможность установки бандлов, плагинов (вкладка OSGI) Возможность просмотра логов и прочее. image::screenshots/screenshot_hawtio_6.png[] image::screenshots/screenshot_hawtio_7.png[] === Веб-консоль брокера сообщений Добавить описание, урлы (для обоих брокеров) и скриншоты на примере любой очереди. Показать, где содержимое, где рейт и прочее. Apache ActiveMQ - это брокер сообщений, основной функцией которого является отправка и получение сообщений. Работа с брокером сообщений производится через веб-консоль, перейти на которые можно по следующим ссылкам: ActiveMQ-1 - http://<<+host+>>:8161/console/ image::screenshots/screenshot_artemis_1.png[] В веб-консоли можно просматривать очереди сообщений на вкладке “Queues”. image::screenshots/screenshot_artemis_2.png[] На этой же вкладке можно просмотреть название очереди, адрес очереди. image::screenshots/screenshot_artemis_3.png[] Посмотреть скорость обмена сообщениями (столбец “Rate”), количество сообщений в очереди. image::screenshots/screenshot_artemis_4.png[] На вкладке “Producer” можно посмотреть данные об отправленных сообщениях (id сообщений, название адресов, на которые были отправлены сообщения). image::screenshots/screenshot_artemis_5.png[] На вкладке “Consumers” можно посмотреть данные о полученных сообщениях (id сообщений, из какой очереди пришли сообщения, название адресов, с которых были получены сообщения). image::screenshots/screenshot_artemis_6.png[] В левой области экрана можно выбрать в списке нужную очередь и посмотреть количество сообщений в ней. image::screenshots/screenshot_artemis_7.png[] При выборе очереди, автоматически открывается вкладка “Browse”, на которой отображаются все сообщения из выбранной очереди. При нажатии на id сообщения, появится диалоговое окно с сообщением. image::screenshots/screenshot_artemis_8.png[] При необходимости сообщение можно переместить в другую очередь (кнопка “Move”) или удалить (кнопка “Delete”). image::screenshots/screenshot_artemis_9.png[] Также в консоли имеется возможность полностью очистить очередь от сообщений или полностью удалить очередь из брокера сообщений, выбрав очередь в левой области экрана и перейдя на вкладку “Delete”. image::screenshots/screenshot_artemis_10.png[]