220 lines
15 KiB
Plaintext
220 lines
15 KiB
Plaintext
|
= Общее описание 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]
|
|||
|
----
|
|||
|
<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
|
|||
|
|
|||
|
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[]
|
|||
|
|