Обновление Закрома.Хранение

Закрома.Хранение поддерживает онлайн-обновление: узлы обновляются по одному, и кластер хранения продолжает работать.

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

Поддерживаемый порядок обновления

Версии продукта обновляются последовательно: каждая следующая версия устанавливается только поверх предыдущей. Исправления в пределах одной версии, например с 2.10.0 до 2.10.1, устанавливаются напрямую.

Для перехода на 2.10 сначала обновите инсталляцию до последней версии 2.9.X, проверьте работоспособность сервисов и только затем обновляйте до 2.10.X.

Пример корректной цепочки обновления:

12.8.X -> 2.9.X -> 2.10.X

Пример неподдерживаемого перехода:

12.8.X -> 2.10.X

Подготовка к обновлению

  1. Проверьте доступность всех сервисов — обязательно.

  2. Сделайте резервную копию БД PostgreSQL — рекомендуется.

  3. Если имена узлов ZDS менялись, проверьте, что инвентарь Ansible и конфигурация ZDS используют одинаковые имена узлов.

    По умолчанию имя узла берётся из ansible_hostname. Если оно отличается от текущего nodeName, кластер может стать недоступным.

    Текущий ansible_hostname:

    1ANSIBLE_CONFIG=ansible.cfg ansible -m setup -i inventories/<ТИП_ИНСТАЛЛЯЦИИ>/hosts zakroma-zds-v2-ec | grep ansible_hostname

    Имена в конфигурации ZDS (nodeName):

    1curl -u '<ZDS_ACCESS_KEY>:<ZDS_SECRET_KEY>' http://localhost:8088/inner/status | jq '.nodeName, .nodes[].name'

    Если ansible_hostname отличается от nodeName, задайте прежние имена узлов переменной zakroma_zds_node_name в инвентаре Ansible:

    1[zakroma-zds-v2-ec] 2rutherford-2 ansible_host=192.168.1.2 zakroma_zds_node_name=rutherford-2 3rutherford-3 ansible_host=192.168.1.3 zakroma_zds_node_name=rutherford-3 4rutherford-4 ansible_host=192.168.1.4 zakroma_zds_node_name=rutherford-4

Перенос конфигурации утилитой helper

Начиная с поставки 8.1.0 конфигурацию можно перенести утилитой helper. Утилита не входит в поставку — её передаёт техническая поддержка.

Утилита helper приводит конфигурацию текущей инсталляции к формату новой поставки и создаёт заполненный файл group_vars, по которому можно выполнить установку без ручного переноса параметров.

Поддерживаются файлы zakroma-storage.yml (компонент storage) и zakroma-zds-v2-ec.yml (компонент zds), переходы с поставок начиная с 5.0.0. Если прямого перехода нет, утилита последовательно применяет переходы между соседними поставками. Переход ZDS v1 на ZDS v2 утилитой не выполняется.

Получение helper

Версия утилиты соответствует актуальному релизу. Распакуйте архив на управляющем сервере Ansible:

1tar -xzf helper-archive-<ВЕРСИЯ>.tgz

Утилита находит правила в каталоге helper/rules/ и работает без доступа к сети.

Обновление конфигурации

Порядок ниже приведён для zakroma-storage.yml при переходе с поставки 8.0.0. Исходные файлы при этом не изменяются: результат сохраняется в новый файл, проверяется и только затем копируется в новую поставку.

  1. Распакуйте архив новой поставки и задайте пути к файлам:

    1old=zakroma-roles-8.0.0/inventories/<ТИП_ИНСТАЛЛЯЦИИ>/group_vars/zakroma-storage.yml 2new=zakroma-roles-8.1.0/inventories/<ТИП_ИНСТАЛЛЯЦИИ>/group_vars/zakroma-storage.yml

    В old укажите файл, которым установлена текущая инсталляция, в new — файл того же сценария из новой поставки.

  2. Перенесите конфигурацию в новый файл. В -f и -T указываются версии поставки, а не версии продукта:

    1./helper/helper config migrate -s "$old" -t "$new" -f 8.0.0 -T 8.1.0 -o zakroma-storage.migrated.yml

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

  3. Проверьте результат на соответствие структуре новой поставки:

    1./helper/helper config validate -s zakroma-storage.migrated.yml -t "$new"

    Неизвестные параметры и несовпадение структуры — ошибки (код возврата 1), отсутствующие параметры — предупреждения.

  4. Сверьте результат с изменениями поставки 8.1.0 в Предупреждениях при обновлении, в том числе порты, TLS и scrambler_keys, и скопируйте его в новую поставку:

    1cp zakroma-storage.migrated.yml "$new"

Для ZDS повторите шаги с файлом zakroma-zds-v2-ec.yml и параметром -C zds в командах config migrate и config validate.

Обновление Закрома.Хранение

Онлайн-обновление

  1. Убедитесь, что текущая версия — предыдущая поддерживаемая для целевой.
  2. Проверьте доступность сервисов Закрома.Хранение и внешних зависимостей.
  3. Запустите плейбук обновления для одного узла с --limit <HOSTNAME> или плейбук с serial: 1.
  4. Проверьте на узле сервис zakroma-storage-monolith, логи и доступность S3 API и Admin UI.
  5. Переходите к следующему узлу только после успешной проверки предыдущего.
  6. Повторите для всех узлов группы zakroma-storage.

Обновление с 2.10.0

Для обновления с 2.10.0 (поставка 8.0.0) используйте плейбук установки playbooks/sample-play-zakroma-storage.yml. Плейбук sample-play-zakroma-storage-upgrade.yml предназначен для перехода с 2.9.X.

Обновляйте узлы по одному, указывая имя узла в ключе --limit:

1ANSIBLE_CONFIG=ansible.cfg ansible-playbook \ 2 -i inventories/<ТИП_ИНСТАЛЛЯЦИИ>/hosts \ 3 playbooks/sample-play-zakroma-storage.yml \ 4 --limit <HOSTNAME>

После каждого узла выполните проверки из раздела «Онлайн-обновление» выше.

Обновление с 2.9.X

Переход с 2.9.X на 2.10 выполняется плейбуком playbooks/sample-play-zakroma-storage-upgrade.yml из архива поставки 8.1.0. Плейбук переносит лицензию из каталога legacy-сервиса и подготавливает узлы к монолитной архитектуре.

Перед запуском выполните подготовку:

  1. Распакуйте архив поставки 8.1.0.
  2. Перенесите собственные значения из group_vars предыдущей поставки в group_vars новой поставки: утилитой helper или вручную по статье Предупреждения при обновлении.
  3. Убедитесь, что файл лицензии присутствует на узлах Закрома.Хранение.

Плейбук выполняется последовательно, по одному узлу (serial: 1), и останавливается при первой ошибке.

Запуск для базового кластера:

1ANSIBLE_CONFIG=ansible.cfg ansible-playbook \ 2 -i inventories/base-cluster/hosts \ 3 playbooks/sample-play-zakroma-storage-upgrade.yml

Для других сценариев укажите соответствующий inventory: inventories/single-node/hosts для Single Node; для мультикластера выполните плейбук отдельно для каждого кластера — inventories/multicluster/cluster-1/hosts и inventories/multicluster/cluster-2/hosts. При использовании Ansible Vault в group_vars добавьте --ask-vault-pass.

Если файл лицензии расположен не по стандартному пути, укажите его в old_license_path:

1ANSIBLE_CONFIG=ansible.cfg ansible-playbook \ 2 -i inventories/base-cluster/hosts \ 3 playbooks/sample-play-zakroma-storage-upgrade.yml \ 4 -e old_license_path=/путь/к/licence

После завершения плейбука проверьте на каждом узле systemd-сервис zakroma-storage-monolith, логи приложения и доступность S3 API и Admin UI. Порядок поузловой проверки приведён в разделе «Онлайн-обновление» выше.

Не удаляйте артефакты прежней версии до завершения обновления и ручной проверки. Очистка выполняется отдельным плейбуком playbooks/sample-play-delete-old-version.yml только с явным подтверждением: без -e cleanup_approved=true плейбук прерывается с ошибкой.

1ANSIBLE_CONFIG=ansible.cfg ansible-playbook \ 2 -i inventories/base-cluster/hosts \ 3 playbooks/sample-play-delete-old-version.yml \ 4 -e cleanup_approved=true

Обновление ZDS

Перед обновлением выполните preflight-проверку ZDS:

1ANSIBLE_CONFIG=ansible.cfg ansible-playbook \ 2 -i inventories/<ТИП_ИНСТАЛЛЯЦИИ>/hosts \ 3 playbooks/sample-play-zakroma-zds-v2-preflight.yml

Обновите ZDS плейбуком установки для всех узлов кластера ZDS:

1ANSIBLE_CONFIG=ansible.cfg ansible-playbook \ 2 -i inventories/<ТИП_ИНСТАЛЛЯЦИИ>/hosts \ 3 playbooks/sample-play-zakroma-zds-v2-ec.yml

Роль перезапускает zakroma-ds-agent на узлах по одному. Не ограничивайте запуск отдельным узлом через --limit: конфигурация узла формируется по всем узлам кластера ZDS. В растянутом кластере допустим запуск по группе площадки — --limit zakroma-zds-site-1, затем --limit zakroma-zds-site-2.

После обновления на каждом узле проверьте сервис и готовность кластера:

1sudo systemctl status --no-pager --full zakroma-ds-agent.service 2curl -fsS -o /dev/null -w '%{http_code}\n' http://<ZDS_NODE>:8088/readyz

Ожидаются Active: active (running) и HTTP 200. Состав кластера проверьте командой из раздела «Подготовка к обновлению».