Установка#
Состав дистрибутива#
Объект |
Тип |
Описание |
|---|---|---|
package/bh |
директория |
Директория с jar файлами |
package/pl |
директория |
Директория с Frontend файлами |
eureka-server-app.jar |
файл |
Приложение для поиска необходимых микросервисов |
mock-core-app.jar |
файл |
Приложение для работы с Groovy-скриптами в заглушках |
mock-audit-app.jar |
файл |
Приложение для работы аудита |
mock-cloud.jar |
файл |
Приложение для взаимодействия frontend и backend-сервисов |
mock-rest-cloud-app.jar |
файл |
Приложение для вызова REST-эмуляций |
mock-kafka-app.jar |
файл |
Приложение для вызова Kafka-эмуляций |
mock-esb-ibm-app.jar |
файл |
Приложение для вызова ActiveMQ Artemis-эмуляций |
mock-audit.service |
файл |
Пример конфигурационного файла |
mock-core-app.service |
файл |
Пример конфигурационного файла |
mock-cloud.service |
файл |
Пример конфигурационного файла |
mock-core-app.service |
файл |
Пример конфигурационного файла |
nginx.conf |
файл |
Пример конфигурационного файла |
upstream.conf |
файл |
Пример конфигурационного файла |
Подготовка к установке#
Перед началом установки выполните следующие действия:
Подготовьте чек-листы переменных запуска и работ по установке.
Убедитесь в корректности заполненных и переопределенных переменных.
Чек-лист переменных для Mock-core-app#
Переменная |
Значение по умолчанию |
Необходимость переопределения |
Описание |
|---|---|---|---|
server.port |
|
Нет |
Порт для работы приложения |
mock.core.nexus.username |
- |
Да |
ТУЗ Docker-nexus |
mock.core.nexus.password |
- |
Да |
ТУЗ Docker-nexus |
mock.core.nexus.urls |
- |
Да |
URL-адреса Docker-nexus, разделенные запятыми без пробелов (например, |
mock.core.groovy.timeout-seconds |
|
Нет |
Таймаут для потоков, исполняющих Groovy-скрипт |
mock.core.groovy.allow-network |
|
Нет |
Позволяет запретить сетевые соединения из Groovy-скриптов |
mock.mmt-client.allow-mmt-policy |
|
Нет |
Включает/выключает расширенные полномочия, необходимые для клиентских вызовов MMT |
mock.core.fixedDelayLimit |
|
Нет |
Лимит задержки ответа эмуляции |
eureka.client.serviceUrl.defaultZonet |
|
Да |
URL-адреса подключения к сервису Eureka, разделенные запятыми без пробелов (например, |
mock.core.healthcheck.nexus |
|
Если известно, что Nexus недоступен, установите значение |
Определяет необходимость проверки доступности при старте приложения. Необходим для проверки корректности настроек доступа к Docker-nexus и доступности самого Docker-nexus. |
Чек-лист переменных для Mock-cloud#
Переменная |
Значение по умолчанию |
Необходимость переопределения |
Описание |
|---|---|---|---|
db.server |
- |
Да |
IP-адрес сервера PostgreSQL |
db.port |
- |
Да |
Порт, по которому будет доступна PostgreSQL |
db.instance |
- |
Да |
Имя базы данных |
db.schema |
- |
Да |
Имя схемы базы данных приложения |
db.user |
- |
Да |
Имя пользователя базы данных приложения |
db.password |
- |
Да |
Пароль для подключения приложения к базе данных |
db.owner-user |
- |
Да |
Пользователь базы данных, используемый Liquibase для миграции |
db.owner-password |
- |
Да |
Пароль пользователя базы данных, используемого Liquibase для миграции |
server.port |
|
Нет |
Порт, по которому будет доступен сервис mock-cloud |
mock.cloud.transport-path.mmt |
- |
Да |
Путь к транспортному приложению ММТ (например, |
mock.cloud.transport-path.rest |
- |
Да |
Путь к транспортному приложению REST (например, |
mock.cloud.transport-path.scheduled |
- |
Да |
Путь к приложению SCHEDULED APP (например, |
mock.cloud.ibm-instance-count |
|
Да |
Количество запускаемых экземпляров приложений для работы с MQ. (В текущей версии продукта не используется.) |
mock.cloud.auth.url |
|
Нет |
URL Mock для авторизации. Если значение не задано, оно будет сформировано с использованием свойства |
mock.cloud.auth.secret |
- |
Да |
Secret для проверки подписи JWT-токена. |
mock.cloud.auth.client.name |
- |
Да |
Имя клиента для авторизации в Mock. (В текущей версии продукта не используется.) |
mock.cloud.auth.client.secret |
- |
Да |
Secret клиента для авторизации в Mock. (В текущей версии продукта не используется.) |
mock.cloud.nexus.username |
- |
Да |
ТУЗ Docker-nexus |
mock.cloud.nexus.password |
- |
Да |
ТУЗ Docker-nexus |
mock.cloud.nexus.urls |
- |
Да |
Список URL-адресов Docker-nexus, разделенных запятыми без пробелов (например, |
mock.cloud.graphql.url |
|
Нет |
URL Mock для доступа к GraphQL. Если значение не задано, оно будет сформировано с использованием свойства |
eureka.client.serviceUrl.defaultZone |
|
Да |
Адреса подключения к сервису Eureka, разделённые запятой без пробелов (например, |
toggles.groovyEnable |
|
Необходимо переопределить, если меняется адрес ответа ml задачи |
Определяет доступность Groovy |
toggles.mlEnable |
|
Необходимо переопределить, если меняется адрес ответа ml задачи |
Определяет доступность ml |
mock.cloud.toggling.projectsEnable |
|
Необходимо переопределить, если нужно указать доступность создания проектных областей через публичный endpoint |
Определяет доступность публичного endpoint для создания проектных областей |
mock.cloud.toggling.mmtEnable |
|
Необходимо переопределить, если нужно указать доступность MMT заглушек |
Определяет доступность MMT заглушек. (В текущей версии продукта не используется.) |
mock.cloud.toggling.restEnable |
|
Необходимо переопределить, если нужно указать доступность REST-заглушек |
Определяет доступность REST-заглушек |
mock.cloud.toggling.esbEnable |
|
Необходимо переопределить, если нужно указать доступность ESB заглушек |
Определяет доступность ESB заглушек |
mock.cloud.toggling.metricsEnable |
|
Необходимо переопределить, если нужно отключить REST-endpoint с метриками |
Определяет доступность REST-endpoint с метриками |
mock.cloud.toggling.metricsCronEnable |
|
Необходимо переопределить, если нужно включить обновление cron метрик |
Включает/выключает обновления cron метрик |
mock.cloud.toggling.memoryThresholdEnable |
|
Необходимо переопределить, если нужно отключить проверку превышения порога свободной оперативной памяти |
Включает/выключает проверку превышения порога свободной оперативной памяти |
mock.cloud.toggling.elkAuditEnable |
|
Необходимо переопределить, если нужно отправлять сообщения в ELK-аудит |
Включает/выключает отправку сообщений в ELK-аудит |
mock.cloud.toggling.cleanupCronEnable |
|
Необходимо переопределить, если нужно отключить очистку истории вызовов эмуляции |
Включает/выключает задачи по очистке истории вызова эмуляций |
mock.cloud.toggling.publicProjectsEnable |
|
Необходимо переопределить, если нужно отключить публичные проекты |
Включает/выключает публичные проекты |
mock.cloud.toggling.use-artemis-mq |
|
Необходимо переопределить, если ESB транспорт не будет использовать ActiveMQ Artemis |
Включает конфигурацию ESB транспорта для работы с ActiveMQ Artemis. |
matomo.url |
- |
Необходимо переопределить, если нужно отслеживать действия с помощью Matomo |
Адрес сервера Matomo |
matomo.siteId |
- |
Необходимо переопределить, если нужно отслеживать действия с помощью Matomo |
Идентификатор сайта, который будет отслеживаться с помощью Matomo |
matomo.clientTrackerName |
|
Необходимо переопределить в соответствии с названием файла в Matomo |
Файл, который хранит действия по отправке данных в Matomo |
matomo.serverTrackerName |
|
Необходимо переопределить в соответствии с названием файла в Matomo |
Файл с обработкой запросов от клиента |
matomo.enabled |
|
Необходимо переопределить, если нужно указать доступность Matomo |
Определяет доступность Matomo |
cleanup.maxInRestCallHistory |
|
Необходимо переопределить, если нужно изменить максимально допустимое кол-во хранимых записей в истории вызовов REST-эмуляций |
Максимально допустимое количество записей в истории вызовов REST-эмуляций |
cleanup.maxInMmtCallHistory |
|
Необходимо переопределить, если нужно изменить максимально допустимое кол-во хранимых записей в истории вызовов MMT-эмуляций |
Максимально допустимое количество записей в истории вызовов MMT-эмуляций |
cleanup.maxInEsbCallHistory |
|
Необходимо переопределить, если нужно изменить максимально допустимое количество хранимых записей в истории вызовов ESB-эмуляций |
Максимально допустимое количество записей в истории вызовов ESB-эмуляций |
cron.cleanupEmulationCallHistory |
0 0/10 * * * ? |
Необходимо переопределить, если нужно изменить интервал между вызовами задачи, которая очищает историю вызовов эмуляций |
Интервал вызова задачи по очистке истории вызовов эмуляций |
mock.cloud.ibm-broker.host |
- |
Обязательно должно быть задано |
IP-адрес хоста, на котором MQ ожидает подключения клиентов. (В текущей версии продукта не используется.) |
mock.cloud.ibm-broker.port |
- |
Обязательно должно быть задано |
Порт, на котором MQ ожидает подключения клиентов. (В текущей версии продукта не используется.) |
mock.cloud.ibm-broker.queue-manager-name |
- |
Обязательно должно быть задано |
Имя менеджера очередей для подключения. (В текущей версии продукта не используется.) |
mock.cloud.ibm-broker.chanel-name |
- |
Обязательно должно быть задано |
Имя канала для подключения. (В текущей версии продукта не используется.) |
mock.cloud.ibm-broker.rest-username |
- |
Обязательно должно быть задано |
Имя пользователя для подключения к REST-сервису брокера MQ. (В текущей версии продукта не используется.) |
mock.cloud.ibm-broker.rest-secret |
- |
Обязательно должно быть задано |
Пароль для подключения к REST-сервису брокера MQ. (В текущей версии продукта не используется.) |
mock.cloud.keycloak.url |
- |
Обязательно должно быть задано |
Адрес Keycloak |
mock.cloud.keycloak.token-url |
- |
Необходимо задать, если изменился адрес сервиса получения пользователей |
Адрес сервиса аутентификации Keycloak |
mock.cloud.keycloak.users-url |
- |
Необходимо задать, если изменился адрес сервиса получения пользователей |
Адрес сервиса получения списка пользователей Keycloak |
mock.cloud.keycloak.client-id |
- |
Обязательно должно быть задано |
Идентификатор клиента в сервисе аутентификации |
mock.cloud.keycloak.client-secret |
- |
Нет |
Параметр аутентификации |
mock.cloud.keycloak.oauth-client-id |
|
Нет |
Идентификатор OAuth клиента в сервисе аутентификации Keycloak |
mock.cloud.keycloak.oauth-client-secret |
- |
Да |
Параметр аутентификации OAuth клиента client_secret из Keycloak |
spring.kafka.bootstrap-servers |
|
Обязательно должно быть задано |
Параметры соединения с кластером Kafka (список значений |
kafka.num-partitions |
|
Обязательно должно быть задано |
Количество разделов в создаваемых Kafka topics |
kafka.consumer.auto-offset-reset |
|
Нет |
Настройка смещения диапазона |
kafka.consumer.enable-auto-commit |
|
Нет |
Указывает, нужно ли периодически фиксировать смещения потребителя |
kafka.consumer.max-poll-records |
|
Нет |
Максимальное количество записей, возвращаемых при одном вызове |
mock.cloud.index |
- |
Да |
Уникальный целочисленный индекс приложения. Если был указан неуникальный индекс для разных экземпляров приложения, корректная работа приложения не гарантируется. Если приложение найдет в Eureka service registry другое приложение с таким же индексом, оно автоматически завершится. |
mock.cloud.transport-manager-connection-try |
|
Нет |
Количество попыток поиска сервиса в Eureka service registry |
mock.cloud.transport-manager-connection-wait |
|
Нет |
Временной интервал между попытками поиска сервиса в Eureka service registry в миллисекундах |
mock.cloud.transport-manager-process-respawn-interval |
|
Нет |
Временной интервал между попытками повторного перезапуска процесса транспортного приложения в миллисекундах |
mock.cloud.transport-manager-process-terminate-await |
|
Нет |
Временной интервал ожидания остановки процесса транспортного приложения при перезапуске в миллисекундах |
mock.cloud.transport-manager-memory-threshold |
- |
Пороговое значение свободной физической памяти на сервере в мегабайтах. Должно выбираться в зависимости от общего количества памяти на сервере. Если оно превышено, новые процессы с транспортными приложениями не будут порождаться. |
|
mock.cloud.transport-manager-should-redirect-output |
|
Нет |
Включает/выключает вывод логов транспортных приложений в stdout, stderr после их запуска. Данный флаг может быть полезен для локальной отладки приложения. |
mock.transport-manager.esb-properties.use-artemis-mq |
Нет |
Да, если необходимо включить конфигурацию ActiveMQ Artemis |
Включает конфигурацию ESB транспорта для работы с ActiveMQ Artemis. |
mock.cloud.healthcheck.nexus |
|
Если известно, что Nexus недоступен, установите значение |
Определяет необходимость проверки доступности при старте приложения. Необходим для проверки корректности настроек доступа к Docker-nexus и доступности самого Docker-nexus. |
mock.cloud.healthcheck.transport-jar |
|
Нет |
Определяет необходимость проверки наличия jar-файлов транспортных приложений |
mock.cloud.healthcheck.ibm-mq |
|
Нет |
Определяет необходимость проверки доступности REST-сервиса брокера ActiveMQ Artemis. (В текущей версии продукта не используется.) |
mock.cloud.healthcheck.meta-tech-acc |
|
Если приложение должно быть развернуто без МЕТА, установите значение |
Определяет необходимость проверки работы ТУЗ (OAuth client) для доступа к МЕТА. Необходим для проверки возможности получения токена с использованием ТУЗ. |
mock.cloud.meta.mock-url |
|
Если нужно изменить адрес сервиса эмуляций API для интеграционного тестирования в реестре метаданных об объектах проектирования и разработки |
Ссылка на отфильтрованные эмуляции по заданным параметрам ( |
mock.cloud.artemis.host |
|
Да, если адрес ActiveMQ Artemis отличается |
ActiveMQ Artemis хост |
mock.cloud.artemis.port |
|
Да, если порт брокера ActiveMQ Artemis отличается |
Порт брокера ActiveMQ Artemis |
mock.cloud.artemis.login |
|
Да, если для доступа к брокеру ActiveMQ Artemis используется другой пользователь |
Имя пользователя, у которого есть доступ к брокеру ActiveMQ Artemis |
mock.cloud.artemis.password |
нет |
Да |
Пароль пользователя, у которого есть доступ к брокеру ActiveMQ Artemis |
Примечание
* Здесь и далее используемые в названиях параметров и переменных сокращения «meta» или «meta_mock» являются ранее употребляемыми названиями сервиса AMCS (SberMock) и применимы для установки компонента AMCS в текущей версии продукта.
Чек-лист переменных для Mock-audit-app#
Переменная |
Значение по умолчанию |
Необходимость переопределения |
Описание |
|---|---|---|---|
db.server |
- |
Да |
IP-адрес сервера PostgreSQL |
db.port |
- |
Да |
Порт, по которому будет доступна PostgreSQL |
db.instance |
- |
Да |
Имя базы данных |
db.schema |
- |
Да |
Имя схемы базы данных приложения |
db.user |
- |
Да |
Имя пользователя базы данных приложения |
db.password |
- |
Да |
Пароль для подключения приложения к базе данных |
eureka.client.serviceUrl.defaultZone |
|
Да |
Адреса подключения к сервису Eureka, разделенные запятыми без пробелов (например, |
spring.kafka.bootstrap-servers |
|
Обязательно должно быть задано |
Параметры соединения с кластером Kafka (список значений |
kafka.num-partitions |
|
Обязательно должно быть задано |
Количество разделов в создаваемых топиках Kafka |
meta.auth.user-cache-size |
|
Обязательно должно быть задано |
Количество пользователей, время входа которых хранится в кэше перед отправкой в базу данных МЕТА |
Чек-лист переменных для Eureka-server-app#
Переменная |
Значение по умолчанию |
Необходимость переопределения |
Описание |
|---|---|---|---|
server.port |
|
Нет |
Порт, по которому будет доступен сервис Eureka |
Чек-лист работ по установке#
Примечание
Заполнение чек-листа во время установки обязательно.
Шаг |
Дата/Время выполнения |
Результат выполнения * |
Описание ошибки ** |
Скриншот (приложить как файл) |
Логи (приложить как файл) |
|---|---|---|---|---|---|
Создание резервной копии |
[ ] Успех |
||||
Конфигурирование PostgreSQL |
[ ] Успех |
||||
Создание БД PostgreSQL |
[ ] Успех |
||||
Конфигурирование сервера приложений JVM |
[ ] Успех |
||||
Конфигурирование Nginx |
[ ] Успех |
||||
Перезагрузка серверов приложений |
[ ] Успех |
||||
Сбор и передача логов |
[ ] Успех |
* - обязательно для заполнения
** - обязательно для заполнения в случае ошибки
Подготовка дистрибутива#
Перед инсталляцией mock, необходимо подготовить(выполнить слияние разделенного дистрибутива) дистрибутив программного продукта и выгрузить его в репозиторий для дальнейшей инсталляции.
Подготовить дистрибутив можно одним из способов:
С помощью автоматизированных job Solution pipeline.
В ручную с помощью скриптов слияния, поставляемых с дистрибутивом(amcs-deploy)
Подготовка дистрибутива с помощью Solution pipeline#
Запустите Jenkins job для объединения разделенного Solution(solution-merger). Как настроить Job можно посмотреть по ссылке: Видео Как настроить job Solution merger Пример конфигурации можно посмотреть в файле merger.yml.
Запустите Jenkins job для раскладки компонентов Solution(solution-unpacker). Как настроить Job можно посмотреть по ссылке: Видео Как настроить job Solution unpacker Пример конфигурации можно посмотреть в файле environment.yml.
После работы job, проверьте наличие файла amcs-bin--{VERSION}--distrib.zip в Nexus, для последующей инсталляции.
Ручная подготовка дистрибутива#
Скачайте дистрибутив _amc-{VERSION}distrib.zip.
Разархивируйте его в отдельную папку. В папке появятся два архива с программным продуктом и сторонними зависимостями: amc-{VERSION}-party-distrib.zip и amc-{VERSION}-owned-distrib.zip.
Распакуйте архив amc-{VERSION}-owned-distrib.zip и перейдите в распакованную директорию amc-{VERSION}-owned-distrib.
Распакуйте архив amcs-merger-{VERSION}-distrib.zip в директорию amcs-merger-{VERSION}-distrib(либо в любую другую).
Скопируйте файл Report.json из текущей директории(amc-{VERSION}-owned-distrib) в директорию amcs-merger-{VERSION}-distrib.
Перейдите в директорию amcs-merger-{VERSION}-distrib, сконфигурируйте и запустите следующий скрипт:
${PATH_TO_GROOVY_BIN}/groovy -cp ./src merge.groovy --report ./Report.json {PATH_TO_FILE}/amc-{VERSION}-party-distrib.zip {PATH_TO_FILE}/amc-{VERSION}-owned-distrib.zip
Результатом работы будет новый архив в корне директории amcs-merger-{VERSION}-distrib: owned.zip. 7. Распакуйте полученный архив owned.zip. 8. Перейдите в распакованную директорию и выложите архив amcs-bin-{VERSION}-distrib.zip в Nexus для последующей инсталляции на стенд.
Установка сертификатов для эмуляций#
Для работы https вызовов из groovy скриптов эмуляций, необходимо установить сертификаты.
Получите у уполномоченных лиц следующие PEM-сертификаты и разместите их в директории /var/cert/ на целевой сервер {MOCK-APP} для последующего запуска. Список сертификатов:
/var/cert/client.pem
/var/cert/certsCollection.pem
/var/cert/client_private_key.pem
Установка и настройка ФП Авторизации и Аутентификации#
Целевой продукт используемый как ФП Авторизации и Аутентификации является Keycloak.
Установите Keycloak версии 9.0.3+.
Войдите в консоль администратора Keycloak.
Нажмите кнопку Add realm и импортируйте файл sbermock-realm.json.
Установка и настройка Kafka и Zookeeper#
Установите Kafka и Zookeeper в директорию /var/kafka или любую другую.
Сконфигурируйте Kafka следующим образом, внеся изменения в файл {KAFKA_DIR}/config/server.properties:
zookeeper.connect={kafka_host_ip}:2181
advertised.host.name={kafka_host_ip}
advertised.listeners=PLAINTEXT://{kafka_host_ip}:9092
auto.create.topics.enable=true
Запустите Zookeeper:
$ ./bin/zookeeper-server-start.sh config/zookeeper.properties
Запустите Kafka:
$ ./bin/kafka-server-start.sh config/server.properties
Установка и настройка External-Kafka и External-Zookeeper#
Установите External-Kafka и External-Zookeeper в директорию /var/kafka или любую другую.
Скопируйте файл kafka_server_jaas.conf на сервер и укажите необходимые данные. При этом постфикс
XXXв ключеuser_XXXдолжен соответствовать значению username.Сконфигурируйте Zookeeper следующим образом, внеся изменения в файл {KAFKA_DIR}/config/zookeeper.properties:
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
добавить jaas-файл с логином и паролем для zookeeper пример файла
Сконфигурируйте Kafka следующим образом, внеся изменения в файл {KAFKA_DIR}/config/server.properties:
zookeeper.connect={kafka_host_ip}:2181
zookeeper.set.acl=true
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
allow.everyone.if.no.acl.found=true
auto.create.topics.enable=false
super.users=User:kafka
listeners=SASL_PLAINTEXT://:9093,PLAINTEXT://:9092
advertised.listeners=SASL_PLAINTEXT://{kafka_host_ip}:9093,PLAINTEXT://{kafka_host_ip}:9092
Запустите Zookeeper, указав путь к zookeeper_jaas.conf в переменной KAFKA_OPTS:
$ export KAFKA_OPTS="-Djava.security.auth.login.config=/etc/zookeeper/zookeeper_jaas.conf"
$ ./bin/zookeeper-server-start.sh config/zookeeper.properties
Запустите Kafka, указав путь к kafka_server_jaas.conf в переменной KAFKA_OPTS:
$ export KAFKA_OPTS="-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf"
$ ./bin/kafka-server-start.sh config/server.properties
Установка и настройка ActiveMQ Artemis#
Установите ActiveMQ Artemis версии 2.19.1 и выше.
Добавьте пользователя для управления очередями через экземпляр AMCS, сконфигурировав файл artemis-users.properties:
userName = passwordДобавьте роль для пользователя, сконфигурировав файл artemis-roles.properties:
roleName = userNameСконфигурируйте файл broker.xml:
... <security-settings> <security-setting match="#"> <permission type="createNonDurableQueue" roles="amq,roleName"/> <permission type="deleteNonDurableQueue" roles="amq,roleName"/> <permission type="createDurableQueue" roles="amq,roleName"/> <permission type="deleteDurableQueue" roles="amq,roleName"/> <permission type="createAddress" roles="amq,roleName"/> <permission type="deleteAddress" roles="amq,roleName"/> <permission type="consume" roles="amq,roleName"/> <permission type="browse" roles="amq,roleName"/> <permission type="send" roles="amq,roleName"/> <!-- we need this otherwise ./artemis data imp wouldn't work --> <permission type="manage" roles="amq"/> </security-setting> </security-settings> <address-settings> ... <address-setting match="#"> ... <auto-create-queues>false</auto-create-queues> <auto-create-addresses>true</auto-create-addresses> <auto-delete-queues>false</auto-delete-queues> <auto-delete-addresses>false</auto-delete-addresses> </address-setting> </address-settings> ...Запустите брокер.
Проверьте запуск брокера, перейдя в консоль администратора по адресу http://<ARTEMIS_HOST>:8161/console.
Дополнительно:
В случае если консоль администратора по адресу http://<ARTEMIS_HOST>:8161/console не доступна, но при этом сервис запущен, проверьте следующие настройки:
bootstrap.xml:
...
<!-- The web server is only bound to localhost by default -->
<web bind="http://0.0.0.0:8161" path="web">
<app url="activemq-branding" war="activemq-branding.war"/>
<app url="artemis-plugin" war="artemis-plugin.war"/>
<app url="console" war="console.war"/>
</web>
...
jolokia-access.xml:
...
<cors>
<!-- Allow cross origin access from localhost ... -->
<allow-origin>*</allow-origin>
<!-- Options from this point on are auto-generated by Create.java from the Artemis CLI -->
<!-- Check for the proper origin on the server side, too -->
<strict-checking/>
</cors>
...
Установка Nginx#
Выполните следующие шаги для конфигурирования Nginx.
Выполните стандартную установку Nginx в директорию <NGINX_INSTALL>. Дополнительная информация представлена в официальной документации Nginx.
Разместите сертификат и файл ключа certificate.crt, privateKey.key в директорию /etc/nginx/ssl.
Сконфигурируйте файл <NGINX_INSTALL>/nginx.conf. Пример конфигурации: пример файла.
Сконфигурируйте файл <NGINX_INSTALL>/upstreams.conf. Пример конфигурации: пример файла.
Замените значения <MOCK_APP_IP_*> в файле upstreams.conf на соответствующие вашей конфигурации стенда. При кластерной конфигурации Mock необходимо указать все сервера Mock в файле upstreams.conf.
Установка Nginx Mono-rest#
Выполните следующие шаги для конфигурирования Nginx mono-rest, предназначенный для вызова REST-заглушек.
Выполните стандартную установку Nginx в директорию <NGINX_INSTALL>. Дополнительная информация представлена в официальной документации Nginx.
Разместите сертификат и файл ключа certificate.crt, privateKey.key в директорию /etc/nginx/ssl.
Сконфигурируйте файл <NGINX_INSTALL>/nginx.conf. Пример конфигурации: пример файла.
Сконфигурируйте файл <NGINX_INSTALL>/upstreams.conf. Пример конфигурации: пример файла.
Замените значение переменной <MOCK_APP_IP> в файле upstreams.conf на соответствующее вашей конфигурации стенда. При кластерной конфигурации Mock необходимо указать все сервера Mock в файле upstreams.conf.
Установка PostgreSQL#
Информация о версии PostgreSQL: PostgreSQL 11.14 (PostgreSQL Sber Edition 5.1.0) on x86_64-pc-linux-gnu, compiled by x86_64-alt-linux-gcc (GCC) 8.4.1 20200305 (ALT p9 8.4.1-alt0.p91), 64-bit.
Выполните следующие шаги для конфигурирования PostgreSQL:
Выполните стандартную установку PostgreSQL. Дополнительная информация представлена в официальной документации PostgreSQL.
-$su– -#systemctl edit postgresql - 11.14.service - [Service] - Environment = PGDATA = < DB_INSTALL > // Директория размещения файлов экземпляра БД -#/usr/pgsql - 11.14 / bin / postgresql11.14 - setup initdbРазрешите обращение к серверу БД со всех IP-адресов (опционально):
Внесите в файл <DB_INSTALL>/pg_hba.conf значение
host all all all md5.Внесите в файл <DB_INSTALL>/postgresql.conf следующие строки:
- listen_addresses ='*' - port = 5432 - shared_preload_libraries = -'auto_explain,pg_stat_statements' -#$libdir/passwordcheckДля применения изменений перезапустите службу PostgreSQL с помощью следующей команды:
<DB_BIN>/pg_ctl restart -D <DB_INSTALL>Выполните запуск приложений и инициализацию базы данных вручную или через скрипты развертывания для Jenkins.
Установка Mock при помощи скриптов развертывания#
Подготовка скриптов развертывания#
Перед началом работы со скриптами развертывания убедитесь в наличии рабочего Jenkins с подключенным Ansible плагином.
Распакуйте содержимое zip-архива amcs-deploy-{VERSION}-distrib.zip (находится в owned архиве поставляемого дистрибутива) в удобную директорию. Данный архив содержит скрипты развертывания.
Создайте репозиторий в Git (или аналоге) и перенесите в него скрипты.
Замените значения указанных переменных соответствующими вашим КТС в файле hosts:
<MOCK_DB_IP>: IP сервера базы данных
<MOCK_APP_IP_*>: IP серверов Java приложений Mock
<EUREKA_IP_*>: IP серверов Eureka.
<NGINX_UI_IP_*>: IP серверов Nginx UI (mock-front)
<KAFKA_IP_*>: IP серверов Kafka
<EXT_KAFKA_IP_*>: IP серверов External-Kafka
<KEYCLOAK_URL>: полный адрес сервера Keycloak
<MQ_IP>: IP сервера ActiveMQ Artemis
<NEXUS_URL>: Ссылка на репозиторий в Nexus, для интеграции с Nexus
Внесите изменения в файл group_vars/dzo_DEV_Mock/mock.yml:
DNS: 190 ZONE_NAME: ".<ZONE_NAME>" DNS: 269 ZONE_NAME: ".<ZONE_NAME>" HOST: "<NGINX_UI_IP>"Замените значение <ZONE_NAME> на соответствующую запись в DNS (при наличии) для REST-заглушек (слева указаны номера строк в файле). Замените значение <NGINX_UI_IP> на соответствующий адрес сервера Nginx UI (слева указаны номера строк в файле).
Внесите изменения в файл group_vars/dzo_DEV_Mock/pwd.yml (обратите внимание: наименование логинов должно быть в нижнем регистре):
# TUZ DEV - используется для приложений MOCK интеграции с NEXUS mock_apps_tuzdev_nexus_user: "<NEXUS_TUZ>" mock_apps_tuzdev_nexus_pwd: "<NEXUS_TUZ_PWD>" # PSQL USERS psql_users_mock_keycloak_user: "<PSQL_KEYCLOAK_USER>" # произвольный пользователь-keycloak базы данных psql_users_mock_keycloak_user_pwd: "<PSQL_KEYCLOAK_USER_PWD>" psql_users_mock_user_pwd: "<PSQL_MOCK_USER_PWD>" # произвольный пароль для пользователя meta_mock psql_users_mock_admin: "<PSQL_MOCK_ADMIN_USER>" # произвольный пользователь-администратор базы данных psql_users_mock_admin_pwd: "<PSQL_MOCK_ADMIN_USER_PWD>" # KAFKA mock_extkafka_user: "<EXT_KAFKA_USER>" mock_extkafka_pwd: "<EXT_KAFKA_PWD>" # MQ mock_mq_user: "<MQ_USER>" mock_mq_pwd: "<MQ_PWD>"Опционально:
# GIT Для выгрузки эмуляций в GIT репозиторий mock_git_username: "***" mock_git_secret: "***"Замените значения <SOME_PARAMS> на соответствующее вашей конфигурации. Обратите внимание, что значения с <SOME_PARAMS> регистрозависимы.
Замените значение <NEXUS_TUZ> на соответствующую ТУЗ для интеграции с Nexus. Замените значение <EXT_KAFKA_USER> и <EXT_KAFKA_PWD> на соответствующее вашей конфигурации (super.user) External-Kafka. Замените значение <MQ_USER> и <MQ_PWD> на данные пользователя, который был создан/добавлен на шаге конфигурации ActiveMQ Artemis.Опционально: зашифруйте данные файлы, используя Ansible_Vault.
Внесите изменения в файлы host_vars/dzo_devmock_***_mock/vars.yml:
ansible_ssh_user: "***" ansible_ssh_pass: "***"Введите данные пользователя для доступа по SSH к соответствующим КТС. IP-адреса были ранее сконфигурированы в файле hosts.
Опционально: зашифруйте данные файлы, используя Ansible_Vault.
Опционально: При необходимости изменить параметры в файле group_vars/all/general.yml:
pg_os_user: "***" pg_os_group: "***"
Указания по работе с профилями приложения#
Mock имеет несколько профилей запуска приложения, указанные в переменной spring_profiles_active в файле hosts на КТС.
Профили указываются через запятую и по умолчанию имеют значение:
dev,cloud,outer
Так же при необходимости можно сконфигурировать приложение, дополнительно указав еще профили. Указываются через запятую после профилей по умолчанию.
Описание доступных профилей:
outer: Профиль для внешних организаций(заказчиков)
devops: Указать при интеграции с Devops portal
Пример конфигурации:
dev,cloud,outer,devops
Дополнительная подготовка скриптов для кластерной конфигурации(опционально)#
При использовании кластерной конфигурации Mock или СПО необходимо дополнительно настроить скрипты следующим образом:
Подготовка скриптов для кластерной конфигурации MOCK#
Добавить описание всех серверов приложений Eureka, Mock и Nginx(при необходимости) в файле hosts. Название хостов должно соответствовать паттерну уже существующих записей. Пример конфигурации:
# Кластер Eureka
dzo_devmock_d_sbermock_eureka_01_eureka_oc_mock ansible_host=<EUREKA_IP_1> ansible_ssh_host=<EUREKA_IP_1>
dzo_devmock_d_sbermock_eureka_02_eureka_oc_mock ansible_host=<EUREKA_IP_2> ansible_ssh_host=<EUREKA_IP_2>
# Кластер Mock
dzo_devmock_d_sbermock_mock_01_app_node_oc_mock ansible_host=<MOCK_APP_IP_1> ansible_ssh_host=<MOCK_APP_IP_1> mock_cloud_index=1
dzo_devmock_d_sbermock_mock_02_app_node_oc_mock ansible_host=<MOCK_APP_IP_2> ansible_ssh_host=<MOCK_APP_IP_2> mock_cloud_index=2
# Кластер Nginx
dzo_devmock_d_sbermock_nginx_01_nginx_mock ansible_host=<NGINX_UI_IP_1> ansible_ssh_host=<NGINX_UI_IP_1>
dzo_devmock_d_sbermock_nginx_02_nginx_mock ansible_host=<NGINX_UI_IP_2> ansible_ssh_host=<NGINX_UI_IP_2>
# Пример кластерной конфигурации BASIC-PROXY. Хосты указываются через запятую
proxy_hosts=<MOCK_APP_IP_1>,<MOCK_APP_IP_2>
# Пример кластерной конфигурации EUREKA:
eureka_instance_name_host1=<EUREKA_IP_1>
eureka_instance_name_host2=<EUREKA_IP_2>
Далее необходимо добавить информацию с пользователями для доступа к КТС по ssh.
Создайте новую директорию соответствующую названию КТС(из конфига выше) в директории host_vars/{Название КТС} (например dzo_devmock_d_sbermock_eureka_02_eureka_oc_mock). Название директорий должно соответствовать текущим паттернам уже созданных директорий.
Создайте в новой директории файл vars.yml и внесите туда данные пользователя(с правами sudo) для доступа по SSH. Пример файла:
ansible_ssh_user: "***"
ansible_ssh_pass: "***"
Подготовка скриптов для кластерной конфигурации СПО#
При использовании кластерной конфигурации СПО необходимо указать их IP в файле hosts:
# Пример кластерной конфигурации KAFKA:
kafka_host1=<KAFKA_IP_1>
kafka_host2=<KAFKA_IP_2>
#Пример кластерной конфигурации EXT_KAFKA:
ext_kafka_host1=<EXT_KAFKA_IP_1>
ext_kafka_host2=<EXT_KAFKA_IP_2>
# Пример кластерной конфигурации ELK_KAFKA:
elk_kafka_host1=<KAFKA_IP_1>
elk_kafka_host2=<KAFKA_IP_2>
Далее, в зависимости от вашей конфигурации СПО, необходимо внести изменения в файл group_vars/dzo_DEV_Mock/mock.yml. Ниже приведен пример для двух нодовой конфигурации:
MOCK:
KAFKA:
SERVERS: "{{kafka_host1}}:9092,{{kafka_host2}}:9092" # Указать через запятую все сервера Kafka.
EXTKAFKA:
REPLICATION_FACTOR: "2" # Указать кол-во серверов Ext_Kafka
SASL: "{{ext_kafka_host1}}:9093,{{ext_kafka_host2}}:9093" # Указать через запятую все сервера Ext_Kafka.
PLAIN: "{{ext_kafka_host1}}:9092,{{ext_kafka_host2}}:9092" # Указать через запятую все сервера Ext_Kafka.
EUREKA:
SERVERS: "http://{{eureka_instance_name_host1}}:8761/eureka,http://{{eureka_instance_name_host2}}:8761/eureka" # Указать через запятую все сервера Eureka.
AUDITELK:
ELK_KAFKA:
SERVERS: "{{elk_kafka_host1}}:9092,{{elk_kafka_host2}}:9092" # Указать через запятую все сервера Elk_Kafka.
Сделайте commit и push в репозиторий.
Создание Jenkins Pipeline#
Перейдите в рабочую директорию Jenkins и добавьте новую Job типа Pipeline.
Укажите путь к репозиторию со скриптами развертывания и учетную запись для доступа к репозиторию:
Pipeline->Definition->Pipeline script from SCM->GIT->RepositoriesУкажите ветку для репозитория со скриптами развертывания(например */master):
Pipeline->Definition->Pipeline script from SCM->GIT->Branches to buildУкажите файл deploy.groovy для запуска (в данном файле необходимо обратить внимание на наименование агента, с помощью которого будет производиться сборка):
Pipeline->Definition->Script PathЗапустите Job (собрать сейчас), дождитесь окончания и перезагрузите страницу. Job создана и автоматически конфигурирована.
Инициализация PostgreSQL#
Запустите подготовленный выше Jenkins Pipeline, нажав кнопку Собрать с параметрами.
Выставите параметры:
VERSION:версия дистрибутива(например SP-2.29.0)STEND:dzo_DEV_MockTAGS:DB
Нажмите кнопку Собрать.
В результате выполнения в PostgreSQL должны создаться необходимые БД, пользователи и привилегии.
Первичная настройка КТС#
Запустите подготовленный выше Jenkins Pipeline, нажав кнопку Собрать с параметрами.
Выставите параметры:
VERSION:версия дистрибутива(например SP-2.29.0)STEND:dzo_DEV_MockTAGS:SERVICE
Нажмите кнопку Собрать.
В результате выполнения будут установлено необходимое ПО на КТС и созданы сервисы для дальнейшего запуска MOCK app.
Установка MOCK#
Запустите подготовленный выше Jenkins Pipeline, нажав кнопку Собрать с параметрами.
Выставите параметры:
VERSION:версия дистрибутива(например SP-2.29.0)STEND:dzo_DEV_MockTAGS:DEPLOY
Нажмите кнопку Собрать.
В результате выполнения будут развернуты (запущены) все приложения Mock.
Перезапуск MOCK#
В случае необходимости перезапуска mock, выполните следующие действия:
Запустите подготовленный выше Jenkins Pipeline, нажав кнопку Собрать с параметрами.
Выставите параметры:
VERSION:версия дистрибутива(например SP-2.29.0)STEND:dzo_DEV_MockTAGS:RESTART
Нажмите кнопку Собрать.
Ручная установка#
Инициализация PostgreSQL#
Выполните следующие шаги для создания БД PostgreSQL.
Примечание
Все команды необходимо выполнять от имени postgres:
$su postgres;При необходимости введите пароль.
Выполните команду
$psql.Создайте базу данных:
create role meta_mock_owner; create user meta_mock_admin login password 'db.owner-password' in role meta_mock_owner; create database metamockdb owner meta_mock_owner encoding 'UTF-8'; create role mock_cloud_app; create user meta_mock login password' db.password ' in role mock_cloud_app;Создайте схему mock:
create schema meta_mock authorization meta_mock_admin; GRANT CONNECT ON DATABASE metamockdb TO meta_mock; GRANT USAGE ON SCHEMA meta_mock to mock_cloud_app; ALTER USER meta_mock_admin SET search_path = meta_mock, public; ALTER USER meta_mock SET search_path = meta_mock;Выполните команду
\qдля выхода из PSQL.Для применения изменений перезапустите службу PSQL:
- <DB_BIN>/pg_ctl restart -D <DB_INSTALL>
Установка сервера приложений JVM#
Выполните следующие шаги для конфигурирования сервера приложений JVM.
Установите Java в соответствии с требованиями к аппаратным ресурсам среды. Пример команды:
-$su- #yum install - y java - 1.8.0 - openjdk.x86_64Проверьте версию, используя следующую команду:
- java -versionСоздайте пользователя <USER_JVM> или используйте существующего.
Создайте директорию для установки Mock:
sudo mkdir <MOCK_INSTALL>;Выдайте пользователям необходимые привилегии:
sudo chown-R <USER_JVM>:<USER_JVM> <MOCK_INSTALL> // Перейдите в директорию <MOCK_INSTALL>
Установка сервиса запуска приложений#
Перенесите архив mock-front на Nginx UI сервер для дальнейшей распаковки и установки.
Перенесите jar файлы из архива pvwmct-SP-{VERSION}-owned-distrib/package/bh на целевой сервер для последующего запуска.
Выполните следующие шаги для создания сервиса запуска приложений.
Создайте следующие файлы в директории /etc/systemd/system/:
eureka.service
mock-basic-proxy.service
mock-audit-elk.service
mock-core-app.service
mock_transport-manager.service
mock-cloud.service
Отредактируйте файлы следующим образом:
eureka.service
[Unit] Description={{MOCK.EUREKA.NAME}} After=syslog.target [Service] User={{ansible_ssh_user}} Group={{ansible_ssh_user}} Type=simple ExecStart=/usr/bin/java -Xmx128m -Xms128m -XX:+UseParallelGC \ -DlogDir={{MOCK.EUREKA.LOG}} \ -Deureka.instance.hostname={{ansible_host}} \ -Deureka.client.serviceUrl.defaultZone=http://{{eureka_instance_name_host1}}:{{MOCK.EUREKA.PORT}}/eureka \ -jar {{MOCK.EUREKA.DIR}}/{{MOCK.EUREKA.NAME}}.jar [Install] WantedBy=multi-user.targetmock-basic-proxy.service
[Unit] Description={{MOCK.BASICPROXY.NAME}} After=syslog.target [Service] User={{ansible_ssh_user}} Group={{ansible_ssh_user}} Type=simple ExecStart=/usr/bin/java\ DlogDir={{MOCK.BASICPROXY.LOG}} \ -Dsbermock.proxy.refreshTokenEnable={{MOCK.BASICPROXY.PROXY.REFRESH_TOKEN_ENABLE}} \ -Dkeycloak.realm={{MOCK.BASICPROXY.KEYCLOAK.REALM}}\ -Dkeycloak.username={{MOCK.BASICPROXY.KEYCLOAK.USER_NAME}} \ -Dkeycloak.password={{MOCK.BASICPROXY.KEYCLOAK.USER_PWD}} \ -Dkeycloak.client-secret={{MOCK.BASICPROXY.KEYCLOAK.CLIENT_SECRET}} \ -Dsbermock.proxy.realm={{MOCK.BASICPROXY.PROXY.REALM}} \ -Dsbermock.proxy.gui-client-id={{MOCK.BASICPROXY.PROXY.GUI_CLIENT_ID}} \ -Dsbermock.proxy.gui-client-secret={{MOCK.BASICPROXY.PROXY.GUI_CLIENT_SECRET}} \ -Dsbermock.proxy.token-minimum-lifetime={{MOCK.BASICPROXY.PROXY.TOKEN_MINIMUM_LIFETIME}} \ -Deureka.client.serviceUrl.defaultZone=http://{{eureka_instance_name_host1}}:{{MOCK.EUREKA.PORT}}/eureka \ -Dsbermock.proxy.keycloak-server={{mock_keycloak_url}}:{{MOCK.BASICPROXY.KEYCLOAK.PORT}} \ -Dkeycloak.server-Url={{mock_keycloak_url}}:{{MOCK.BASICPROXY.KEYCLOAK.PORT}}/auth\ -Dsbermock.proxy.sbermockUrl={{proxy_nginx_cloud_url}} \ -Dhaselcast.node.ip={{proxy_hosts}} \ -jar {{MOCK.BASICPROXY.DIR}}/{{MOCK.BASICPROXY.NAME}}.jar [Install] WantedBy=multi-user.targetmock-core.service
[Unit] Description={{MOCK.CORE.NAME}} After=syslog.target [Service] User={{ansible_ssh_user}} Group={{ansible_ssh_user}} Type=simple ExecStart=/usr/bin/java\ -Deureka.client.serviceUrl.defaultZone=http://{{eureka_instance_name_host1}}:{{MOCK.EUREKA.PORT}}/eureka \ -DlogDir={{MOCK.CORE.LOG}} \ -Dsbermock.log.enable={{MOCK.CORE.ELK_LOG.ENABLE}} \ -Dsbermock.log.serviceName={{MOCK.CORE.ELK_LOG.SERVICE_NAME}} \ -Dsbermock.log.serviceNodeName={{MOCK.CORE.ELK_LOG.SERVICE_NODE_NAME}} \ -Dsbermock.log.servers={{elk_kafka_host1}}:{{MOCK.AUDITELK.ELK_KAFKA.PORT}} \ -Dsbermock.log.topic={{MOCK.CORE.ELK_LOG.TOPIC}} \ -Dsbermock.log.truststoreLocation={{MOCK.AUDITELK.ELK_KAFKA.TRUST_LOCATION}} \ -Dsbermock.log.truststorePassword={{MOCK.AUDITELK.ELK_KAFKA.TRUST_PASS}} \ -Dsbermock.log.keystoreLocation={{MOCK.AUDITELK.ELK_KAFKA.KEYSTORE_LOCATION}} \ -Dsbermock.log.keystorePassword={{MOCK.AUDITELK.ELK_KAFKA.KEYSTORE_PASS}} \ -Dmock.core.healthcheck.nexus={{MOCK.CORE.HEALTHCHECK.NEXUS}} \ -Dmock.core.nexus.username={{MOCK.CORE.NEXUS.USER}} \ -Dmock.core.nexus.password={{MOCK.CORE.NEXUS.PWD}} \ -Dmock.core.nexus.urls={{MOCK.CORE.NEXUS.URLS}} \ -jar {{MOCK.CORE.DIR}}/{{MOCK.CORE.NAME}}.jar [Install] WantedBy=multi-user.targetmock-transport-manager.service
[Unit] Description={{MOCK.TRANSPORTMANAGER.NAME}} After=syslog.target [Service] User={{ansible_ssh_user}} Group={{ansible_ssh_user}} Type=simple ExecStart=/usr/bin/java\ -Dspring.kafka.bootstrap-servers={{kafka_host1}}:{{MOCK.KAFKA.PORT}} \ -Deureka.client.serviceUrl.defaultZone=http://{{eureka_instance_name_host1}}:{{MOCK.EUREKA.PORT}}/eureka \ -DlogDir={{MOCK.TRANSPORTMANAGER.LOG}} \ -Dsbermock.log.enable={{MOCK.TRANSPORTMANAGER.ELK_LOG.ENABLE}} \ -Dsbermock.log.serviceName={{MOCK.TRANSPORTMANAGER.ELK_LOG.SERVICE_NAME}} \ -Dsbermock.log.serviceNodeName={{MOCK.TRANSPORTMANAGER.ELK_LOG.SERVICE_NODE_NAME}} \ -Dsbermock.log.servers={{elk_kafka_host1}}:{{MOCK.AUDITELK.ELK_KAFKA.PORT}} \ -Dsbermock.log.topic={{MOCK.TRANSPORTMANAGER.ELK_LOG.TOPIC}} \ -Dsbermock.log.truststoreLocation={{MOCK.AUDITELK.ELK_KAFKA.TRUST_LOCATION}} \ -Dsbermock.log.truststorePassword={{MOCK.AUDITELK.ELK_KAFKA.TRUST_PASS}} \ -Dsbermock.log.keystoreLocation={{MOCK.AUDITELK.ELK_KAFKA.KEYSTORE_LOCATION}} \ -Dsbermock.log.keystorePassword={{MOCK.AUDITELK.ELK_KAFKA.KEYSTORE_PASS}} \ -Dmock.transport-manager.kafka-log.rest-log-topic={{MOCK.TRANSPORTMANAGER.ELK_LOG.REST_LOG_TOPIC}} \ -Dmock.transport-manager.kafka-log.rest-log-enable={{MOCK.TRANSPORTMANAGER.ELK_LOG.REST_LOG_ENABLE}} \ -Dmock.transport-manager.kafka-log.kafka-log-topic={{MOCK.TRANSPORTMANAGER.ELK_LOG.KAFKA_LOG_TOPIC}} \ -Dmock.transport-manager.kafka-log.kafka-log-enable={{MOCK.TRANSPORTMANAGER.ELK_LOG.KAFKA_LOG_ENABLE}} \ -Dmock.transport-manager.kafka-log.esb-log-topic={{MOCK.TRANSPORTMANAGER.ELK_LOG.ESB_LOG_TOPIC}} \ -Dmock.transport-manager.kafka-log.esb-log-enable={{MOCK.TRANSPORTMANAGER.ELK_LOG.ESB_LOG_ENABLE}} \ -Dmock.transport-manager.kafka-log.mmt-log-topic={{MOCK.TRANSPORTMANAGER.ELK_LOG.MMT_LOG_TOPIC}} \ -Dmock.transport-manager.kafka-log.mmt-log-enable={{MOCK.TRANSPORTMANAGER.ELK_LOG.MMT_LOG_ENABLE}} \ -Dmock.transport-manager.kafka-log.servers={{elk_kafka_host1}}:{{MOCK.AUDITELK.ELK_KAFKA.PORT}} \ -Dmock.transport-manager.kafka-log.truststore-location={{MOCK.AUDITELK.ELK_KAFKA.TRUST_LOCATION}} \ -Dmock.transport-manager.kafka-log.truststore-password={{MOCK.AUDITELK.ELK_KAFKA.TRUST_PASS}} \ -Dmock.transport-manager.kafka-log.keystore-location={{MOCK.AUDITELK.ELK_KAFKA.KEYSTORE_LOCATION}} \ -Dmock.transport-manager.kafka-log.keystore-password={{MOCK.AUDITELK.ELK_KAFKA.KEYSTORE_PASS}} \ -Dkafka.num-partitions={{MOCK.KAFKA.PARTITIONS}} \ -Dmock.transport-manager.index={{mock_cloud_index}} \ -Dmock.transport-manager.memory-threshold-enabled={{MOCK.CLOUD.TOGGLES.MEMORY_THRESHOLD}} \ -Dmock.transport-manager.dns.zone-name={{MOCK.TRANSPORTMANAGER.DNS.ZONE_NAME}} \ -Dmock.transport-manager.dns.port={{MOCK.TRANSPORTMANAGER.DNS.PORT}} \ -Dmock.transport-manager.nexus.username={{MOCK.TRANSPORTMANAGER.NEXUS.USER}} \ -Dmock.transport-manager.nexus.password={{MOCK.TRANSPORTMANAGER.NEXUS.PWD}} \ -Dmock.transport-manager.nexus.urls={{MOCK.TRANSPORTMANAGER.NEXUS.URLS}} \ -Dmock.transport-manager.transport-path.mmt={{MOCK.TRANSPORTMANAGER.DIR}}/{{MOCK.MMT.NAME_CLOUD}}.jar \ -Dmock.transport-manager.transport-path.rest={{MOCK.TRANSPORTMANAGER.DIR}}/{{MOCK.REST.NAME}}.jar \ -Dmock.transport-manager.transport-path.ibm={{MOCK.TRANSPORTMANAGER.DIR}}/{{MOCK.ESB.NAME_IBM}}.jar \ -Dmock.transport-manager.transport-path.scheduled={{MOCK.TRANSPORTMANAGER.DIR}}/{{MOCK.SCHEDULED.NAME}}.jar \ -Dmock.transport-manager.transport-path.kafka={{MOCK.TRANSPORTMANAGER.DIR}}/{{MOCK.EXTKAFKA.NAME}}.jar \ -Dmock.transport-manager.external-kafka.sasl-listeners={{ext_kafka_host1}}:{{MOCK.EXTKAFKA.SASLPORT}},{{ext_kafka_host2}}:{{MOCK.EXTKAFKA.SASLPORT}},{{ext_kafka_host3}}:{{MOCK.EXTKAFKA.SASLPORT}} \ -Dmock.transport-manager.external-kafka.plain-listeners={{ext_kafka_host1}}:{{MOCK.EXTKAFKA.PLAINPORT}},{{ext_kafka_host2}}:{{MOCK.EXTKAFKA.PLAINPORT}},{{ext_kafka_host3}}:{{MOCK.EXTKAFKA.PLAINPORT}} \ -Dmock.transport-manager.external-kafka.admin-login={{MOCK.EXTKAFKA.USER}} \ -Dmock.transport-manager.external-kafka.admin-password={{MOCK.EXTKAFKA.PWD}} \ -Dmock.transport-manager.external-kafka.num-partitions={{MOCK.EXTKAFKA.PARTITIONS}} \ -Dmock.transport-manager.external-kafka.replication-factor={{MOCK.EXTKAFKA.REPLICATION_FACTOR}} \ -Dmock.transport-manager.external-kafka.container-concurrency={{MOCK.EXTKAFKA.CONTAINER_CONCURRENCY}} \ -jar {{MOCK.TRANSPORTMANAGER.DIR}}/{{MOCK.TRANSPORTMANAGER.NAME}}.jar [Install] WantedBy=multi-user.targetmock-audit-elk.service
[Unit] Description={{MOCK.AUDITELK.NAME}} After=syslog.target [Service] User={{ansible_ssh_user}} Group={{ansible_ssh_user}} Type=simple ExecStart=/usr/bin/java-Xmx128m -Xms128m -XX:+UseParallelGC \ -Dspring.kafka.bootstrap-servers={{kafka_host1}}:{{MOCK.KAFKA.PORT}} \ -Dkafka.num-partitions={{MOCK.KAFKA.PARTITIONS}} \ -DlogDir={{MOCK.AUDITELK.LOG}} \ -Dsbermock.log.enable={{MOCK.AUDITELK.ELK_LOG.ENABLE}} \ -Dsbermock.log.serviceName={{MOCK.AUDITELK.ELK_LOG.SERVICE_NAME}} \ -Dsbermock.log.serviceNodeName={{MOCK.AUDITELK.ELK_LOG.SERVICE_NODE_NAME}} \ -Dsbermock.log.servers={{elk_kafka_host1}}:{{MOCK.AUDITELK.ELK_KAFKA.PORT}} \ -Dsbermock.log.topic={{MOCK.AUDITELK.ELK_LOG.TOPIC}} \ -Dsbermock.log.truststoreLocation={{MOCK.AUDITELK.ELK_KAFKA.TRUST_LOCATION}} \ -Dsbermock.log.truststorePassword={{MOCK.AUDITELK.ELK_KAFKA.TRUST_PASS}} \ -Dsbermock.log.keystoreLocation={{MOCK.AUDITELK.ELK_KAFKA.KEYSTORE_LOCATION}} \ -Dsbermock.log.keystorePassword={{MOCK.AUDITELK.ELK_KAFKA.KEYSTORE_PASS}} \ -Dsbermock.tier={{MOCK.AUDITELK.ELK_KAFKA.TIER}} \ -Dsbermock.audit.kafka.servers={{elk_kafka_host1}}:{{MOCK.AUDITELK.ELK_KAFKA.PORT}} \ -Dsbermock.audit.kafka.topic={{MOCK.AUDITELK.ELK_KAFKA.TOPIC}} \ -Dsbermock.audit.kafka.ssl_enable={{MOCK.AUDITELK.ELK_KAFKA.SSL_ENABLE}} \ -Dsbermock.audit.kafka.truststore.type={{MOCK.AUDITELK.ELK_KAFKA.TRUST_TYPE}} \ -Dsbermock.audit.kafka.truststore.location={{MOCK.AUDITELK.ELK_KAFKA.TRUST_LOCATION}} \ -Dsbermock.audit.kafka.truststore.password={{MOCK.AUDITELK.ELK_KAFKA.TRUST_PASS}} \ -Dsbermock.audit.kafka.keystore.type={{MOCK.AUDITELK.ELK_KAFKA.KEYSTORE_TYPE}} \ -Dsbermock.audit.kafka.keystore.location={{MOCK.AUDITELK.ELK_KAFKA.KEYSTORE_LOCATION}} \ -Dsbermock.audit.kafka.keystore.password={{MOCK.AUDITELK.ELK_KAFKA.KEYSTORE_PASS}} \ -Deureka.client.serviceUrl.defaultZone=http://{{eureka_instance_name_host1}}:{{MOCK.EUREKA.PORT}}/eureka \ -jar {{MOCK.AUDITELK.DIR}}/{{MOCK.AUDITELK.NAME}}.jar [Install] WantedBy=multi-user.targetmock-cloud.service
[Unit] Description={{MOCK.CLOUD.NAME}} After=syslog.target [Service] User={{ansible_ssh_user}} Group={{ansible_ssh_user}} Type=simple ExecStart=/usr/bin/java\ -Dspring.kafka.bootstrap-servers={{kafka_host1}}:{{MOCK.KAFKA.PORT}} \ -Dkafka.num-partitions={{MOCK.KAFKA.PARTITIONS}} \ -DlogDir={{MOCK.CLOUD.LOG}} \ -Dsbermock.log.enable={{MOCK.CLOUD.ELK_LOG.ENABLE}} \ -Dsbermock.log.serviceName={{MOCK.CLOUD.ELK_LOG.SERVICE_NAME}} \ -Dsbermock.log.serviceNodeName={{MOCK.CLOUD.ELK_LOG.SERVICE_NODE_NAME}} \ -Dsbermock.log.servers={{elk_kafka_host1}}:{{MOCK.AUDITELK.ELK_KAFKA.PORT}} \ -Dsbermock.log.topic={{MOCK.CLOUD.ELK_LOG.TOPIC}} \ -Dsbermock.log.truststoreLocation={{MOCK.AUDITELK.ELK_KAFKA.TRUST_LOCATION}} \ -Dsbermock.log.truststorePassword={{MOCK.AUDITELK.ELK_KAFKA.TRUST_PASS}} \ -Dsbermock.log.keystoreLocation={{MOCK.AUDITELK.ELK_KAFKA.KEYSTORE_LOCATION}} \ -Dsbermock.log.keystorePassword={{MOCK.AUDITELK.ELK_KAFKA.KEYSTORE_PASS}} \ -Dspring.profiles.active=dev,cloud,outer \ -Dmock.cloud.meta-host={{metaHubUrl}} \ -Dmock.cloud.hub.meta-url={{metaHubAPIUrl}} \ -Deureka.client.serviceUrl.defaultZone=http://{{eureka_instance_name_host1}}:{{MOCK.EUREKA.PORT}}/eureka \ -Dmock.cloud.healthcheck.nexus={{MOCK.CLOUD.HEALTHCHECK.NEXUS}} \ -Dmock.cloud.healthcheck.transport-jar={{MOCK.CLOUD.HEALTHCHECK.TRANSPORT_JAR}} \ -Dmock.cloud.healthcheck.meta-tech-acc={{MOCK.CLOUD.HEALTHCHECK.META_TECH_ACC}} \ -Dmock.cloud.nexus.username={{MOCK.CLOUD.NEXUS.USER}} \ -Dmock.cloud.nexus.password={{MOCK.CLOUD.NEXUS.PWD}} \ -Dmock.cloud.nexus.urls={{MOCK.CLOUD.NEXUS.URLS}} \ -Dmock.cloud.keycloak.client-secret={{MOCK.CLOUD.KEYCLOAK.MOCK.CLIENT_SECRET}} \ -Dmock.cloud.transport-path.mmt={{MOCK.CLOUD.DIR}}/{{MOCK.MMT.NAME_CLOUD}}.jar \ -Dmock.cloud.transport-path.rest={{MOCK.CLOUD.DIR}}/{{MOCK.REST.NAME}}.jar \ -Dmock.cloud.transport-path.ibm={{MOCK.CLOUD.DIR}}/{{MOCK.ESB.NAME_IBM}}.jar \ -Dmock.cloud.transport-path.scheduled={{MOCK.CLOUD.DIR}}/{{MOCK.SCHEDULED.NAME}}.jar \ -Dmock.cloud.transport-path.kafka={{MOCK.CLOUD.DIR}}/{{MOCK.EXTKAFKA.NAME}}.jar \ -Dmock.cloud.transport-manager-should-redirect-output={{transport_manager_should_redirect_output}} \ -Dmock.cloud.external-kafka.sasl-listeners={{ext_kafka_host1}}:{{MOCK.EXTKAFKA.SASLPORT}} \ -Dmock.cloud.external-kafka.plain-listeners={{ext_kafka_host1}}:{{MOCK.EXTKAFKA.PLAINPORT}} \ -Dmock.cloud.external-kafka.admin-login={{MOCK.EXTKAFKA.USER}} \ -Dmock.cloud.external-kafka.admin-password={{MOCK.EXTKAFKA.PWD}} \ -Dmock.cloud.external-kafka.num-partitions={{MOCK.EXTKAFKA.PARTITIONS}} \ -Dmock.cloud.external-kafka.replication-factor={{MOCK.EXTKAFKA.REPLICATION_FACTOR}} \ -Dmock.cloud.external-kafka.container-concurrency={{MOCK.EXTKAFKA.CONTAINER_CONCURRENCY}} \ -Dml.service.url=http://{{ml_host}}:{{MOCK.ML.PORT}} \ -Dmock.cloud.healthcheck.ibm-mq={{MOCK.CLOUD.HEALTHCHECK.IBM_MQ}} \ -Dmock.cloud.ibm-broker.host={{ibm_broker_host}} \ -Dmock.cloud.ibm-broker.port={{MOCK.MQ.PORT}} \ -Dmock.cloud.ibm-broker.queue-manager-name={{MOCK.MQ.QUEUE_MGR}} \ -Dmock.cloud.ibm-broker.channel-name={{MOCK.MQ.CHANNEL}} \ -Dmock.cloud.ibm-broker.rest-username={{MOCK.MQ.USER}} \ -Dmock.cloud.ibm-broker.rest-secret={{MOCK.MQ.PWD}} \ -Dmock.cloud.index={{mock_cloud_index}} \ -Dmock.cloud.transport-manager-memory-threshold={{transport_manager_memory_threshold}} \ -Dmock.cloud.devops-api.token={{MOCK.CLOUD.DEVOPS_API.TOKEN}} \ -Dmock.cloud.devops-api.system={{MOCK.CLOUD.DEVOPS_API.SYSTEM}} \ -Dmock.cloud.devops-api.widget-url={{MOCK.CLOUD.DEVOPS_API.WIDGET_URL}} \ -jar {{MOCK.CLOUD.DIR}}/{{MOCK.CLOUD.NAME}}.jar \ --db.url=jdbc:postgresql://{{db_mock_host}}:{{PSQL.CTL.MOCK.PORT}}/{{PSQL.DB.MOCK.NAME}}?prepareThreshold=0 \ --db.server={{db_mock_host}} \ --db.port={{PSQL.CTL.MOCK.PORT}} \ --db.instance={{PSQL.DB.MOCK.NAME}} \ --db.schema={{PSQL.USERS.MOCK.USER.SCHEMA}} \ --db.user={{PSQL.USERS.MOCK.USER.NAME}} \ --db.password={{PSQL.USERS.MOCK.USER.PWD}} \ --db.owner-user={{PSQL.USERS.MOCK.ADMIN.NAME}} \ --db.owner-password={{PSQL.USERS.MOCK.ADMIN.PWD}} \ --mock.cloud.keycloak.realm={{MOCK.CLOUD.KEYCLOAK.MOCK.REALM}} \ --mock.cloud.keycloak.clientsUrl={{mock_keycloak_url}}:{{MOCK.CLOUD.KEYCLOAK.MOCK.PORT}}/auth/admin/realms/{{MOCK.CLOUD.KEYCLOAK.MOCK.REALM}}/clients\ --mock.cloud.keycloak.url={{mock_keycloak_url}}:{{MOCK.CLOUD.KEYCLOAK.MOCK.PORT}}/auth \ --mock.cloud.keycloak.client-id={{MOCK.CLOUD.KEYCLOAK.MOCK.CLIENT_ID}} \ --mock.cloud.keycloak.oauth-client-id={{MOCK.CLOUD.KEYCLOAK.MOCK.OAUTH_CLIENT_MOCK_ID}} \ --mock.cloud.keycloak.oauth-client-secret={{MOCK.CLOUD.KEYCLOAK.MOCK.OAUTH_CLIENT_SECRET}} \ --mock.cloud.hub.keycloak.realm={{MOCK.CLOUD.KEYCLOAK.HUB.REALM}} \ --mock.cloud.hub.keycloak.clientsUrl={{meta_keycloak_url}}:{{MOCK.CLOUD.KEYCLOAK.HUB.PORT}}/auth/admin/realms/{{MOCK.CLOUD.KEYCLOAK.HUB.REALM}}/clients\ --mock.cloud.hub.keycloak.url={{meta_keycloak_url}}:{{MOCK.CLOUD.KEYCLOAK.HUB.PORT}}/auth\ --mock.cloud.hub.keycloak.token-url={{meta_keycloak_url}}:{{MOCK.CLOUD.KEYCLOAK.HUB.PORT}}/auth/realms/{{MOCK.CLOUD.KEYCLOAK.HUB.REALM}}/protocol/openid-connect/token\ --mock.cloud.hub.keycloak.users-url={{meta_keycloak_url}}:{{MOCK.CLOUD.KEYCLOAK.HUB.PORT}}/auth/admin/realms/{{MOCK.CLOUD.KEYCLOAK.HUB.REALM}}/users\ --mock.cloud.hub.keycloak.client-id={{MOCK.CLOUD.KEYCLOAK.HUB.CLIENT_ID}} \ --mock.cloud.hub.keycloak.oauth-client-id={{MOCK.CLOUD.KEYCLOAK.HUB.OAUTH_CLIENT_MOCK_ID}} \ --mock.cloud.hub.keycloak.oauth-client-secret={{MOCK.CLOUD.KEYCLOAK.HUB.OAUTH_CLIENT_SECRET}} \ --mock.cloud.git-settings.username={{MOCK.CLOUD.GIT.USERNAME}} \ --mock.cloud.git-settings.secret={{MOCK.CLOUD.GIT.SECRET}} \ --mock.cloud.support.support-url={{MOCK.CLOUD.SUPPORT.SUPPORT_URL}} \ --mock.cloud.support.cookbook-url={{MOCK.CLOUD.SUPPORT.COOKBOOK_URL}} \ --mock.cloud.support.create-project-url={{MOCK.CLOUD.SUPPORT.CREATE_PROJECT_URL}} \ --mock.cloud.support.add-transport-url={{MOCK.CLOUD.SUPPORT.TRANSPORT_URL}} \ --mock.cloud.support.editor-info-url={{MOCK.CLOUD.SUPPORT.EDITOR_INFO_URL}} \ --mock.cloud.support.connect-url-info={{MOCK.CLOUD.SUPPORT.CONNECT_INFO_URL}} \ --mock.cloud.dns.zone-name={{MOCK.CLOUD.DNS.ZONE_NAME}} \ --mock.cloud.dns.port={{MOCK.CLOUD.DNS.PORT}} \ --mock.cloud.dns.max-domains={{MOCK.CLOUD.DNS.MAX_DOMAINS}} \ --mock.cloud.host={{MOCK.CLOUD.HOST}} \ --mock.cloud.artemis.host={{MOCK.CLOUD.ARTEMIS.HOST}} \ --mock.cloud.artemis.port={{MOCK.CLOUD.ARTEMIS.PORT}} \ --mock.cloud.artemis.login={{MOCK.CLOUD.ARTEMIS.LOGIN}} \ --mock.cloud.artemis.password={{MOCK.CLOUD.ARTEMIS.PASSWORD}} \ --spring.datasource.hikari.maximumPoolSize=30 [Install] WantedBy=multi-user.targetСкопируйте следующие файлы из поставки в директорию <META_MOCK_INSTALL>:
eureka-server-app.jar
sbermock-basic-proxy-server.jar
mock-core-app.jar
mock-audit-elk-app.jar
mock-cloud.jar
mock-transport-manager-app.jar
Скопируйте файлы из поставки в директорию {{MOCK.TRANSPORTMANAGER.DIR}} :
mock-rest-cloud-app.jar
mock-kafka-app.jar
mock-esb-ibm-app.jar
Выполните следующие команды:
systemctl start eureka.service systemctl start basic-proxy-server.service systemctl start mock-audit-elk.service systemctl start mock-core-app.service systemctl start mock_transport-manager.service systemctl start mock-cloud.service
Установка mock-front#
Перейдите на сервер, на котором установлен Nginx.
Распакуйте содержимое файла /package/pl/mock-front-{ver}-dist.zip из дистрибутива поставки в директорию /var/mockfront/html.
Использование дополнительного СПО#
Prometheus#
В случае необходимости использования Prometheus установите и настройте его в соответствии с официальной документацией данного СПО.
Интеграция с Prometheus включена в следующих сервисах:
mock-cloud
mock-core-app
mock-audit-elk-app
mock-transport-manager-app
mock-rest-cloud-app
Filebeat#
В случае необходимости использования Filebeat установите и настройте его в соответствии с официальной документацией данного СПО.
Файл аудита по умолчанию располагается на сервере Mock в директории /tmp/logs/mock-audit-elk-app.log.