Установка EVTP#

Порядок установки EVTP#

Порядок установки компонента EVTP зависит от способа развертывания компонента.

Способы развертывания компонента:

  • ручная установка с использованием Ansible;

  • автоматическая установка с использованием Jenkins.

Ручная установка с использованием Ansible#

Для выполнения ручной установки с использованием Ansible необходимо выполнить следующие действия:

  1. Заполнить файлы в директории inventories. Подробнее описано в разделе Подготовка окружения EVTP, подраздел «Настройка inventory для EVTP».

  2. Создать:

  • нового пользователя;

  • системные или пользовательские сервисы обслуживания.

Подробнее описано в разделе Подготовка окружения EVTP, подраздел «Создание системных и пользовательских сервисов обслуживания для EVTP».

  1. Выполнить шифрование пароля. Подробнее описано в разделе Использование утилиты «ansible-vault» для шифрования пароле.

  2. Задать настройки безопасности в файле vars.yml. Подробнее описано в разделе Подготовка окружения EVTP, подраздел «Настройки безопасности для установки EVTP». Пример заполнения файла vars.yml описан в разделе Подготовка окружения EVTP, подраздел «Пример заполненного файла vars.yml для EVTP».

  3. Выполнить ручную установку EVTP с использованием Ansible. Подробнее описано в подразделе «Ручная установка EVTP с использованием Ansible».

Автоматическая установка с использованием Jenkins#

Для выполнения автоматической установки с использованием Jenkins необходимо выполнить следующие действия:

  1. Заполнить файлы в директории inventories. Подробнее описано в разделе Подготовка окружения EVTP, подраздел «Настройка inventory для EVTP».

  2. Создать:

  • нового пользователя;

  • системные или пользовательские сервисы обслуживания.

Подробнее описано в разделе Подготовка окружения EVTP, подраздел «Создание системных и пользовательских сервисов обслуживания для EVTP».

  1. Создать задания в Jenkins для автоматической установки EVTP. Подробнее описано в разделе Подготовка окружения EVTP, подраздел «Создание Jenkins Job для автоматической установки EVTP».

  2. Выполнить шифрование пароля. Подробнее описано в разделе Использование утилиты «ansible-vault» для шифрования пароле.

  3. Задать настройки безопасности в файле vars.yml. Подробнее описано в разделе Подготовка окружения EVTP, подраздел «Настройки безопасности для установки EVTP». Пример заполнения файла vars.yml описан в разделе Подготовка окружения EVTP, подраздел «Пример заполненного файла vars.yml для EVTP».

  4. Выполнить автоматическую установку EVTP с использованием Jenkins. Подробнее описано в подразделе «Автоматическая установка EVTP с использованием Jenkins».

Дополнительные настройки и функции#

Дополнительно при установке (ручной/автоматической) могут быть использованы следующие настройки и функции:

  1. Запуск установки под другим пользователем. Подробнее описано в подразделе «Запуск установки EVTP под другим пользователем».

  2. Настройка интеграции с сервисными системами. Подробнее описано в подразделе «Настройка интеграции EVTP с сервисными системами».

  3. Первичная настройка с предустановленым дистрибутивом компонента 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#

  1. Перед началом установки убедитесь, что выполнена подготовка окружения. Подробнее в разделе Подготовка окружения EVTP.

  2. Скопируйте все ansible-скрипты развертывания из состава дистрибутива (./EVTP-scripts-[version]-distrib.zip) на сервер, с которого будет производиться установка.

  3. Заполните соответствующие inventory. Подробнее про заполнение inventory в разделе Подготовка окружения EVTP, подраздел «Настройка inventory для EVTP».

  4. Создайте папку files на сервере установки и перенести содержимое дистрибутива (./EVTP-flink-[version]-distrib.zip) в новую папку.

  5. Утилиту для шифрования паролей encryptor-cli-(version)-fatjar.jar из files поместите в корень директории скриптов ansible.

  6. Запустите установку командой в терминале из папки 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 до новой версии.

  1. Проверьте работоспособность сервиса:

  • Убедиться, что сборка завершена без ошибок;

  • Убедиться, что в логах TaskManager и JobManager нет ошибок;

  • Убедиться, что при переходе по ссылке Сервер,на который была произведена установка:порт открывается UI приложения.

Автоматическая установка EVTP с использованием Jenkins#

Автоматическая установка производится на виртуальную машину.

Чек-лист автоматической установки#

  1. Убедитесь, что выполнена подготовка окружения. Подробнее в разделе Подготовка окружения EVTP.

  2. Заполните соответствующие inventory. Inventory должны быть заполнены согласно инструкции в разделе Подготовка окружения EVTP, подраздел «Настройка inventory для EVTP».

  3. Убедитесь, что созданы необходимые Jenkins job из состава архива ./EVTP-scripts-[version]-distrib.zip. Jenkins Job должны быть настроены согласно инструкции в разделе Подготовка окружения EVTP, подраздел «Создание Jenkins Job для автоматической установки EVTP».

  4. Заполните параметры созданной Jenkins job (укажите ссылку на дистрибутив, укажите ссылку на inventory, выберите host и тд).

  5. Запустите Jenkins job, дождитесь окончания выполнения работы со статусом SUCCESS.

  6. Проверьте работоспособность сервиса.

Запуск установки 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#

  1. Для первичной настройки приложения необходимо подготовить конфигурационный файл vars.yml, в блоке настроек «flink» указать в параметре uploadLibs значение - false для работы с предуставновленным дистрибутивом.

  2. Далее необходимо запустить playbook flink.yml ручным или автоматическим способом, используя теги install, generate_flink_conf, generate_defaults, generate_logback, restart.

  3. После успешного выполнения 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 в Руководстве оператора, раздел Работа с доменами.