Инструкция по настройке Q.Integration
1. 1. Выпуски Q.Integration
Актуальные версии образов
-
registry-new.diasoft.ru/release/qintdui:1.53.01-24100805
-
registry-new.diasoft.ru/release/qintdintegrationservice:24082701
-
registry-new.diasoft.ru/release/database-qintdintegrationservice:24082701
-
registry-new.diasoft.ru/release/qmappui:24100802
-
registry-new.diasoft.ru/release/qiregintegrationflow:24101103
-
registry-new.diasoft.ru/release/database-qiregintegrationflow:24101103
-
registry-new.diasoft.ru/release/qiregui:24090405
-
registry-new.diasoft.ru/release/qintmqmessagebroker:2.33.0-24100302
-
registry-new.diasoft.ru/release/qintrkaraf:4.4.5-24080902
-
registry-new.diasoft.ru/release/qmmmsgpackage:24100201
-
registry-new.diasoft.ru/release/database-qmmmsgpackage:24100201
-
registry-new.diasoft.ru/release/qmmui:24100301
2. Создание эталонной базы данных проекта
Перед созданием проекта необходимо подготовить эталонную базу данных проекта. Для этого необходимо определить список существующих схем БД, которые будут использоваться в проекте. Список модулей и их БД:
- QINTD - Дизайнер интеграционных потоков (Q.Integration Designer): qintdintegrationservice
- QIREG - Реестр интеграционных потоков (Q.Integration Registry): qiregintegrationflow
- QMM - Учет сообщений (Q.Message Management): qmmmsgpackage
Список модулей без БД:
- QINTMQ - Приложение является асинхронной системой обмена сообщениями и способно координировать трафик сообщений между процессами в распределенных системах через экземпляр работающего брокера (Q.Artemis): qintmqmessagebroker
- QINTR - Приложение представляет собой модульную среду для запуска интеграционных адаптеров (Q.Karaf): qintrkaraf
2.1 Q.Integration Руководство по установке и запуску сервисов
Установка сервисов производится через платформу Q.CMDB (Инструменты для управления конфигурацией стенда, планирование поставок, заполнения справочников ИТ компонент), с помощью инструмента "Поставки".
Подробнее про использование поставок можно прочитать здесь
Настройка конфигурации сервисов
Примеры общих настроек неймспейса:
system-config
ARTEMIS_BROKER_URL: tcp://"URL Артемиса, с портом k8s, проброшенным на 61616"
AUTH_SERVER_CONTEXT: mdpauth
AUTH_SERVER_URL: "URL mdpauth"
AUTH_SERVICE: mdpauth
DB_TEST_QUERY: select 1
DISCOVERY_CLIENT_NAME: kubernetes
EUREKA_INSTANCE_HOSTNAME: ftdiscovery
EUREKA_INSTANCE_PORT: '8761'
EUREKA_URL: http://ftdiscovery:8761/eureka/ (opens in a new tab)
JPA_DIALECT: org.hibernate.dialect.PostgreSQL95Dialect
KAFKA_HOST: "Хост Кафки"
KAFKA_PORT: "Порт Кафки"
KAFKA_URL: "URL Кафки"
KUBERNETES_API_HOST: https://kubernetes.default (opens in a new tab)
KUBERNETES_LEGACY_MOD: 'false'
LICENSE_PATH: /share/license
LPATH: /share/config/
MDPSECURITY_DB_CONNECTION_TEST_QUERY: select 1
MDPSECURITY_DB_DATABASE: "Название БД"
MDPSECURITY_DB_DRIVER: org.postgresql.Driver
MDPSECURITY_DB_SCHEMA: mdpsecurity
MDPSECURITY_DB_URL: "URL БД"?currentSchema=mdpsecurity
MESSAGEMANAGEMENT_URL_SERVICE: "URL qmmmsgpackage"
PROBE_API: /actuator/health
PROBE_TYPE: http
QOAUTH_MODE: mdpauth
QSAVER_HOST: qfluentbitsocket.logging
QSAVER_PORT: '5170'
QSAVER_URL: qfluentbitsocket.logging:5170
SERVICE_DISCOVERY_PORT: '8761'
SERVICE_PORT: '8080'
USE_TOKEN_FOR_FEIGN: 'false'
USE_VAULT: 'false'
system-secret
DB_ADMIN: "Логин админа БД"
DB_ADMINPASSWORD: "Пароль админа БД"
DB_DATABASE: "Логин админа БД"
DB_DRIVER: org.postgresql.Driver
DB_HOST: "Хост БД"
DB_PORT: "Порт БД"
DB_POSTGRESDRIVER: org.postgresql.Driver
DB_QUOTED_IDENTIFIERS: false
DB_TYPE: postgres
DB_URL: "URL БД"
MDPSECURITY_DB_LOGIN: mdpsecurity
MDPSECURITY_DB_PASSWORD: mdpsecurity
OAUTH2_CLIENT_ID: client
OAUTH2_CLIENT_SECRET: secret
TECH_PASSWORD: 12345678
TECH_USERNAME: dqtech
Примеры необходимых настроек для модулей:
qintdui
SECURITY_ENABLED: 'false'
SERVICE_NAME: qintdui
qintdintegrationservice
ADMIN_SERVER_URL: mdpgateway:8080
ALLOW_ALL_FOR_DEBUG: 'true'
AUTH_SERVER_CONTEXT: mdpauth
AUTH_SERVER_URL: http://mdpauth:8080 (opens in a new tab)
CONFELEMENT_KIND: '2'
DB_CONNECTION_TEST_QUERY: SELECT 1
DEFAULT_BINDER: kafka
JPA_DIALECT: org.hibernate.dialect.PostgreSQL95Dialect
RIBBON_REFRESH_INTERVAL: '10000'
SERVICE_NAME: qintdintegrationservice
SERVICE_PORT: '8080'
qmappui
SECURITY_ENABLED: 'false'
SERVICE_NAME: qmappui
qiregui
SECURITY_ENABLED: 'false'
SERVICE_NAME: qiregui
qmmmsgpackage
ALLOW_ALL_FOR_DEBUG: 'false'
ASYNC_CLIENT_TIMEOUT: '180'
AUTH_PROVIDER: digitalq
CONFELEMENT_KIND: '2'
DB_QUOTED_IDENTIFIERS: 'true'
DEBUG: 'true '
DEFAULT_BINDER: kafka
GATEWAY_URL: http://mdpgateway:8080/ (opens in a new tab)
JPA_DIALECT: org.hibernate.dialect.PostgreSQL95Dialect
KAFKA_BOOTSTRAP_SERVERS: "URL Кафки"
SECURITY_ENABLED: 'false'
SERVICE_PORT: '8080'
qmmui
SECURITY_ENABLED: 'false'
SERVICE_NAME: qmmui
qintmqmessagebroker
ALLOW_ALL_FOR_DEBUG: 'true'
ARTEMIS_BROKER_URL: tcp://localhost:61616
ARTEMIS_USER: artemis
AUTH_PROVIDER: digitalq
AUTH_SERVER_CONTEXT: mdpauth
AUTH_SERVER_URL: http://mdpauth:8080 (opens in a new tab)
DEFAULT_BINDER: kafka
HIKARI_CONNECTION_TIMEOUT: '30000'
HIKARI_IDLE_TIMEOUT: '600000'
HIKARI_MAXIMUM_POOLSIZE: '50'
HIKARI_MAX_LIFETIME: '1800000'
HIKARI_MINIMUM_IDLE: '10'
LIQUIBASE_ENABLED: 'false'
LOGGING_HIBERNATE_LEVEL: DEBUG
LOGGING_LEVEL: DEBUG
LOGGING_LEVEL_RU_DIASOFT: DEBUG
LOGGING_ROOT_LEVEL: DEBUG
QSAVER_HOST: qfluentbitsocket.logging
QSAVER_PORT: '5170'
QSAVER_URL: qfluentbitsocket.logging:5170
SERVICE_NAME: qintmqmessagebroker
SERVICE_PORT: '8161'
Установка сервисов qintmqmessagebroker и qintrkaraf:
- qintmqmessagebroker:
При развертывании сервиса нужно в K8S добавить запись в config-map с названием share-
entrypoint-volume:
share-entrypoint-volume
qintmqmessagebroker.sh: |
/opt/broker/bin/artemis run
Убедиться, что в деплойменте сервиса есть mount к share-entrypoint-volume, иначе сервис не запустится
А также изменить тип service с ClusterIp на NodePort со следующей записью для портов: service
- name: http
protocol: TCP
port: 8161
targetPort: 8161
nodePort: "свободный порт k8s" - name: tcp
protocol: TCP
port: 61616
targetPort: 61616
nodePort: "свободный порт k8s"
Свободный порт k8s должен быть из диапазона 30000-32767.
Пример:

Сделать рестарт деплоймента.
UI сервиса станет доступен по адресу:
http://qintmqmessagebroker."namespace"."название (opens in a new tab) стенда".diasoft.ru:"порт K8S"/
- qintrkaraf:
При развертывании сервиса нужно в K8S добавить запись в config-map с названием share-
entrypoint-volume:
share-entrypoint-volume
qintrkaraf.sh: |
/opt/karaf/bin/karafrun
Убедиться, что в деплойменте сервиса есть mount к share-entrypoint-volume, иначе сервис не запустится
А также изменить тип service с ClusterIp на NodePort со следующей записью для портов:
service
- name: http protocol: TCP port: 8181 targetPort: 8181 nodePort: "свободный порт k8s" Свободный порт k8s должен быть из диапазона 30000-32767.
Пример:

Сделать рестарт деплоймента. UI сервиса станет доступен по адресу: http://qintrkaraf."namespace"."название (opens in a new tab) стенда".diasoft.ru:"порт K8S"/ Для работы сервисов Q.Integration потребуется установка актуальных версий платформенных сервисов:
- mdpauth
- mdpdepartments
- mdpemployee
- mdpgateway
- mdprefs
- mdproles
- mdpsenders
- mdpsettings
- mdpusers
Актуальные версии платформенных сервисов запрашивать у команды "Инструменты и платформа Back-end разработки" Опционально: Для работы бизнес-процессов потребуется установка актуальных версий сервисов
Q.BPM:
- qbpmdesigner
- qbpmcockpit
- dqhumantask
- qbpetqbpmplayer
- humantaskui
- qbpmui
Актуальные версии платформенных сервисов запрашивать у команды "Технологическая платформа Q.BPM"
2.2 Распространенные ошибки при запуске сервисов
1.Не стартует сервис артемиса с ошибкой "Using image entrypoint"

Убедиться, что в деплойменте сервиса есть маунт к share-entrypoint-volume:

-
Ошибки сервиса при соединении к артемису - должен быть указан ARTEMIS_URL в конфиге, обязательно с куберовским портом проброшенным к 61616 - пример: tcp://qintmqmessagebroker.int.qrun.diasoft.ru:30854
-
Ошибка пода status 404. Исправить в deployment блок с пробами и привести его к виду:
livenessProbe:
tcpSocket:
port: 8161
initialDelaySeconds: 1200
timeoutSeconds: 5
periodSeconds: 30
successThreshold: 1
failureThreshold: 7
readinessProbe:
tcpSocket:
port: 8161
timeoutSeconds: 5
periodSeconds: 30
successThreshold: 1
failureThreshold: 7
startupProbe:
tcpSocket:
port: 8161
timeoutSeconds: 5
periodSeconds: 30
successThreshold: 1
failureThreshold: 40