Установка мультикластера

Назначение и ограничения

Мультикластер — это два независимых трёхузловых кластера Закрома.Хранение и ZDS, которые обмениваются данными через асинхронную репликацию. Каждый кластер использует собственные inventory, group_vars, PostgreSQL и Kafka; кластеры устанавливаются последовательно и независимо друг от друга.

Установка каждого кластера описана полностью. Общие принципы подготовки узлов, DNS, TLS и PostgreSQL совпадают с базовым кластером; требования к инфраструктуре приведены в Подготовке окружения к установке.

Ограничения отказоустойчивости

В примере каждый кластер использует один внешний PostgreSQL, который остаётся единой точкой отказа. Для продуктивной инсталляции необходим отказоустойчивый кластер PostgreSQL, а ресурсы для узлов рекомендуется рассчитать совместно с технической поддержкой.

Устанавливаемые компоненты

КомпонентОписание
Закрома.ХранениеУправляющий слой, предоставляющий S3 API и Admin UI.
ZDSСлой хранения данных: не менее трёх узлов в режиме Erasure Coding или репликации (Full Copy).
PostgreSQLСУБД для метаданных Закрома.Хранение.
KafkaСистема обмена сообщениями, используемая сервисами Закрома.Хранение.
NginxТочка TLS-терминации для межкластерного CDN-трафика. Работает на узлах Закрома.Хранение и проксирует запросы в локальный CDN endpoint.
СерверКомпонентыКластер
loran-10.cluster-1.zakroma.internalЗакрома.Хранение, ZDS (Erasure Coding 2+1)1
loran-11.cluster-1.zakroma.internalЗакрома.Хранение, ZDS (Erasure Coding 2+1)1
loran-12.cluster-1.zakroma.internalЗакрома.Хранение, ZDS (Erasure Coding 2+1)1
loran-14.cluster-1.zakroma.internalPostgreSQL1
loran-15.cluster-1.zakroma.internalKafka1
loran-20.cluster-2.zakroma.internalЗакрома.Хранение, ZDS (Erasure Coding 2+1)2
loran-21.cluster-2.zakroma.internalЗакрома.Хранение, ZDS (Erasure Coding 2+1)2
loran-22.cluster-2.zakroma.internalЗакрома.Хранение, ZDS (Erasure Coding 2+1)2
loran-24.cluster-2.zakroma.internalPostgreSQL2
loran-25.cluster-2.zakroma.internalKafka2

Схема установки

Два независимых трёхузловых кластера используют отдельные серверы PostgreSQL и Kafka и реплицируют между собой асинхронно. На узлах Закрома.Хранение Nginx принимает межкластерные запросы к zakroma-cdn.cluster-N.zakroma.internal:443, терминирует TLS и проксирует их в локальный CDN endpoint http://127.0.0.1:8099. Настройка внешнего балансировщика в этой статье не рассматривается.

Обозначения Server1–Server10 условные. Используйте имена узлов из таблицы и inventory соответствующего кластера в каталоге inventories/multicluster.

Схема мультикластерной установки

Шаги установки двух кластеров совпадают; различаются только inventory, имена узлов и переменные, перечисленные в таблице:

Что различаетсяКластер 1Кластер 2
Каталог inventoryinventories/multicluster/cluster-1inventories/multicluster/cluster-2
Узлы Закрома.Хранение и ZDSloran-10–loran-12loran-20–loran-22
PostgreSQLloran-14.cluster-1.zakroma.internalloran-24.cluster-2.zakroma.internal
Kafkaloran-15.cluster-1.zakroma.internalloran-25.cluster-2.zakroma.internal
CDN endpointzakroma-cdn.cluster-1.zakroma.internal:443zakroma-cdn.cluster-2.zakroma.internal:443
zakroma_storage_cdn.this.cluster_nameZakromaCluster-1ZakromaCluster-2
zakroma_storage_cdn.others[].nameZakromaCluster-2ZakromaCluster-1

Установка

1. Получение и распаковка архива

1tar -xvzf zakroma-roles-<ВЕРСИЯ_РЕЛИЗА_АРХИВА_С_ANSIBLE_РОЛЯМИ>.tar.gz

1.1. Переход в каталог поставки

1cd zakroma-roles-<ВЕРСИЯ_РЕЛИЗА_АРХИВА_С_ANSIBLE_РОЛЯМИ>

2. Установка первого кластера

2.1. Настройка инвентаря Ansible

В качестве примера используйте файл inventories/multicluster/cluster-1/hosts.

1[certificates] 2loran-10 ansible_host=10.128.0.10 3loran-11 ansible_host=10.128.0.11 4loran-12 ansible_host=10.128.0.12 5 6[zakroma-storage-nginx] 7loran-10 ansible_host=10.128.0.10 8loran-11 ansible_host=10.128.0.11 9loran-12 ansible_host=10.128.0.12 10 11[zakroma-storage] 12loran-10 ansible_host=10.128.0.10 13loran-11 ansible_host=10.128.0.11 14loran-12 ansible_host=10.128.0.12 15 16[zakroma-zds-v2-ec] 17loran-10 ansible_host=10.128.0.10 zakroma_zds_node_name=loran-10 18loran-11 ansible_host=10.128.0.11 zakroma_zds_node_name=loran-11 19loran-12 ansible_host=10.128.0.12 zakroma_zds_node_name=loran-12 20 21[java] 22loran-15 ansible_host=10.128.0.15 23 24[kafka] 25kafka-1.cluster-1.zakroma.internal ansible_host=10.128.0.15

Группа zakroma-storage-nginx содержит узлы, на которых Nginx терминирует TLS для CDN, группы java и kafka — узел Kafka кластера.

Проверьте SSH-доступ и выполнение Python-модулей Ansible:

1ANSIBLE_CONFIG=ansible.cfg ansible -m ping -i inventories/multicluster/cluster-1/hosts all

Ожидаемый результат: каждый узел отвечает SUCCESS и pong. Для проверки текущего ansible_hostname на узлах выполните:

1ANSIBLE_CONFIG=ansible.cfg ansible -m setup -i inventories/multicluster/cluster-1/hosts all | grep ansible_hostname

2.2. Копирование сертификатов на целевые узлы с помощью роли certificates

Поместите сертификат и ключ первого кластера в каталог roles/certificates/files/ в корне распакованной поставки на управляющем сервере. Значение certificates_copy_source_path: "files" оставьте без изменений: путь задаётся относительно каталога роли certificates.

  • Отредактируйте файл переменных inventories/multicluster/cluster-1/group_vars/certificates.yml роли certificates для группы хостов certificates.
1--- 2# Задаёт путь к каталогу, откуда копируются сертификаты и ключи. 3certificates_copy_source_path: "files" 4 5# Содержит информацию о каждом хосте, на который нужно скопировать сертификаты и ключи.
Развернутьarrow
  • Запустите плейбук:
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/multicluster/cluster-1/hosts playbooks/sample-play-copy-certificates.yml

2.3. Установка Kafka с помощью ролей java и kafka

К Kafka первого кластера подключаются сервисы Закрома.Хранение этого кластера и CDN второго кластера, поэтому установите её до Закрома.Хранение. Kafka размещается на узле loran-15 под именем kafka-1.cluster-1.zakroma.internal. Роль kafka публикует брокер под именем узла из инвентаря Ansible, поэтому это имя должно разрешаться с узлов Закрома.Хранение обоих кластеров, а порт 9092 — быть доступен с них.

  • Отредактируйте файл переменных inventories/multicluster/cluster-1/group_vars/kafka.yml роли kafka для группы хостов kafka. Не заменяйте файл целиком: проверьте узлы брокера и контроллера и задайте пароли.
1kafka_broker_nodes: 2 - kafka-1.cluster-1.zakroma.internal 3 4kafka_controller_nodes: 5 - kafka-1.cluster-1.zakroma.internal 6 7kafka_sasl_enabled: true 8kafka_admin_username: admin 9kafka_admin_password: password 10kafka_users: 11 - username: kafka_user 12 password: kafka_user_password 13 14kafka_acl_enabled: true
ПеременнаяЧто указать
kafka_broker_nodes, kafka_controller_nodesИмя узла из группы [kafka] инвентаря Ansible. В примере один узел выполняет обе роли (режим KRaft).
kafka_sasl_enabledtrue — Kafka принимает подключения по протоколу SASL_PLAINTEXT с механизмом PLAIN.
kafka_admin_username, kafka_admin_passwordАдминистратор Kafka. Замените пароль.
kafka_usersПользователь, под которым подключаются сервисы Закрома.Хранение. Те же имя и пароль укажите в zakroma_storage_kafka этого кластера (шаг 2.4) и в zakroma_storage_cdn.others[].zakroma_storage_kafka второго кластера (шаг 3.4).
kafka_acl_enabledtrue — доступ к топикам и группам потребителей ограничен правилами kafka_topics_acl и kafka_groups_acl из файла поставки.

Список kafka_topics в файле поставки уже содержит топики сервисов Закрома.Хранение и CDN первого кластера: ZakromaStorageCluster-1, ZakromaGatewayCluster-1 и ZakromaStorageDeadLetterQueueCluster-1. Не удаляйте их: автоматическое создание топиков отключено (topic_auto_creation.enabled: false в zakroma-storage.yml).

Пароли зашифруйте через ansible-vault encrypt_string по примеру из базовой инструкции и запускайте плейбуки с ключом --ask-vault-pass.

  • Установите Java и Kafka:
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/multicluster/cluster-1/hosts playbooks/sample-play-java.yml 2ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/multicluster/cluster-1/hosts playbooks/sample-play-kafka.yml

На узле Kafka проверьте сервис:

1sudo systemctl status --no-pager --full kafka.service

Ожидаемое состояние — Active: active (running) с указанием времени работы сервиса. С узлов Закрома.Хранение обоих кластеров проверьте доступность брокера:

1nc -vz -w 3 kafka-1.cluster-1.zakroma.internal 9092

2.4. Установка Закрома.Хранение с помощью роли zakroma-storage

  • Подготовьте файл лицензии licence, поместите его в каталог files/zakroma-licence и запустите плейбук playbooks/sample-play-copy-licence-file.yml для группы хостов zakroma-storage.

  • Отредактируйте файл переменных inventories/multicluster/cluster-1/group_vars/zakroma-storage.yml роли zakroma-storage для группы хостов zakroma-storage.

Ключи шифрования данных в БД

Для новой инсталляции задайте ключи шифрования данных в БД scrambler_keys в блоках zakroma_storage_gateway и zakroma_storage_core, а при использовании сервиса notification — и в zakroma_storage_notification, до первого запуска плейбука sample-play-zakroma-storage.yml. Порядок генерации ключа и ротации приведён в инструкции базового кластера. Если в существующей инсталляции ключи не использовались, оставьте scrambler_keys: []: записи в БД зашифровать уже нельзя. Каждый кластер использует собственную БД, поэтому ключи кластеров могут различаться.

1--- 2# ---------------------------------------------------ОБЩИЕ НАСТРОЙКИ--------------------------------------------------- 3# Выполнить удаление Zakroma и ничего больше 4zakroma_storage_delete_only: false
Развернутьarrow
  • Перед установкой выполните preflight-проверку Закрома.Хранение:
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/multicluster/cluster-1/hosts playbooks/sample-play-zakroma-storage-preflight.yml

Продолжайте установку только после успешного выполнения: в PLAY RECAP для всех узлов должны быть unreachable=0 и failed=0.

  • Запустите плейбук:
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/multicluster/cluster-1/hosts playbooks/sample-play-zakroma-storage.yml

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

1sudo systemctl status --no-pager --full zakroma-storage-monolith.service

Ожидаемое состояние — Active: active (running) с указанием времени работы сервиса.

2.5. Настройка Nginx для TLS-терминации CDN

В мультикластерном сценарии Nginx обязателен как точка TLS-терминации CDN. Убедитесь, что узлы loran-10, loran-11 и loran-12 входят в группу zakroma-storage-nginx файла inventories/multicluster/cluster-1/hosts.

Не удаляйте и не заменяйте vhost CDN из поставки в файле inventories/multicluster/cluster-1/group_vars/zakroma-storage-nginx.yml. Убедитесь, что в нём сохранены следующие ключевые параметры:

1- listen: "443 ssl" 2 filename: zakroma-cdn.cluster-1.zakroma.internal.443.conf 3 server_name: "zakroma-cdn.cluster-1.zakroma.internal" 4 extra_parameters: | 5 ssl_certificate /opt/certs/zakroma.crt; 6 ssl_certificate_key /opt/certs/zakroma.key; 7 location ~ ^/(.*) { 8 proxy_pass http://127.0.0.1:8099/$1$is_args$args; 9 }

Параметры удалённого кластера в zakroma_storage_cdn.others[] должны использовать host: "zakroma-cdn.cluster-2.zakroma.internal", port: 443, use_ssl: true и skip_verify: false.

Установите и настройте Nginx:

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

Проверьте конфигурацию и состояние сервиса на каждом узле Закрома.Хранение первого кластера:

1sudo nginx -t 2sudo systemctl status --no-pager --full nginx

Проверка конфигурации должна завершиться успешно, а сервис должен иметь состояние Active: active (running). Полное описание параметров приведено в Настройке Nginx.

2.6. Установка ZDS в режиме EC (Erasure Coding, минимум 3 узла)

Перед установкой ознакомьтесь с архитектурой ZDS: Что такое ZDS и Как ZDS хранит данные.

  • Отредактируйте файл переменных inventories/multicluster/cluster-1/group_vars/zakroma-zds-v2-ec.yml роли zakroma-zds-v2 для группы хостов zakroma-zds-v2-ec.
1# Выполнить удаление бинарного файла — удаляется только бинарный файл в директории /opt/zakroma/zakroma-ds-agent 2zakroma_zds_delete_binary: false 3 4# Выполнить только рестарт сервисов и ничего больше 5zakroma_zds_restart_services_only: false
Развернутьarrow
  • Перед установкой выполните preflight-проверку ZDS:
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/multicluster/cluster-1/hosts playbooks/sample-play-zakroma-zds-v2-preflight.yml

Продолжайте установку только после успешного выполнения: в PLAY RECAP для всех узлов должны быть unreachable=0 и failed=0.

  • Запустите плейбук:
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/multicluster/cluster-1/hosts playbooks/sample-play-zakroma-zds-v2-ec.yml

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

1sleep 5 2sudo systemctl status --no-pager --full zakroma-ds-agent.service

Ожидаемое состояние — Active: active (running) с указанием времени работы сервиса.


3. Установка второго кластера

3.1. Настройка инвентаря Ansible

В качестве примера используйте файл inventories/multicluster/cluster-2/hosts.

1[certificates] 2loran-20 ansible_host=10.129.0.20 3loran-21 ansible_host=10.129.0.21 4loran-22 ansible_host=10.129.0.22 5 6[zakroma-storage-nginx] 7loran-20 ansible_host=10.129.0.20 8loran-21 ansible_host=10.129.0.21 9loran-22 ansible_host=10.129.0.22 10 11[zakroma-storage] 12loran-20 ansible_host=10.129.0.20 13loran-21 ansible_host=10.129.0.21 14loran-22 ansible_host=10.129.0.22 15 16[zakroma-zds-v2-ec] 17loran-20 ansible_host=10.129.0.20 zakroma_zds_node_name=loran-20 18loran-21 ansible_host=10.129.0.21 zakroma_zds_node_name=loran-21 19loran-22 ansible_host=10.129.0.22 zakroma_zds_node_name=loran-22 20 21[java] 22loran-25 ansible_host=10.129.0.25 23 24[kafka] 25kafka-1.cluster-2.zakroma.internal ansible_host=10.129.0.25

Группа zakroma-storage-nginx содержит узлы, на которых Nginx терминирует TLS для CDN, группы java и kafka — узел Kafka кластера.

Проверьте SSH-доступ и выполнение Python-модулей Ansible:

1ANSIBLE_CONFIG=ansible.cfg ansible -m ping -i inventories/multicluster/cluster-2/hosts all

Ожидаемый результат: каждый узел отвечает SUCCESS и pong. Для проверки текущего ansible_hostname на узлах выполните:

1ANSIBLE_CONFIG=ansible.cfg ansible -m setup -i inventories/multicluster/cluster-2/hosts all | grep ansible_hostname

3.2. Копирование сертификатов на целевые узлы с помощью роли certificates

Поместите сертификат и ключ второго кластера в каталог roles/certificates/files/ в корне распакованной поставки на управляющем сервере. Значение certificates_copy_source_path: "files" оставьте без изменений: путь задаётся относительно каталога роли certificates.

  • Отредактируйте файл переменных inventories/multicluster/cluster-2/group_vars/certificates.yml роли certificates для группы хостов certificates.
1--- 2# Задаёт путь к каталогу, откуда копируются сертификаты и ключи. 3certificates_copy_source_path: "files" 4 5# Содержит информацию о каждом хосте, на который нужно скопировать сертификаты и ключи.
Развернутьarrow
  • Запустите плейбук:
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/multicluster/cluster-2/hosts playbooks/sample-play-copy-certificates.yml

3.3. Установка Kafka с помощью ролей java и kafka

К Kafka второго кластера подключаются сервисы Закрома.Хранение этого кластера и CDN первого кластера, поэтому установите её до Закрома.Хранение. Kafka размещается на узле loran-25 под именем kafka-1.cluster-2.zakroma.internal. Роль kafka публикует брокер под именем узла из инвентаря Ansible, поэтому это имя должно разрешаться с узлов Закрома.Хранение обоих кластеров, а порт 9092 — быть доступен с них.

  • Отредактируйте файл переменных inventories/multicluster/cluster-2/group_vars/kafka.yml роли kafka для группы хостов kafka. Не заменяйте файл целиком: проверьте узлы брокера и контроллера и задайте пароли.
1kafka_broker_nodes: 2 - kafka-1.cluster-2.zakroma.internal 3 4kafka_controller_nodes: 5 - kafka-1.cluster-2.zakroma.internal 6 7kafka_sasl_enabled: true 8kafka_admin_username: admin 9kafka_admin_password: password 10kafka_users: 11 - username: kafka_user 12 password: kafka_user_password 13 14kafka_acl_enabled: true
ПеременнаяЧто указать
kafka_broker_nodes, kafka_controller_nodesИмя узла из группы [kafka] инвентаря Ansible. В примере один узел выполняет обе роли (режим KRaft).
kafka_sasl_enabledtrue — Kafka принимает подключения по протоколу SASL_PLAINTEXT с механизмом PLAIN.
kafka_admin_username, kafka_admin_passwordАдминистратор Kafka. Замените пароль.
kafka_usersПользователь, под которым подключаются сервисы Закрома.Хранение. Те же имя и пароль укажите в zakroma_storage_kafka этого кластера (шаг 3.4) и в zakroma_storage_cdn.others[].zakroma_storage_kafka первого кластера (шаг 2.4).
kafka_acl_enabledtrue — доступ к топикам и группам потребителей ограничен правилами kafka_topics_acl и kafka_groups_acl из файла поставки.

Список kafka_topics в файле поставки уже содержит топики сервисов Закрома.Хранение и CDN второго кластера: ZakromaStorageCluster-2, ZakromaGatewayCluster-2 и ZakromaStorageDeadLetterQueueCluster-2. Не удаляйте их: автоматическое создание топиков отключено (topic_auto_creation.enabled: false в zakroma-storage.yml).

Пароли зашифруйте через ansible-vault encrypt_string по примеру из базовой инструкции и запускайте плейбуки с ключом --ask-vault-pass.

  • Установите Java и Kafka:
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/multicluster/cluster-2/hosts playbooks/sample-play-java.yml 2ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/multicluster/cluster-2/hosts playbooks/sample-play-kafka.yml

На узле Kafka проверьте сервис:

1sudo systemctl status --no-pager --full kafka.service

Ожидаемое состояние — Active: active (running) с указанием времени работы сервиса. С узлов Закрома.Хранение обоих кластеров проверьте доступность брокера:

1nc -vz -w 3 kafka-1.cluster-2.zakroma.internal 9092

3.4. Установка Закрома.Хранение с помощью роли zakroma-storage

  • Подготовьте файл лицензии licence, поместите его в каталог files/zakroma-licence и запустите плейбук playbooks/sample-play-copy-licence-file.yml для группы хостов zakroma-storage.

  • Отредактируйте файл переменных inventories/multicluster/cluster-2/group_vars/zakroma-storage.yml роли zakroma-storage для группы хостов zakroma-storage.

Ключи шифрования данных в БД

Для новой инсталляции задайте ключи шифрования данных в БД scrambler_keys в блоках zakroma_storage_gateway и zakroma_storage_core, а при использовании сервиса notification — и в zakroma_storage_notification, до первого запуска плейбука sample-play-zakroma-storage.yml. Порядок генерации ключа и ротации приведён в инструкции базового кластера. Если в существующей инсталляции ключи не использовались, оставьте scrambler_keys: []: записи в БД зашифровать уже нельзя. Каждый кластер использует собственную БД, поэтому ключи кластеров могут различаться.

1--- 2# ---------------------------------------------------ОБЩИЕ НАСТРОЙКИ--------------------------------------------------- 3# Выполнить удаление Zakroma и ничего больше 4zakroma_storage_delete_only: false
Развернутьarrow
  • Перед установкой выполните preflight-проверку Закрома.Хранение:
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/multicluster/cluster-2/hosts playbooks/sample-play-zakroma-storage-preflight.yml

Продолжайте установку только после успешного выполнения: в PLAY RECAP для всех узлов должны быть unreachable=0 и failed=0.

  • Запустите плейбук:
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/multicluster/cluster-2/hosts playbooks/sample-play-zakroma-storage.yml

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

1sudo systemctl status --no-pager --full zakroma-storage-monolith.service

Ожидаемое состояние — Active: active (running) с указанием времени работы сервиса.

3.5. Настройка Nginx для TLS-терминации CDN

В мультикластерном сценарии Nginx обязателен как точка TLS-терминации CDN. Убедитесь, что узлы loran-20, loran-21 и loran-22 входят в группу zakroma-storage-nginx файла inventories/multicluster/cluster-2/hosts.

Не удаляйте и не заменяйте vhost CDN из поставки в файле inventories/multicluster/cluster-2/group_vars/zakroma-storage-nginx.yml. Убедитесь, что в нём сохранены следующие ключевые параметры:

1- listen: "443 ssl" 2 filename: zakroma-cdn.cluster-2.zakroma.internal.443.conf 3 server_name: "zakroma-cdn.cluster-2.zakroma.internal" 4 extra_parameters: | 5 ssl_certificate /opt/certs/zakroma.crt; 6 ssl_certificate_key /opt/certs/zakroma.key; 7 location ~ ^/(.*) { 8 proxy_pass http://127.0.0.1:8099/$1$is_args$args; 9 }

Параметры удалённого кластера в zakroma_storage_cdn.others[] должны использовать host: "zakroma-cdn.cluster-1.zakroma.internal", port: 443, use_ssl: true и skip_verify: false.

Установите и настройте Nginx:

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

Проверьте конфигурацию и состояние сервиса на каждом узле Закрома.Хранение второго кластера:

1sudo nginx -t 2sudo systemctl status --no-pager --full nginx

Проверка конфигурации должна завершиться успешно, а сервис должен иметь состояние Active: active (running). Полное описание параметров приведено в Настройке Nginx.

3.6. Установка ZDS в режиме EC (Erasure Coding, минимум 3 узла)

Перед установкой ознакомьтесь с архитектурой ZDS: Что такое ZDS и Как ZDS хранит данные.

  • Отредактируйте файл переменных inventories/multicluster/cluster-2/group_vars/zakroma-zds-v2-ec.yml роли zakroma-zds-v2 для группы хостов zakroma-zds-v2-ec.
1# Выполнить удаление бинарного файла — удаляется только бинарный файл в директории /opt/zakroma/zakroma-ds-agent 2zakroma_zds_delete_binary: false 3 4# Выполнить только рестарт сервисов и ничего больше 5zakroma_zds_restart_services_only: false
Развернутьarrow
  • Перед установкой выполните preflight-проверку ZDS:
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/multicluster/cluster-2/hosts playbooks/sample-play-zakroma-zds-v2-preflight.yml

Продолжайте установку только после успешного выполнения: в PLAY RECAP для всех узлов должны быть unreachable=0 и failed=0.

  • Запустите плейбук:
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/multicluster/cluster-2/hosts playbooks/sample-play-zakroma-zds-v2-ec.yml

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

1sleep 5 2sudo systemctl status --no-pager --full zakroma-ds-agent.service

Ожидаемое состояние — Active: active (running) с указанием времени работы сервиса.

Проверка готовности

Кластеры проверяются независимо. Для каждого кластера убедитесь, что:

  • preflight- и установочные плейбуки завершились без failed и unreachable;
  • на каждом узле сервисы zakroma-storage-monolith.service и zakroma-ds-agent.service находятся в состояниях active и enabled;
  • PostgreSQL кластера доступен со всех его узлов Закрома.Хранение;
  • Admin UI кластера открывается по настроенному FQDN;
  • кластер ZDS подключён в Admin UI по адресам из вывода Ansible после установки сервиса ZDS;
  • функциональная проверка S3 проходит для каждого кластера — используйте тест из базовой инструкции.

Подробная проверка сервисов приведена в Проверке статуса сервисов.