Обновление
В данном разделе описан гайд по миграции на версию 3.0.0
Для сохранения обратной совместимости необходимо обновлять компоненты GRDL в следующем порядке:
- Развертывание Liquibase на репозитарную БД консоли GRDL.
- Развертывание консоли GRDL.
- Развертывание UI.
- Развертывание воркеров.
Для корректной работы при обновлении системы с несколькими плечами и балансировщиком необходимо, чтобы балансировщик не нарушал порядок обновления.
Пример некорректной конфигурации
Балансировщик стоит между UI и двумя плечами с консолью GRDL. Тогда при обновлении UI и первого плеча с консолью GRDL автоматически нарушается порядок обновления на втором плече с консолью GRDL.
Пример корректной конфигурации
Балансировщик стоит между пользователем и двумя плечами с UI и консолью GRDL. Тогда при обновлении любого из плечей нет воздействия на другое плечо.
Сценарий обновления консоли GRDL
Проверка готовности БД GRDL к обновлению
При установке компонента GRDL с нуля, воспользуйтесь Руководством по установке.
- Существует пользователь (роль) и схема gdl в БД модуля управления и ему выданы необходимые права
- Созданы tablespace grdl_ts_data и grdl_ts_idx
Шаги обновления
-
Запустите сценарий (playbook) DB_UPDATE перед установкой консоли, для обновления БД консоли.
-
Удалите конфигурационные файлы k8s GraDeLy. Для этого выполните развертывание через cd пайплайн.
Для подсистем SUBSYSTEM:
GRDL_CONSOLE_FULL:-
Выберите версию дистрибутива
DISTRIB_VERSION: <Предыдущая версия дистрибутива>. -
Выберите список сценариев для установки дистрибутива:
MIGRATION_FP_CONF;FP_CONF_CHECK;KUBERNETES_PURGE_PROJECT
подсказкаЕсли сценарий
KUBERNETES_PURGE_PROJECTнедоступен для cd пайплайна, удалите объекты k8s, принадлежащие компоненту GraDeLy, вручную. -
-
Разверните новую версию GraDeLy через cd пайплайн.
Для подсистем SUBSYSTEM:
GRDL_CONSOLE_FULL:-
Выберите версию дистрибутива
DISTRIB_VERSION: <Новая версия дистрибутива>. -
Выберите список сценариев для установки дистрибутива:
DB_UPDATEMIGRATION_FP_CONF;FP_CONF_CHECK;OPENSHIFT_DEPLOYOPENSHIFT_INGRESS_EGRESS_DEPLOY
подсказкаСценарий
DB_UPDATEвыполните для подсистемGRDL_CONSOLE. ДляGRDL_CONSOLEустановите в cd пайплайне значение ключаworker_db_flag: "NO". -
Проверка обновления
Проверьте статус приложения при помощи healthcheck (подробнее в разделе «Проверка работоспособности») по завершении обновления.
Сценарий обновления GraDely Worker в K8s середе
Этот сценарий обновления для ситуаций, когда между версиями соблюдается обратная совместимость. GraDeLy гарантирует совместимость версий релизов.
Проверка готовности клиентской БД к обновлению
Выполните шаги раздела Подготовка БД источника и БД приемника для работы с GraDeLy.
Проверка готовности Kafka к обновлению
Выполните шаги раздела Kafka-топики в GraDeLy.
Шаги обновления
-
Требуется подготовить subsystems.json добавив него новые SUBSYSTEM пример:
Для установки компонента RPLW (module)
"<RPLW_SUBSYSTEM>": {"fpType": "<fpType>","fpi_name": "rplw","nexus_repo": "<nexus_repo>","groupId": "<groupId>","artifactId": "rplw-cfg","versionFilter": "D-*","fpi_name_ose": "rplw","app_name": ["rplw-module"],"registryPath": "<registryPath>"}, -
Сделайте back-up базы данных.
-
Удалите предыдущую версию приложения, чтобы не было одновременно работающих серверов разных релизов (подробнее в разделе «Удаление»).
-
Выполните шаги из раздела Установка RPLW в DropApp.
примечаниеОсобенности обновления компонента RPLW с релизов до 2.3.x:
- Если установка RPLW будет производиться в namespace module предыдущих релизов, то перед этим потребуется очистить этот namespace от манифестов предыдущих релизов.
- Если установка RPLW будет производиться в новый namespace то его требуется настроить в соответствии с namespace где был развернут module.
-
Проверяйте версию дистрибутива вручную через label(version) прикладных подов или через командную строку администратором (например
kubectl get pods -l version=D-2.0.0-XXXвыведет все поды версии).
Проверка обновления
Проверьте статус приложения при помощи healthcheck (подробнее в разделе «Проверка работоспособности») по завершении обновления.
Сценарий обновления GraDely Worker на VM
Обновление с помощью Playbook
-
В директории Ansible, из которой выполнялось развертывание выполните запуск Playbook обновления. Для этого:
ansible-playbook update.yml --ask-vault-pass -
Дождитесь результата выполнения Playbook.
Ручное обновление
Шаги обновления
Сценарий выполняется от суперпользователя. Перед заменой всегда создавайте back-up текущей версии.
-
Подготовьте файлы нужной версии.
Скачайте обновленную версию
.jarи (опционально) конфигурационных файлов на целевую VM. -
Остановите сервис. Для этого:
systemctl stop grdlw.service 2>/dev/null || true -
Создайте back-up файлов текущей версии. Для этого:
cp -p /opt/cdc/grdlw/bin/grdlw.jar /opt/cdc/grdlw/bin/grdlw.jar.bak.$(date +%F) 2>/dev/null || truecp -p /opt/cdc/grdlw/conf/grdlw.properties /opt/cdc/grdlw/conf/grdlw.properties.bak.$(date +%F) 2>/dev/null || true -
Подмените файл
/opt/cdc/grdlw/bin/grdlw.jarна файл нужной версии. Для этого:rm -f /opt/cdc/grdlw/bin/grdlw.jarmv <path/to/new/grdlw.jar> /opt/cdc/grdlw/bin/grdlw.jarchown grdl:grdl /opt/cdc/grdlw/bin/grdlw.jarchmod 640 /opt/cdc/grdlw/bin/grdlw.jar -
В случае если изменилась конфигурация, добавьте файл нужной версии в директорию с конфигурацией. Для этого:
rm -f /opt/cdc/grdlw/conf/grdlw.propertiesmv <path/to/new/grdlw.properties> /opt/cdc/grdlw/conf/grdlw.propertieschown grdl-svc:grdl-svc /opt/cdc/grdlw/conf/grdlw.propertieschmod 640 /opt/cdc/grdlw/conf/grdlw.propertiesДля файла
logback.xmlшаг выполняется аналогично. -
Запустите сервис. Для этого:
systemctl start grdlw.service
Изменения в параметрах настройки
Изменения в параметрах настройки воркеров
Если миграция осуществляется с релиза раньше 2.3.1, необходимо учесть актуальную логику работы с метками.
- Если модуль в графе содержит метку, то он будет работать только с воркером, имеющим соответствующую метку. Для работы графа репликации необходимо дополнительно проставить метки на модули, если предполагается использование воркеров с метками.
- Если модуль в графе репликации не содержит метку, то он будет работать с воркерами без меток. Если не предполагается использование воркеров с метками, то проставление меток на модули не требуется.