Установка EVTP#
Порядок установки EVTP#
Порядок установки компонента EVTP зависит от способа развертывания компонента.
Способы развертывания компонента:
ручная установка с использованием Ansible;
автоматическая установка с использованием Jenkins.
Ручная установка с использованием Ansible#
Для выполнения ручной установки с использованием Ansible необходимо выполнить следующие действия:
Заполнить файлы в директории
inventories. Подробнее описано в разделе Подготовка окружения EVTP, подраздел «Настройка inventory для EVTP».Создать:
нового пользователя;
системные или пользовательские сервисы обслуживания.
Подробнее описано в разделе Подготовка окружения EVTP, подраздел «Создание системных и пользовательских сервисов обслуживания для EVTP».
Выполнить шифрование пароля. Подробнее описано в разделе Использование утилиты «ansible-vault» для шифрования пароле.
Задать настройки безопасности в файле vars.yml. Подробнее описано в разделе Подготовка окружения EVTP, подраздел «Настройки безопасности для установки EVTP». Пример заполнения файла vars.yml описан в разделе Подготовка окружения EVTP, подраздел «Пример заполненного файла vars.yml для EVTP».
Выполнить ручную установку EVTP с использованием Ansible. Подробнее описано в подразделе «Ручная установка EVTP с использованием Ansible».
Автоматическая установка с использованием Jenkins#
Для выполнения автоматической установки с использованием Jenkins необходимо выполнить следующие действия:
Заполнить файлы в директории
inventories. Подробнее описано в разделе Подготовка окружения EVTP, подраздел «Настройка inventory для EVTP».Создать:
нового пользователя;
системные или пользовательские сервисы обслуживания.
Подробнее описано в разделе Подготовка окружения EVTP, подраздел «Создание системных и пользовательских сервисов обслуживания для EVTP».
Создать задания в Jenkins для автоматической установки EVTP. Подробнее описано в разделе Подготовка окружения EVTP, подраздел «Создание Jenkins Job для автоматической установки EVTP».
Выполнить шифрование пароля. Подробнее описано в разделе Использование утилиты «ansible-vault» для шифрования пароле.
Задать настройки безопасности в файле vars.yml. Подробнее описано в разделе Подготовка окружения EVTP, подраздел «Настройки безопасности для установки EVTP». Пример заполнения файла vars.yml описан в разделе Подготовка окружения EVTP, подраздел «Пример заполненного файла vars.yml для EVTP».
Выполнить автоматическую установку EVTP с использованием Jenkins. Подробнее описано в подразделе «Автоматическая установка EVTP с использованием Jenkins».
Дополнительные настройки и функции#
Дополнительно при установке (ручной/автоматической) могут быть использованы следующие настройки и функции:
Запуск установки под другим пользователем. Подробнее описано в подразделе «Запуск установки EVTP под другим пользователем».
Настройка интеграции с сервисными системами. Подробнее описано в подразделе «Настройка интеграции EVTP с сервисными системами».
Первичная настройка с предустановленым дистрибутивом компонента EVTP. Подробнее описано в подразделе «Первичная настройка с предустановленым дистрибутивом компонента EVTP».
Задание константных значений конфигурационным параметрам#
При установке компонентов есть возможность задать константные значения конфигурационным параметрам. В таком случае, данные значения будут считаться приоритетными и их нельзя будет переопределить через inventories.
Для задания константных значений необходимо:
создать файл preferred_ansible_vars.yml в директории
Pipeline, которая размещается в скриптах установки;указать в файле preferred_ansible_vars.yml необходимые параметры с константными значениями. Параметры необходимо указывать в том же формате, как и в файле vars.yml в
inventories.
Структура заполненного файла vars.yml приведена в разделе Подготовка окружения EVTP, подразел «Пример заполненного файла vars.yml для EVTP».
Логика приоритетов:
При наличии файла preferred_ansible_vars.yml в директории
Pipelineзначения, указанные в нем, применяются как самые приоритетные и не могут быть изменены черезinventories;При наличии файла preferred_ansible_vars.yml в директории
Pipelineи попытке изменить значения параметров в файле vars.yml новые заданные параметры не применятся — остается приоритет у данных из файла preferred_ansible_vars.yml;При отсутствии файла preferred_ansible_vars.yml все параметры применяются из файла vars.yml.
Функциональность приоритетных параметров можно использовать при работе с Jenkins Job для EVTP - Pipeline SYN_custom.
Ручная установка EVTP с использованием Ansible#
Перед началом установки убедитесь, что выполнена подготовка окружения. Подробнее в разделе Подготовка окружения EVTP.
Скопируйте все ansible-скрипты развертывания из состава дистрибутива (./EVTP-scripts-[version]-distrib.zip) на сервер, с которого будет производиться установка.
Заполните соответствующие inventory. Подробнее про заполнение inventory в разделе Подготовка окружения EVTP, подраздел «Настройка inventory для EVTP».
Создайте папку
filesна сервере установки и перенести содержимое дистрибутива (./EVTP-flink-[version]-distrib.zip) в новую папку.Утилиту для шифрования паролей
encryptor-cli-(version)-fatjar.jarизfilesпоместите в корень директории скриптов ansible.Запустите установку командой в терминале из папки Ansible:
ansible-playbook -i inventories/<ID>/inventory <PLAYBOOK>.yml --ask-vault-pass
, где ID - имя созданного inventory в пункте 3.
Список доступных PLAYBOOK:
flink.yml — устанавливает EVTP;
flink_system_service.yml — устанавливает системный сервис для EVTP;
flink_user_service.yml — устанавливает пользовательский сервис для EVTP;
flink_system_service_delete.yml - удаление системного сервиса обслуживания EVTP;
flink_user_service_delete.yml - удаление пользовательского сервиса обслуживания EVTP.
prerequirements.yml — playbook для автоматической настройки пререквизитов: устанавливает необходимые пакеты, модифицирует лимиты, настройки сети, прописывает sudo права для использования сервисов и создает директории установки/логов/данных;
reencrypt_passwords.yml — принудительное перешифрование паролей в конфигурационных файлах;
rolling_update_flink_jks.yml — обновляет jks сертификаты для EVTP;
rolling_upgrade.yml — обновляет EVTP до новой версии.
Проверьте работоспособность сервиса:
Убедиться, что сборка завершена без ошибок;
Убедиться, что в логах TaskManager и JobManager нет ошибок;
Убедиться, что при переходе по ссылке
Сервер,на который была произведена установка:портоткрывается UI приложения.
Автоматическая установка EVTP с использованием Jenkins#
Автоматическая установка производится на виртуальную машину.
Чек-лист автоматической установки#
Убедитесь, что выполнена подготовка окружения. Подробнее в разделе Подготовка окружения EVTP.
Заполните соответствующие inventory. Inventory должны быть заполнены согласно инструкции в разделе Подготовка окружения EVTP, подраздел «Настройка inventory для EVTP».
Убедитесь, что созданы необходимые Jenkins job из состава архива ./EVTP-scripts-[version]-distrib.zip. Jenkins Job должны быть настроены согласно инструкции в разделе Подготовка окружения EVTP, подраздел «Создание Jenkins Job для автоматической установки EVTP».
Заполните параметры созданной Jenkins job (укажите ссылку на дистрибутив, укажите ссылку на inventory, выберите host и тд).
Запустите Jenkins job, дождитесь окончания выполнения работы со статусом SUCCESS.
Проверьте работоспособность сервиса.
Запуск установки EVTP под другим пользователем#
В случае запрета удаленного подключения под пользователем flink возможно использовать механизм запуска установки EVTP под другим пользователем (не под тем, что используется для подключения к серверу установки EVTP). Для этого предварительно необходимо добавить параметры в конфигурационный файл vars.yml:
# авторизация под другим пользователем и его паролем
ansible_become: 1 # Использование данного механизма при установке. Доступные значения: 0 и 1. Если 1 — при авторизации на сервере, представляемся другим пользователем. Установка будет производиться под пользователем, указанным в параметре *ansible_become_user* ниже. Значение по умолчанию: 0 (не используем данный механизм).
ansible_become_method: su # Способ представления пользователя в Linux. Доступные значения: su или sudo. При использовании sudo - можно не запрашивать пароль пользователя. Значение по умолчанию: sudo.
ansible_become_flags: --login # Дополнительные ключи для режима su.
ansible_become_user: <имя пользователя> # Пользователь, под которым будет производиться установка. Например, kafka. В таком случае, в параметре ansible_user указывается пользователь, под которым осуществляется вход на сервер.
ansible_become_pass: <пароль пользователя> # пароль пользователя, под которым будет производиться установка (Например, kafka).
Также можно изменить пользователя, используя sudo (при этом указывать пароль пользователя не требуется). Для этого пользователю необходимо предоставить права в файле, который находится в каталоге /etc/sudoers.d/. В данном файле должен быть следующий текст user ALL=(<имя пользователя>) NOPASSWD:ALL:
# авторизация под другим пользователем с использованием sudo
ansible_become: 1
ansible_become_user: <имя пользователя> # пользователь, под которым будет производиться установка
При использовании механизма запуска установки под другим пользователем первая строка в файле inventory должна выглядеть так (отключаем механизм ansible_become для сервера, с которого происходит установка).
localhost ansible_connection=local ansible_become=0
После запуска установки с описанными параметрами установка EVTP будет осуществляться под пользователем, указанным в параметре ansible_become_user.
Первичная настройка с предустановленым дистрибутивом компонента EVTP#
Для первичной настройки приложения необходимо подготовить конфигурационный файл vars.yml, в блоке настроек «flink» указать в параметре
uploadLibsзначение - false для работы с предуставновленным дистрибутивом.Далее необходимо запустить playbook flink.yml ручным или автоматическим способом, используя теги
install,generate_flink_conf,generate_defaults,generate_logback,restart.После успешного выполнения playbook будет запущен компонент EVTP.
Настройка интеграции EVTP с сервисными системами#
Ниже описана процедура интеграции EVTP с внешними системами: Platform V Audit SE, EDMN, EDMS, Zookeeper, HashiCorp Vault.
На усмотрение пользователя может быть настроена интеграция с аналогичным по функциональности продуктом от других производителей.
Настройка интеграции со смежными сервисами происходит в процессе конфигурации параметров в vars.yml (подробно описано в разделе Подготовка окружения EVTP, подраздел «Настройка inventory»):
настройка интеграции с компонентом Аудит продукта Platform V Audit SE производится в файле vars.yml, блок настроек:
audit_configs: # Конфигурация аудита
audit.service.class: ru.sbt.ss.audit.flink.LoggerAuditService # Логирование событий в системе аудита
#audit.service.class: ru.sbt.ss.audit.flink.FlinkHttpAuditService # Отправка событий в систему аудита
audit.service.metamodel.module: <module_id> # Модуль используемой метамодели
audit.service.metamodel.version: <1.0> # Переопределить версию метамодели
audit.service.send.metamodel: "true" # Отправка метамодели аудита на старте
audit.service.pretty.print: "false" # Форматирование при логировании событий аудита (false-отсутствие форматирование. true-форматирование включено)
audit.service.ignore.errors: "true" # Игнорирование ошибок при отправке событий в систему аудита
audit.service.metamodel.path: ./metamodel.json # Путь до используемой метамодели (задается либо путь, либо модуль и версия)
# audit.service.bse.url: http://audit-endpoint.ru # Адрес аудита
# audit.service.url.event.path: /v1/event # Endpoint аудита, на который будут отправляться события
# audit.service.url.metamodel.path: /v1/metamodel # Endpoint аудита, на который будет отправляться метамодель
# audit.service.request.timeout.ms: 15000 # Тайм-аут отправки запроса аудита (включает отправку запроса в буферы повторной доставки)
# audit.service.redelivery.enabled: "true" # Флаг, отвечающий за повторную отправку
# audit.service.redelivery.interval.ms: 60000 # Интервал повторной отправки
# audit.service.redelivery.initial.delay.ms: 60000 # Начальная задержка повторной отправки
# audit.service.redelivery.buffers: kafka-buffer # Список буферов для хранения запросов аудита на повторную доставку
# audit.service.redelivery.kafka-buffer.type: kafka # Тип буфера kafka
# audit.service.redelivery.kafka-buffer.topic: <topic_name> # Используемый topic
# audit.service.redelivery.kafka-buffer.timeout.ms: 10000 # Этот тайм-аут используется для опроса/коммитов и используется для вычисления тайм-аутов продьюсера kafka как: max.block.ms = тайм-аут / 2; delivery.timeout.ms = тайм-аут / 2 + linger.ms; request.timeout.ms = тайм-аут / 4. Все тайм-ауты могут быть установлены явно.
# audit.service.redelivery.kafka-buffer.bootstrap.servers: host1:port1,host2:port2 # Bootstrap подключения к Apache Kafka вида host:port,host2:port2
# audit.service.redelivery.kafka-buffer.group.id: <group_id> # Используемая группа для чтения событий аудита
# audit.service.redelivery.kafka-buffer.security.protocol: PLAINTEXT # Протокол подключения PLAINTEXT или SSL
# audit.service.redelivery.kafka-buffer.retries: 3 # Максимальное количество повторных попыток доставки (-1 для бесконечных попыток) (для параметра audit.reporter.redelivery.stop.on.error должно быть установлено значение false)
# audit.service.redelivery.kafka-buffer.acks: -1 # Механизм подтверждения записи в topic
# audit.service.ssl.enabled: "false" # Включение/выключение ssl
# audit.service.ssl.keystore.location: /full/path/to/*.jks # Путь до хранилища сертификатов, для отправки событий аудита
# audit.service.ssl.keystore.password: __PLACEHOLDER__ # Пароль от keystore
# audit.service.ssl.key.password: __PLACEHOLDER__ # Пароль для key.password
# audit.service.ssl.truststore.location: /full/path/to/*.jks # Путь до хранилища доверенных сертификатов
# audit.service.ssl.truststore.password: __PLACEHOLDER__ # Пароль от truststore
# audit.service.ssl.protocol: TLSv1.2 # Версия протокола `TLS`, по умолчанию `TLSv1.2`
# audit.service.verify.hostname: false # Проверка имени сервера в его сертификате
Отправляемые сообщения имеют формат JSON или XML согласно шаблону, описываемому в файле ./conf/logback.xml на сервере установки. Настройка интеграции компонента EVPT с компонентом LOGA продукта Platform V Monitor производится в файле vars.yml, блок настроек:
logback_kafka_appender: # Настройка отправки логов в kafka
enable: false # Включение механизма отправки логов в Kafka через logback
topic_FlinkLogger: <topic_name> # Топик для отправки логов флинка
topic_FlinkLogger_never_block: true # Блокировка работы приложения при недоступности Kafka (по умолчанию - блокируется, при true недоставленные сообщения в kafka отбрасываются)
topic_FlinkLogger_discarding_threshold: 20 # Процент свободного места в очереди отправки сообщений при достижении которого будут удаляться сообщения уровня TRACE, DEBUG, INFO
topic_FlinkLogger_queue_size: 512 # Размер очереди для отправки в Кафку
topic_UniversalJobLogger: <topic_name> # Топик для отправки логов универсального обработчика
topic_UniversalJobLogger_never_block: true # Блокировка работы приложения при недоступности Kafka (по умолчанию - блокируется, при true недоставленные сообщения в kafka отбрасываются)
topic_UniversalJobLogger_discarding_threshold: 20 # Процент свободного места в очереди отправки сообщений при достижении которого будут удаляться сообщения уровня TRACE, DEBUG, INFO
topic_UniversalJobLogger_queue_size: 512 # Размер очереди для отправки в Кафку
retries: 3 # Количество переиницилизации продьюсера, если параметр не задан, по умолчанию значение 3
interval: 1000 # Интервал между переиницилизациями, по умолчанию 1000 мс. Задается в мс.
multiplier: 1 # Множитель интервала переинициализации, по умолчанию значение 1.
max_pool_size: 8 # Опциональный параметр для установки максимального количества одновременно работающих продюсеров (размер пула), значение по умолчанию 8
pool_size: 1 # Опциональный параметр, задающий количество одновременно работающих продюсеров (размер пула), не должен быть больше producerMaxPoolSize, значение по умолчанию 1
pool_load_balancer: round-robin # Опциональный параметр для указания алгоритма балансировки нагрузки для параллельных продюсеров ('random' или 'round-robin'), значение по умолчанию 'round-robin'
producer_configs: # Настройка Kafka продюсера
- "bootstrap.servers=host1:port1,host2:port2" # Bootstrap подключения к Apache Kafka вида host:port,host2:port2
- "security.protocol=SSL" # Тип протокола подключения. Значение по умолчанию: SSL
# ssl.keystore.location: ssl/logback.jks # Путь до хранилища сертификатов, для отправки логов в kafka
# ssl.keystore.password: _PLACEHOLDER_ # Пароль от keystore
# ssl.key.password: _PLACEHOLDER_ # Пароль для key.password
# ssl.truststore.location: ssl/logback.jks # Путь до truststore хранилища
# ssl.truststore.password: _PLACEHOLDER_ # Пароль от truststore
# ssl.endpoint.identification.algorithm: "" # Обязательный параметр. Значение "" не изменяемое. Отключение проверки хостнейма в сертификате, обязательно для стендов Kafka
# ssl.engine.factory.class: ru.sbt.ss.kafka.VaultSslEngineFactory # Класс используемый для настроек vault подключения
# ssl.vault.properties.file: conf/vault.properties # Путь до файла с настройками vault
# ## переопределяем необходимые параметры
# ssl.vault.pki.common.name: <common_name> # Common name (CN) для генерации сертификатов
# ssl.keystore.location: ${vault:ssl.keystore.location} # Путь до keystore хранилища сертификата, где будет размещен сертификат сгенерированный Vault
# ssl.truststore.location: ${vault:ssl.truststore.location} # Путь до truststore хранилища
настройка интеграции с HashiCorp Vault задается в файле vars.yml, блок настроек:
vault_configs: # Настройки подключения к Vault
security.ssl.vault.enabled: "true" # Включение использования vault
security.ssl.vault.properties.file: conf/vault.properties # Путь до файла с настройками
security.vault.secret.path: kv1/flink # Путь для s3.secret-key при получении значения из vault
security.vault.mount.path: kv2/secrets # Путь до секретов s3 в Vault при использовании kv2
настройка интеграции с компонентом EDMN (Synapse Event Monitoring system (Mayak)) производится после установки EVTP. Настройки подключения со стороны системы мониторинга описаны в документации к компоненту EDMN в документе Руководство пользователя EDMN.
Подключение к EVTP осуществляется со стороны системы мониторинга EDMN по заранее заданным параметрам в файле vars.yml, блок настроек:
jmxPort: 8789-8790 # Порт для JMX (range port)
jmx_security_enable: true # Включение авторизации для JMX
jmx_access_roles: # Пользователи для JMX
- user: myuser # Имя добавляемого пользователя
access: readonly # Уровень доступа для пользователя (readonly, readwrite)
password: mypassword # Пароль добавляемого пользователя
настройки подключения к Zookeeper задаются в файле vars.yml, в блоке:
zookeeper: localhost:2181 # Используемый zookeeper (по умолчанию - [zookeeper] из inventory)
zookeeper_settings: # Настройки zookeeper
protocol: PLAINTEXT # PLAINTEXT либо SSL
#keystore_path: /path/to/*.jks # Путь до хранилища сертификатов для подключения к zookeeper
#keystore_pass: __PLACEHOLDER__ # Пароль keystore
#truststore_path: /path/to/*.jks # Путь до truststore
#truststore_pass: __PLACEHOLDER__ # Пароль truststore
#key_pass: __PLACEHOLDER__ # Secret key для truststore пароля
#client_acl: creator # для создаваемых z-node в Zookeeper прописывать права для сертификата из keystore_path (возможные значения creator / open)
настройка подключения EDMS к EVTP осуществляется со стороны EDMS. Данная операция описана в документации к компоненту EDMS в Руководстве оператора, раздел Работа с доменами.