Обновление Закрома.Хранение
Закрома.Хранение поддерживает онлайн-обновление: узлы обновляются по одному, и кластер хранения продолжает работать.
Перед обновлением ознакомьтесь с изменениями поставки в Предупреждениях при обновлении.
Поддерживаемый порядок обновления
Версии продукта обновляются последовательно: каждая следующая версия устанавливается только поверх предыдущей. Исправления в пределах одной версии, например с 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
Подготовка к обновлению
-
Проверьте доступность всех сервисов — обязательно.
-
Сделайте резервную копию БД PostgreSQL — рекомендуется.
-
Если имена узлов 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. Исходные файлы при этом не изменяются: результат сохраняется в новый файл, проверяется и только затем копируется в новую поставку.
-
Распакуйте архив новой поставки и задайте пути к файлам:
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— файл того же сценария из новой поставки. -
Перенесите конфигурацию в новый файл. В
-fи-Tуказываются версии поставки, а не версии продукта:1./helper/helper config migrate -s "$old" -t "$new" -f 8.0.0 -T 8.1.0 -o zakroma-storage.migrated.ymlДля каждого изменения утилита выводит текущее значение, действие и новое значение, в конце — сводку и предупреждения об удалённых параметрах. Пароли в выводе маскируются, в файл записываются реальные значения.
-
Проверьте результат на соответствие структуре новой поставки:
1./helper/helper config validate -s zakroma-storage.migrated.yml -t "$new"Неизвестные параметры и несовпадение структуры — ошибки (код возврата
1), отсутствующие параметры — предупреждения. -
Сверьте результат с изменениями поставки 8.1.0 в Предупреждениях при обновлении, в том числе порты, TLS и
scrambler_keys, и скопируйте его в новую поставку:1cp zakroma-storage.migrated.yml "$new"
Для ZDS повторите шаги с файлом zakroma-zds-v2-ec.yml и параметром -C zds в командах config migrate и config validate.
Обновление Закрома.Хранение
Онлайн-обновление
- Убедитесь, что текущая версия — предыдущая поддерживаемая для целевой.
- Проверьте доступность сервисов Закрома.Хранение и внешних зависимостей.
- Запустите плейбук обновления для одного узла с
--limit <HOSTNAME>или плейбук сserial: 1. - Проверьте на узле сервис
zakroma-storage-monolith, логи и доступность S3 API и Admin UI. - Переходите к следующему узлу только после успешной проверки предыдущего.
- Повторите для всех узлов группы
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-сервиса и подготавливает узлы к монолитной архитектуре.
Перед запуском выполните подготовку:
- Распакуйте архив поставки
8.1.0. - Перенесите собственные значения из
group_varsпредыдущей поставки вgroup_varsновой поставки: утилитойhelperили вручную по статье Предупреждения при обновлении. - Убедитесь, что файл лицензии присутствует на узлах Закрома.Хранение.
Плейбук выполняется последовательно, по одному узлу (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. Состав кластера проверьте командой из раздела «Подготовка к обновлению».