Обновление#

Требования к окружению Archiving - в начале инструкции по установке Archiving.

План обновления#

  1. Загрузка в конфигуратор конфигурации для новой версии Archiving.

  2. Остановка потока Прикладного журнала для всех источников данных.

  3. Удаление с узлов Archiving компонентов сервиса старой версии.

  4. Установка на узлы Archiving компонентов сервиса новой версии.

  5. Запуск потока Прикладного журнала для всех источников данных.

  6. Проверка корректности установки обновления по чеклисту.

Загрузка новой конфигурации Archiving#

Первым этапом установки обновления Archiving является загрузка конфигурационных файлов в конфигуратор на полигоне. Для этого:

  1. Перейдите в каталог дистрибутива ./config.

  2. Импортируйте конфигурационные файлы модулей:

    • arch-journal-cdm-init-config-struct.xml;

    • arch-journal-gbk-init-config-struct.xml;

    • arch-journal-ucp-consents-init-config-struct.xml;

    • arch-journal-dataspace-init-config-struct.xml;

    • pprbod-applied-journal-handler-config-struct.xml;

    • pprbod-data-quality-processor-config-struct.xml;

    • pprbod-grid-lib-v4-config-struct.xml;

    • pprbod-offline-dq-collector-v4-config-struct.xml;

    • pprbod-source-provider-v4-config-struct.xml;

    • pprbod-stream-processor-config-struct.xml.

Кроме данных файлов в каталоге размещены файлы с параметрами с именованием вида:

<module>.properies.<stand>

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

  • при первичном развертывании сервиса;

  • при изменении каких-либо значений, которые не зависят от сервера установки;

  • в сравнении с предыдущей версией изменился состав параметров.

Подробнее о применении конфигурации написано в следующем пункте.

Изменение конфигурации при обновлении с 4.5 на 4.6#

Параметры Конфигуратора#

В случае перехода с Archiving 4.5 на Archiving 4.6 нет необходимости изменять параметры:

модуль pprbod-source-provider-v4:

Название

Значение по умолчанию

Описание

kafka.consumer.topics.partition.assignment.timeout.ms

60000 (1 мин)

Время (таймаут) ожидания подписывания консьюмеров на топики перед началом обработки данных из них. Настройка общая для всех системных и прикладных топиков. Для промышленных сред и сред ИФТ-ПСИ не допускается установка околонулевых значений. Рекомендуемое - 1 минута

kafka.eventbus.delivery.thread.count

10000

Ограничивающий лимит числа потоков на системной службе отслеживания доставки DeliveryTracker. Допускается его уменьшение или увеличение в ходе тонкой настройки инстанса ТСА

Параметры, определяющие работу интерцепторов для функциости целостности и полноты в части ЭЦП сообщений.

Название

Значение по умолчанию

Описание

cap.interceptor.enabled

Включение интерцепторов для функционала полноты в разрезе источников. Содержит список мнемоник источников, по которым включается функционал подписывания сообщений в интеграционной Kafka. Например, GBK,PU_UL_SIC

cap.interceptor.classes

com.sbt.pprbod.kafka.ShadedKafkaSignatureProducerInterceptor

Имя класса реализации интерцептора продюсера. Не меняется в текущих релизах ТСА относительно умолчаний

cap.interceptor.signature.service.class

ru.sbt.ss.kafka.interceptors.X509SignatureService

Имя класса реализации (сервиса) провайдера ЭЦП. Не меняется в текущих релизах ТСА относительно умолчаний - применяется реализация Synapse

cap.interceptor.signature.header

Имя заголовка сообщения Kafka, в который помещается ЭЦП. При включении для хотя бы одного источника не может быть пустым. В разрезе отдельных источников не конфигурируется - заголовок всегда одинаковый

cap.interceptor.signature.attributes.prefix

Префикс атрибутов, используемых для кастомизации формирования ЭЦП. В текущих реализациях используются значения реализации Synapse по умолчанию - значение всегда пустое. Возможность кастомизации заложена на будущие реализации

cap.interceptor.signature.stop.send.on.failure

true

Признак остановки обработки пакета в случае, если подпись в заголовке не совпала. Для промышленных сред и сред ИФТ-ПСИ всегда должно быть true

cap.interceptor.signature.certificate.algorithm

SHA256WithRSA

Алгоритм ЭЦП. Не меняется. Допустим любой RSA алгоритм (если ключ у сертификата RSA), который доступен через security провайдеры jvm, java.security.Signature.getInstance(). По умолчанию - SHA256withRSA

cap.interceptor.signature.certificate.key.alias

Имя ключа (алиас) в локальном keystore (параметры далее) для формирования подписи. Должно заполняться согласно выпущенному сертификату ЭП

cap.interceptor.signature.certificate.algorithm.header

Имя заголовка сообщения Kafka, в который помещается имя алгоритма подписи для проверки принимающей стороной. В текущих реализациях используются значения реализации Synapse по умолчанию - значение всегда пустое. Возможность кастомизации заложена на будущие реализации

cap.interceptor.signature.certificate.public.key.header

Имя заголовка сообщения Kafka, в который помещается открытый ключ для проверки подписи принимающей стороной. В текущих реализациях используются значения реализации Synapse по умолчанию - значение всегда пустое. Возможность кастомизации заложена на будущие реализации

cap.interceptor.signature.certificate.ssl.provider

Позволяет переопределить SSL провайдера для взаимодействия с Kafka для работы интерцептора ЭП. Не применяется, не заполняется никогда

cap.interceptor.signature.certificate.ssl.keystore.location

Путь на ЛФС к хранилищу с сертификатами для формирования ЭЦП сообщений Kafka. Переопределяет базовый путь к хранилищу сертификатов, используемых для подключения к интеграционной Kafka. Применяется и заполняется в случае, если сертификат ЭП не был экспортирован из контейнера и импортирован в базовое хранилище, а был размещен в отдельном keystore

cap.interceptor.signature.certificate.ssl.keystore.password

Пароль от хранилища сертификатов для формирования ЭЦП сообщений Kafka. Переопределяет базовый пароль от хранилища сертификатов. Используется в паре с параметром cap.interceptor.signature.certificate.ssl.keystore.location в случае, если для ключа ЭП использовано отдельное хранилище

cap.interceptor.signature.certificate.ssl.key.password

Позволяет переопределить SSL клиентский сертификат для взаимодействия с Kafka для работы интерцептора ЭП. Должен соответствовать применяемому Keystore выше

Параметры, определяющие работу прозрачного шифрования (Transparent Data Encryption, TDE) для функциональности целостности и полноты в части шифрования Kafka трафика.

Название

Значение по умолчанию

Описание

tde.enabled

Включение Transparent Data Encryption в разрезе источников для интеграционных топиков. Содержит список мнемоник источников, по которым включается функционал прозрачного шифрования сообщений в интеграционной Kafka. Например, GBK, PU_UL_SIC

tde.raw.topic.enabled

Включение Transparent Data Encryption в разрезе источников для топиков сырых данных. Содержит список мнемоник источников, по которым включается функционал прозрачного шифрования сообщений в топиках сырых данных. Например, GBK, PU_UL_SIC. Для текущих инсталляций и согласно текущим требованиям значение параметра для ПРОМ инсталляций в норме должно строго совпадать с tde.enabled, возможность перекрытия оставлена для отладки и разбора инцидентов

tde.eventbus.enabled

false

Включение шифрования на топиках доставки системных сообщений. Повышает устойчивость, но снижает производительность. Для текущих инсталляций рекомендуется false

de.serializer.secret.key

Секрет для алгоритма HMAC для прозрачного шифрования данных. Должен удовлетворять требованиям доменной парольной политики к секретам

tde.serializer.salt

Соль для алгоритма шифрования. Должна удовлетворять требованиям доменной парольной политики к секретам

tde.serializer.factory.algorithm

PBKDF2WithHmacSHA256

Фабрика, реализующая алгоритм шифрования (имя реализации) JCP

tde.serializer.cipher.algorithm

LS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

Алгоритм шифрования AES/CBC/PKCS5 Padding. Допустимые значения: LS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (дефолтный/рекомендуемый), TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (резервный), TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (резервный)

tde.serializer.secret.key.spec.algorithm

AES

Алгоритм шифрования секрета

semaphore.mock.mode

default

Параметр дает возможность управления переключением bean-обсервера, который слушает семафоры ПЖ для перехода в Si и обратно в Normal. Для промышленных сред и сред ИФТ-ПСИ значение строго обязательно должно быть установлено в prod. Возможные значения:
- default (заглушки семафоров для стендов без ПЖ, контур всегда NORMAL и активен);
- prod (смотрит на семафоры isStandinEnvironment и isActiveEnvironment);
- mock (инструкция ниже). Переключение семафоров в режиме mock происходит в ручном режиме через UI ПЖ стенда accountOpenEnabled (Вкл/Выкл соответственно STANDIN/NORMAL), isActiveEnvironment (Вкл/Выкл Активный/Неактивный контур)

transport.kafka.client.timeout.seconds

40

Таймаут запросов

transport.kafka.response.pool.size

48

Размер пула потоков обработки ответов

transport.kafka.async.pool.size

48

Размер пула потоков обработки обратных вызовов

kafka.aj.admin.retries.backoff.ms

5000

Интервал между повторными попытками настройки транспортных топиков (при ошибках)

kafka.aj.admin.retries

3

Количество повторных попыток настройки транспортных топиков (при ошибках)

kafka.aj.topics.retention

14400000

Гарантированное время жизни записей в транспортных топиках (устанавливается при создании)

kafka.aj.topics.replication

1

Фактор репликации, используемый при создании транспортных топиков

kafka.aj.topics.partitions

10

Кол-во партиций, устанавливаемое при создании транспортных топиков

kafka.aj.ssl.truststore.location

Путь к хранилищу доверенных сертификатов для Kafka протокола 4-3

kafka.aj.ssl.truststore.password

Пароль от хранилища доверенных сертификатов для Kafka протокола 4-3

kafka.aj.ssl.keystore.location

Путь к админскому сертификату для работы с Kafka 4-3 (набор ключей, который содержится в данном хранилище, используется при создании и настройке транспортных топиков)

kafka.aj.ssl.keystore.password

Пароль от хранилища ключей и сертификатов для Kafka протокола 4-3

kafka.aj.ssl.key.password

Пароль от ключа для Kafka протокола 4-3

transport_topics.enable.autoconfig

false

Флаг, включающий и отключающий автоконфигурирование топиков в Kafka протокола 4-3

kafka.admin.retries.backoff.ms

5000

Интервал между повторными попытками настройки интеграционных топиков (при ошибках)

kafka.admin.retries

3

Количество повторных попыток настройки интеграционных топиков (при ошибках)

модуль pprbod-transport-kafka-lib:

Название

Значение по умолчанию

Описание

transport_topics.enable.autoconfig

false

Флаг, включающий и отключающий автоконфигурирование топиков в Kafka протокола 4-3 с использованием admin-client. На промышленных средах, а также на средах ИФТ-ПСИ, целевое значение флага true, так как конфигурирование топиков выполняется автоматически. Значение false применяется при наличии проблем, препятствующих корректной работе админ-клиента

transport.kafka.client.timeout.seconds

40

Таймаут запросов

transport.kafka.response.pool.size

48

Размер пула потоков обработки ответов

transport.kafka.async.pool.size

48

Размер пула потоков обработки обратных вызовов

kafka.admin.topics.retention

10800000 (3 часа)

Гарантированное время жизни записей в транспортных топиках (устанавливается при создании)

kafka.admin.topics.replication

1

Фактор репликации, используемый при создании транспортных топиков. Фактическое значение рекомендуется оставлять 1 для максимальной производительности кластера

kafka.admin.topics.partitions

1

Количество партиций, устанавливаемое при создании транспортных топиков. Фактическое значение должно устанавливаться согласно рекомендациям по масштабированию соответственно числу узлов и КТС полигона

kafka.admin.ssl.truststore.location

Путь к хранилищу доверенных сертификатов для транспортной Kafka протокола 4-3

kafka.admin.ssl.truststore.password

Пароль от хранилища доверенных сертификатов для транспортной Kafka протокола 4-3

kafka.admin.ssl.keystore.location

Путь к админскому сертификату для работы admin-client c транспортной Kafka 4-3 (набор ключей, который содержится в данном хранилище, используется при создании и настройке транспортных топиков)

kafka.admin.ssl.keystore.password

Пароль от хранилища ключей для работы admin-client c транспортной Kafka 4-3

kafka.admin.ssl.key.password

Пароль от закрытого ключа клиентского SSL сертификата для транспортной Kafka протокола 4-3

kafka.admin.retries.backoff.ms

5000

Интервал между повторными попытками настройки транспортных топиков (при ошибках)

kafka.admin.retries

3

Количество повторных попыток настройки транспортных топиков (при ошибках)

Топики Kafka#

В релизе 4.6 для обоих контуров необходимо добавить Normal или StandIn: v4-[название контур]-[normal или standin]-pprbod-[название системного топика].

Пример для контура Normal :

  • v4-<полигон>-normal-pprbod-batch-topic;

  • v4-<полигон>-normal-pprbod-chunk-topic;

  • v4-<полигон>-normal-pprbod-delivery-topic;

  • v4-<полигон>-normal-pprbod-quality-response-topic;

  • v4-<полигон>-normal-pprbod-quality-topic;

  • v4-<полигон>-normal-pprbod-source-update-topic.

Пример для контура Stand-In:

  • v4-<полигон>-standin-pprbod-batch-topic;

  • v4-<полигон>-standin-pprbod-chunk-topic;

  • v4-<полигон>-standin-pprbod-delivery-topic;

  • v4-<полигон>-standin-pprbod-quality-response-topic;

  • v4-<полигон>-standin-pprbod-quality-topic;

  • v4-<полигон>-standin-pprbod-source-update-topic.

* pprbod-chunk-topic новый топик в 4.6 - в batch-topic писались два разных типа ивентов, и из него же читались двумя консьюмерами с предикатами, настроенными каждый на свой тип, что приводило к ошибке, когда к консьюмеру чанков прилетал батч. Решение - разделить на два топика batch и chunk

Системные топики на контурах создаются автоматически при развертывании модулей. Поскольку до релиза 4.6 разделения контуров по признаку  NORMAL-STANDIN не было, ранее созданные системные топики имеют вид:

  • v4-<полигон>-pprbod-batch-topic;

  • v4-<полигон>-pprbod-chunk-topic;

  • v4-<полигон>-pprbod-delivery-topic;

  • v4-<полигон>-pprbod-quality-response-topic;

  • v4-<полигон>-pprbod-quality-topic;

  • v4-<полигон>-pprbod-source-update-topic.

Автоматически они удалены не будут, а также не будут использоваться системой после обновления до 4.6.  Рекомендуется их удалить, оформив соответствующий ЗНО.

Остановка потока АС Прикладной журнал#

Перед остановкой Archiving необходимо остановить поток Прикладного журнала во всех зонах ПЖ (т.е. по всем источникам данных).

В зонах ПЖ для каждого из источников данных Archiving необходимо отключить плагин EXPORT_FD4 по всем типам данных.

Примечание:

Если на полигоне, куда устанавливается обновление, потеря данных не критична, то данный шаг можно пропустить.

Удаление старой версии Archiving#

Для удаления старой версии Archiving с серверов приложений:

  1. Остановите сервер приложений WildFly (выполнить для всех узлов Archiving на полигоне).

  2. Включите сервер приложений, не включая модули.

  3. Удалите с сервера приложений все модули Archiving.

  4. Выполните шаги 2 и 3 для всех узлов Archiving на полигоне.

Установка модулей актуальной версии на WildFly#

Установка модулей осуществляется по следующему алгоритму:

  1. Установите на WildFly без запуска компонентов, которые присутствуют в дистрибутиве (не включать):

    Наименование компонента

    Назначение компонента

    pprbod-source-provider-v4

    JBoss модуль - хранилище системных компонентов сервиса

    pprbod-stream-processor

    Обработчик данных, отправляющий данные в интеграционную Kafka Archiving

    pprbod-offline-dq-collector-v4

    Обработчик данных, присылаемых от источников данных в процессе Init и ТКД

    pprbod-data-quality-processor

    Модуль, отвечающий за выполнение ТКД и DRP

    pprbod-applied-journal-handler

    Обработчик данных, получаемых от АС Прикладной журнал

    arch-journal-cdm-init, arch-journal-dataspace-init, arch-journal-gbk-init, arch-journal-ucp-consents-init

    Модули - адаптеры для инициализирующей выгрузки различных типов источников данных

  2. Пропишите все модули Archiving в seap-lib overlay в конфигурации WildFly.

    Один из вариантов выполнения с помощью встроенной утилиты WildFly ./jboss-cli.sh.

    При помощи терминала откройте каталог, где установлен WildFly, затем перейдите в подкаталог bin (пример: wildfly/bin), используя команду: ./jboss-cli.sh --connect --controller=<адрес сервера>:<порт WildFly> --user=<имя пользователя> ---password=<пароль пользователя> --command="deployment-overlay link --name=seap-lib-9.2 --deployments=<название модуля>*".

    --deployments=<название модуля>* - звездочка означает, что overlay прописывается для любой версии данного модуля. Чтобы прописать overlay для конкретной версии, необходимо указать --deployments=<название модуля>-<номер версии>.war.

    Пример команды для модуля pprbod-source-provider-v4:

      ./jboss-cli.sh --connect --controller=XX.XX.XX.XX:XXXX --user=admin --password=admin --command="deployment-overlay link --name=seap-lib-9.2 --deployments=pprbod-source-provider-v4*"
    
  3. Выполните перезапуск WildFly.

  4. Запустите компонеты Платформы в нужном порядке.

  5. Запустите компоненты Archiving в следующем порядке:

    1. pprbod-source-provider-v4.war.

    2. pprbod-stream-processor.war.

    3. pprbod-data-quality-processor.war.

    4. pprbod-offline-dq-collector-v4.war.

    5. pprbod-applied-journal-handler.war.

    6. Остальные модули Archiving в любом порядке.

  6. Повторите шаги 1-4 на всех серверах приложений WildFly, где необходимо установить Archiving.

Если запуск всех модулей на всех узлах произведен успешно, Archiving установлен на полигон.

В случае возникновения ошибок при запуске одного из модулей необходимо проверить корректность выполнения предыдущих шагов развертывания.

Включение потока АС Прикладной журнал#

Необходимо включить поток ПЖ во всех зонах ПЖ, где он был отключен на шаге Отключение потока АС Прикладной журнал.

Признаки установки компонентов Archiving на стенд#

Чек-лист установленного Archiving:

  • На серверах приложений все модули Archiving установлены успешно.

  • В логах отсуствуют ошибки.

  • В АС ПЖ идет репликация данных (журналы помечены зеленым).