Предупреждения при обновлении

Важные изменения в текущей поставке

  1. В Закрома.Хранение 2.9 изменена схема адресации S3 API: path-style и virtual-hosted-style доступны через единый адрес <workspace>.<FQDN>, а адрес глобального namespace изменён с gs.<FQDN> на global.<FQDN>. Перед обновлением подготовьте DNS-записи и проверьте настройки клиентских приложений. Для обратной совместимости старые адреса <workspace>.ps.<FQDN> и <workspace>.vs.<FQDN> можно добавить как дополнительные домены.

  2. 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

Рекомендуемый порядок онлайн-обновления:

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

Рекомендуемые действия перед обновлением ПО

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

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

  3. При изменении имён узлов, на которых запущен 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