Предупреждения при обновлении
Важные изменения в текущей поставке
-
В Закрома.Хранение 2.9 изменена схема адресации S3 API: path-style и virtual-hosted-style доступны через единый адрес
<workspace>.<FQDN>, а адрес глобального namespace изменён сgs.<FQDN>наglobal.<FQDN>. Перед обновлением подготовьте DNS-записи и проверьте настройки клиентских приложений. Для обратной совместимости старые адреса<workspace>.ps.<FQDN>и<workspace>.vs.<FQDN>можно добавить как дополнительные домены. -
Nginx теперь является опциональным компонентом поставки. Его настройка требуется только для инсталляций, в которых Nginx использовался раньше, как обязательный компонент.
Поддерживаемый порядок обновления
Обновление на целевую версию поддерживается только с предыдущей версии продукта. Прямой переход через одну или несколько версий не поддерживается.
Для перехода на Закрома.Хранение 2.9 сначала обновите инсталляцию до последней доступной версии 2.8.X, выполните проверку работоспособности сервисов и только после этого выполняйте обновление до версии 2.9.X.
Пример корректной цепочки обновления:
12.7.X -> 2.8.X -> 2.9.X
Пример неподдерживаемого перехода:
12.7.X -> 2.9.X
Онлайн-обновление
Начиная с версии 2.8.0 поддерживается онлайн-обновление узлов Закрома.Хранение. Данный режим относится только к компонентам Закрома.Хранение и не распространяется на внешние сервисы и инфраструктурные компоненты, например PostgreSQL, Kafka, Keycloak, Nginx или ZDS.
Обновление рекомендуется выполнять последовательно, по одному узлу. Для этого используйте лимитирование целевых хостов в Ansible через параметр --limit <hostname>. При таком подходе playbook выполняется только на указанном узле, после чего можно проверить состояние сервисов и перейти к следующему узлу.
Пример обновления одного узла Закрома.Хранение в базовом кластере:
1ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-zakroma-storage.yml --limit rutherford-2
После успешного обновления и проверки узла rutherford-2 выполните обновление следующего узла:
1ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-zakroma-storage.yml --limit rutherford-3
Альтернативный вариант — использовать параметр serial в playbook или при запуске Ansible через extra vars или через конфигурацию плейбука, если используемый плейбук поддерживает такую схему выполнения. Значение serial: 1 ограничивает параллельное выполнение одним хостом из выбранной группы.
Пример фрагмента playbook:
1- hosts: zakroma-storage 2 serial: 1 3 become: true 4 tasks: 5 - import_role: 6 name: zakroma-storage
Рекомендуемый порядок онлайн-обновления:
- Перед началом убедитесь, что текущая версия является предыдущей поддерживаемой версией для целевого релиза.
- Проверьте доступность сервисов Закрома.Хранение и состояние внешних зависимостей.
- Выберите первый узел для обновления.
- Запустите playbook Закрома.Хранение с параметром
--limit <hostname>либо используйте playbook сserial: 1. - После завершения обновления проверьте systemd-сервисы, логи приложения и доступность S3/Admin API.
- Переходите к следующему узлу только после успешной проверки предыдущего.
- Повторите процедуру для всех узлов группы
zakroma-storage.
Рекомендуемые действия перед обновлением ПО
-
Обязательно выполнить проверку доступности всех сервисов.
-
Рекомендуется сделать резервную копию БД PostgreSQL.
-
При изменении имён узлов, на которых запущен ZDS, проверьте, что в инвентаре Ansible и в конфигурации ZDS используется единообразное именование узлов в соответствии с требованиями к построению кластера.
По умолчанию для создания первоначальной конфигурации используется переменная
ansible_hostname. Если её значение отличается от текущегоnodeName, кластер может стать недоступным.Команды для проверки имён узлов ZDS:
Проверка текущего
ansible_hostname:1ansible -m setup -i inventories/тип_инсталляции/hosts zakroma-ds-agent-ec | grep ansible_hostnameПроверка имён в конфигурации ZDS (
nodeName):1curl -u zakromaadmin:zakromaadmin 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