Быстрый старт

Минимальные требования

Для быстрого старта подготовьте четыре физических или виртуальных узла архитектуры x86_64 (amd64). ARM-архитектура в этом сценарии не используется.

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

УзелОперационная системаАрхитектураvCPURAMСистемный дискДиск данных
storage-1Debian 12x86_6448 ГБSSD 50 ГБотдельный SSD 50 ГБ для ZDS
storage-2Debian 12x86_6448 ГБSSD 50 ГБотдельный SSD 50 ГБ для ZDS
storage-3Debian 12x86_6448 ГБSSD 50 ГБотдельный SSD 50 ГБ для ZDS
postgres-1Debian 12x86_6448 ГБSSD 50 ГБотдельный SSD рекомендуется

На всех узлах должна быть включена синхронизация времени с единым источником. Для функционального пилота достаточно сети 1 Гбит/с, для нагрузочных тестов рекомендуется минимум 10 Гбит/с.

Межсетевой экран на время установки должен быть отключён либо настроен так, чтобы разрешать SSH-доступ, клиентские подключения к сервисам Закрома.Хранение, соединение с PostgreSQL и обмен между узлами ZDS. Не отключайте firewall вне изолированного тестового контура.

При использовании трех дисковых устройств по 50 ГБ суммарная сырая ёмкость составляет 150 ГБ. При использовании политики хранения Erasure Coding 2+1 расчётная полезная ёмкость равна примерно 100 ГБ. Фактически доступная ёмкость будет немного меньше из-за разметки файловой системы, а также служебных данных хранилища ZDS. Чтобы сохранить запас свободного места, увеличьте размер каждого ZDS-диска, если объём тестовых данных превышает 50 ГБ. Подробнее о том, как ZDS хранит данные, см. Как ZDS хранит данные.

Назначение

Эта инструкция — быстрый старт с Закромами. Кластер разворачивается одним сценарием Ansible — ролью zakroma-quick-start из архива поставки zakroma-roles. Роль последовательно подготавливает узлы, настраивает PostgreSQL, применяет типовые настройки для Закрома.Хранения и ZDS, выполняет preflight-проверки и устанавливает сам продукт.

В данной конфигурации совмещаются роли: на каждом из трёх основных узлов одновременно устанавливаются сервисы Zakroma-Storage и Zakroma-ZDS. PostgreSQL размещается отдельно на четвёртом узле. Такой вариант сокращает количество необходимых серверов и подходит для первого знакомства с продуктом и проверки его функций.

В результате будут развёрнуты:

  • три узла с Zakroma-Storage и Zakroma-ZDS: Закрома.Хранение предоставляет S3 API и управляет рабочими областями, бакетами и политиками доступа, а ZDS хранит данные объектов на дисках узлов;
  • отдельный четвёртый узел PostgreSQL: база данных хранит метаданные, конфигурацию и служебную информацию Закрома.Хранение, но не содержимое S3-объектов;
  • защита данных Erasure Coding 2+1: объект разделяется на две части данных и одну часть чётности, распределённые между тремя ZDS-узлами; это позволяет продолжить чтение данных при недоступности одного узла;
  • локальные пользователи без Keycloak и LDAP: учётные записи задаются в конфигурации Закрома.Хранение и используются для входа в Admin UI и последующего выпуска S3-ключей;
  • HTTP-доступ без TLS и сертификатов;
  • без опциональных сервисов Kafka, Nginx и отдельного балансировщика.
Не для production

Указанные ресурсы рассчитаны на функциональный пилот. В этом сценарии Admin UI и S3 API работают по HTTP: учётные данные, S3-ключи и объекты передаются без шифрования. Используйте конфигурацию только в изолированной тестовой сети. Для production нужны TLS, отдельный расчёт ресурсов, HA-кластер PostgreSQL и внешний отказоустойчивый балансировщик. См. Типовые варианты конфигурации.

Схема стенда

Конфигурация 3+1 означает три узла Storage/ZDS и один узел PostgreSQL. Её не следует путать с параметрами Erasure Coding: для трёх ZDS-узлов используется EC 2+1.

УзелIP-адресУстановленные компонентыНазначение
storage-1192.168.1.11Zakroma-Storage, Zakroma-ZDSS3 API, управление хранилищем и хранение частей объектов
storage-2192.168.1.12Zakroma-Storage, Zakroma-ZDSS3 API, управление хранилищем и хранение частей объектов
storage-3192.168.1.13Zakroma-Storage, Zakroma-ZDSS3 API, управление хранилищем и хранение частей объектов
postgres-1192.168.1.14PostgreSQL 16Метаданные, конфигурация и служебная информация Закрома.Хранение

Компоненты Zakroma-Storage и Zakroma-ZDS работают на трёх узлах совместно. Части объектов распределяются между ZDS-узлами по схеме EC 2+1, а все экземпляры Storage используют отдельный PostgreSQL по адресу postgresql.zakroma.internal:5432.

Параметры примера

ПараметрЗначение
Узлы Storage/ZDSstorage-1, storage-2, storage-3
Узел PostgreSQLpostgres-1
IP Storage/ZDS192.168.1.11, 192.168.1.12, 192.168.1.13
IP PostgreSQL192.168.1.14
Базовый доменzakroma.internal
Admin UIhttp://zakroma-admin.zakroma.internal:8444
S3 APIhttp://<workspace>.zakroma.internal:6443
PostgreSQLpostgresql.zakroma.internal:5432
Подсеть кластера192.168.1.0/24
Диск ZDS/dev/vdb
Точка монтирования ZDS/data/zds

Замените примеры на адреса и имена из своей инфраструктуры.

Архитектура стенда Quick Start

Подготовка до запуска Ansible

Перед первым запуском плейбука настройте на узлах:

Записи DNS

Если используете DNS, создайте A-записи:

ИмяIP-адреса
storage-1.zakroma.internal192.168.1.11
storage-2.zakroma.internal192.168.1.12
storage-3.zakroma.internal192.168.1.13
postgres-1.zakroma.internal192.168.1.14
postgresql.zakroma.internal192.168.1.14
zakroma-admin.zakroma.internal192.168.1.11, 192.168.1.12, 192.168.1.13
*.zakroma.internal192.168.1.11, 192.168.1.12, 192.168.1.13

Wildcard-запись покрывает global.zakroma.internal и имена вида <workspace>.zakroma.internal. Если DNS-сервер не поддерживает wildcard, создайте отдельные записи для global и каждой рабочей области.

DNS-сервер на узлах Debian 12

На всех четырёх узлах и на машине оператора укажите адрес DNS-сервера, в котором созданы записи из таблицы выше. В примере ниже DNS-сервер — 192.168.1.2; замените его на IP вашего сервера.

Сначала проверьте, кто управляет резолвером:

1ls -l /etc/resolv.conf 2resolvectl status 2>/dev/null || systemd-resolve --status 2>/dev/null

Если /etc/resolv.conf — симлинк на systemd-resolved (типично для Debian 12), задайте DNS через конфиг:

1sudo install -d -m 0755 /etc/systemd/resolved.conf.d 2sudo tee /etc/systemd/resolved.conf.d/zakroma.conf >/dev/null <<'EOF' 3[Resolve] 4DNS=192.168.1.2 5FallbackDNS=1.1.1.1 6Domains=zakroma.internal 7EOF 8sudo systemctl restart systemd-resolved 9resolvectl status

Проверьте, что в выводе resolvectl status для активного интерфейса указан DNS Servers: 192.168.1.2 и домен zakroma.internal.

Если узел настроен статически через /etc/network/interfaces, DNS можно указать в описании интерфейса:

1auto ens3 2iface ens3 inet static 3 address 192.168.1.11 4 netmask 255.255.255.0 5 gateway 192.168.1.1 6 dns-nameservers 192.168.1.2 7 dns-search zakroma.internal

После правки перезапустите сеть (sudo ifdown ens3 && sudo ifup ens3) или перезагрузите узел.

Без отдельного DNS

Если своего DNS-сервера нет, записи можно не настраивать: на стадии bootstrap ответьте yes на вопрос «Прописать /etc/hosts на узлах» — роль добавит нужные имена локально. Для клиентов и S3 вне кластера /etc/hosts wildcard не поддерживает; каждую рабочую область придётся прописывать отдельно либо использовать DNS.

DNS round-robin

Несколько A-записей распределяют клиентские запросы, но не проверяют состояние узлов. Для production используйте балансировщик с health checks. Файл /etc/hosts не поддерживает wildcard и не заменяет DNS для клиентов вне кластера, если не прописать каждую рабочую область отдельно.

Проверка DNS

На машине оператора и на всех четырёх узлах:

1sudo apt-get update 2sudo apt-get install -y dnsutils 3getent ahostsv4 postgresql.zakroma.internal 4getent ahostsv4 zakroma-admin.zakroma.internal 5getent ahostsv4 global.zakroma.internal

Если DNS не используется, пропустите проверку — на стадии bootstrap ответьте yes на вопрос «Прописать /etc/hosts на узлах».

Firewall

Проверьте межсетевой экран на узлах:

1command -v ufw && sudo ufw status 2command -v firewall-cmd && sudo firewall-cmd --state 3command -v nft && sudo nft list ruleset

Для изолированного пилотного контура firewall можно временно отключить. Если он включён, разрешите:

Узлы назначенияИсточникПортыНазначение
storage-1, storage-2, storage-3машина оператора и клиентская сеть22, 6443, 8444SSH, S3 API и Admin UI
storage-1, storage-2, storage-3три Storage/ZDS-узла8088, 8089API ZDS и межузловой обмен ZDS
postgres-1машина оператора22, 5432SSH; настройка PostgreSQL на стадии postgres
postgres-1три Storage-узла5432подключение к PostgreSQL

Пример правил UFW для подсети 192.168.1.0/24:

1# На трёх узлах Storage/ZDS. 2sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp 3sudo ufw allow from 192.168.1.0/24 to any port 6443 proto tcp 4sudo ufw allow from 192.168.1.0/24 to any port 8444 proto tcp 5sudo ufw allow from 192.168.1.0/24 to any port 8088 proto tcp 6sudo ufw allow from 192.168.1.0/24 to any port 8089 proto tcp 7sudo ufw status numbered 8 9# На узле PostgreSQL. 10sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp 11sudo ufw allow from 192.168.1.0/24 to any port 5432 proto tcp 12sudo ufw status numbered

Если машина оператора или S3-клиенты находятся в другой подсети, добавьте отдельные точечные правила для их адресов.

Диски ZDS

На каждом из трёх Storage/ZDS-узлов смонтируйте отдельный диск в /data/zds до запуска роли. Роль проверяет, что /data/zds — точка монтирования отдельного тома, и создаёт внутри неё каталоги db, vacuum-state, scan-state, disk.

Форматирование удалит данные

Команда mkfs.xfs безвозвратно удалит данные на выбранном устройстве. Сверьте /dev/vdb с фактическим диском для данных.

1lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS,MODEL 2sudo wipefs --no-act /dev/vdb 3sudo mkfs.xfs /dev/vdb 4sudo install -d -m 0755 /data/zds 5ZDS_UUID=$(sudo blkid -s UUID -o value /dev/vdb) 6FSTAB_LINE="UUID=${ZDS_UUID} /data/zds xfs defaults,noatime 0 2" 7sudo grep -Fqx "$FSTAB_LINE" /etc/fstab || printf '%s\n' "$FSTAB_LINE" | sudo tee -a /etc/fstab 8sudo mount -a 9findmnt --target /data/zds

SSH-доступ

С машины оператора должен работать SSH с sudo на все четыре узла под одним пользователем. Пользователь и ключ передаются при запуске плейбука через -u и --private-key, в inventory они не сохраняются.

1ssh -i ~/.ssh/key_name user@192.168.1.11 'sudo -n true' 2ssh -i ~/.ssh/key_name user@192.168.1.14 'sudo -n true'

Подготовка поставки

Получите:

  1. Архив zakroma-roles-<версия>.tar.gz. См. Таблица соответствия версий.
  2. Файл лицензии.
  3. Машину оператора с Ansible 2.15.0–2.18.15 и SSH/sudo-доступом ко всем узлам.

Распакуйте архив:

1RELEASE_VERSION=7.2.3 2tar -xvzf "zakroma-roles-${RELEASE_VERSION}.tar.gz" 3cd "zakroma-roles-${RELEASE_VERSION}" 4ansible --version

Положите лицензию в каталог поставки:

1install -m 0644 /path/to/licence files/zakroma-licence/licence

Развёртывание кластера

Первый запуск (интерактивный)

Запускайте из корня распакованной поставки. Нужен TTY — сценарий задаёт вопросы через интерактивный ввод.

1ANSIBLE_CONFIG=ansible.cfg ansible-playbook \ 2 -u user --private-key ~/.ssh/key_name \ 3 -i inventories/quick-start/hosts \ 4 playbooks/sample-play-quick-start.yml

На стадии bootstrap роль:

  1. Скопирует group_vars из inventories/base-cluster в inventories/quick-start.
  2. Спросит IP трёх узлов Storage и одного PostgreSQL (введите FQDN или IP).
  3. Спросит базовый домен, точку монтирования ZDS (/data/zds), запись /etc/hosts (yes/no), пароли PostgreSQL, Admin UI и ZDS.
  4. При отсутствии пакетов в roles/zakroma-storage/files и roles/zakroma-zds-v2/files — логин и пароль для скачивания пакетов.
  5. Запишет указанные данные в inventories/quick-start/hosts, group_vars/all/quick-start.yml и group_vars/all/quick-start-secrets.yml.

Далее выполняются стадии prepare, postgres, licence, preflight и install. Установка Storage и ZDS идёт отдельным play после preflight.

Пароли

Пустой ввод пароля генерирует случайную строку. Сгенерированные пароли выводятся в консоль на стадии bootstrap. Не используйте символы :, ', " в паролях — они ломают YAML-конфиг gateway.

CIDR для PostgreSQL

Роль добавляет в pg_hba.conf правило для подсетей из zakroma_quick_start_pg_cidrs. Если список пуст, используются /32 адресов Storage-узлов. На стадии bootstrap можно указать свою подсеть, например 192.168.1.0/24.

Повторный запуск

Когда inventory и секреты уже записаны:

1ANSIBLE_CONFIG=ansible.cfg ansible-playbook \ 2 -u user --private-key ~/.ssh/key_name \ 3 -i inventories/quick-start/hosts \ 4 -e zakroma_quick_start_interactive=false \ 5 playbooks/sample-play-quick-start.yml

Отдельные стадии

1# Только блок «Доступ» (URL, пароли, /etc/hosts для клиента) 2ansible-playbook -i inventories/quick-start/hosts \ 3 -e zakroma_quick_start_stage=access \ 4 playbooks/sample-play-quick-start.yml 5 6# Только установка продукта (после успешного preflight) 7ansible-playbook -i inventories/quick-start/hosts \ 8 -e zakroma_quick_start_stage=install \ 9 playbooks/sample-play-quick-start.yml

Сохранённые файлы inventory

После первого запуска в inventories/quick-start/ появятся:

ФайлСодержимое
hostsУзлы Storage, ZDS и PostgreSQL
group_vars/all/quick-start.ymlДомен, mount ZDS, флаг /etc/hosts, CIDR PostgreSQL
group_vars/all/quick-start-secrets.ymlПароли (права 0600)
group_vars/zakroma-storage.ymlКонфигурация Storage (роль обновляет автоматически)
group_vars/zakroma-zds-v2-ec.ymlКонфигурация ZDS EC 2+1 (роль обновляет автоматически)

Полное описание переменных базового кластера: Установка базового кластера.

Проверка сервисов

На каждом Storage/ZDS-узле проверьте:

1sudo systemctl is-active zakroma-storage-monolith.service 2sudo systemctl is-active zakroma-storage-gateway.service 3sudo systemctl is-active zakroma-ds-agent.service 4sudo systemctl is-enabled zakroma-storage-monolith.service 5sudo systemctl is-enabled zakroma-storage-gateway.service 6sudo systemctl is-enabled zakroma-ds-agent.service

Ожидаются active и enabled. Если сервис не запущен:

1sudo journalctl -u zakroma-storage-monolith.service -n 100 --no-pager 2sudo journalctl -u zakroma-storage-gateway.service -n 100 --no-pager 3sudo journalctl -u zakroma-ds-agent.service -n 100 --no-pager

Проверьте ZDS. curl запросит пароль из quick-start-secrets.yml (zakroma_zds_password):

1curl --fail --silent --show-error --user zakromaadmin \ 2 http://localhost:8088/inner/status | jq -e ' 3 .status == "RUNNING" and 4 .dbCanWrite == true and 5 all(.drives[]; .status == "RUNNING") and 6 all(.storageGroups[]; .Status == "RUNNING") 7 '

На узле PostgreSQL:

1sudo systemctl is-active postgresql 2sudo -u postgres psql -d zakroma -c '\dn+'

С каждого Storage-узла:

1getent ahostsv4 postgresql.zakroma.internal 2nc -vz -w 3 postgresql.zakroma.internal 5432

Подробнее: Настройка PostgreSQL.

Проверка DNS и HTTP после установки

Проверьте DNS с машины оператора (если DNS использовался в инсталляции):

1dig +short A zakroma-admin.zakroma.internal | sort -u 2dig +short A global.zakroma.internal | sort -u 3dig +short A demo-ws.zakroma.internal | sort -u

Проверьте каждый backend Admin UI:

1for ip in 192.168.1.11 192.168.1.12 192.168.1.13; do 2 curl --fail --silent --show-error \ 3 --resolve zakroma-admin.zakroma.internal:8444:${ip} \ 4 http://zakroma-admin.zakroma.internal:8444/auth/config >/dev/null 5 echo "OK: Admin UI on ${ip}" 6done

Admin UI:

1http://zakroma-admin.zakroma.internal:8444

Стадия access плейбука печатает те же URL, пароли и фрагмент /etc/hosts для клиентской машины:

1ansible-playbook -i inventories/quick-start/hosts \ 2 -e zakroma_quick_start_stage=access \ 3 playbooks/sample-play-quick-start.yml

Подключение ZDS и создание бакета

Войдите под zakromaadmin с паролем из inventories/quick-start/group_vars/all/quick-start-secrets.yml (zakroma_admin_password). Добавьте хранилище ZDS: во вкладке «Хранилища» нажмите «Добавить хранилище». Заполните открывшуюся форму:

  • Наименование: ZDS
  • Тип: ZDS
  • Версия: V2
  • Адреса серверов: 192.168.1.11:8088, 192.168.1.12:8088, 192.168.1.13:8088
  • Использовать SSL: выключено
  • Пропустить проверку сертификата: выключено
  • Таймаут: 0
  • Ключ доступа: zakromaadmin
  • Секретный ключ: zakroma_zds_password из quick-start-secrets.yml

Подробнее про работу с хранилищем: Хранилища.

Создайте рабочую область demo-ws: во вкладке «Рабочие области» нажмите «Добавить область». В открывшейся форме укажите:

  • Наименование: demo-ws
  • Хранилище по умолчанию: ZDS

В рабочей области demo-ws создайте политику доступа: перейдите во вкладку «Политика доступа», нажмите кнопку «Добавить политику» и заполните форму:

  • Наименование: admin rights
  • Результат: Разрешить
  • Пользователи / Группа пользователей: Выбрать пользователей / группу
  • Пользователи: zakromaadmin
  • Все операции: включено

Подробнее про политики доступа: Политики доступа.

Создайте бакет demo: в рабочей области demo-ws во вкладке Buckets нажмите «Создать bucket», укажите наименование demo.

В бакете demo добавьте группу хранения с EC 2+1. Перейдите во вкладку «Настройка хранения» и нажмите «Добавить группу хранения», выберите класс хранения HDD и схему хранения EC 2:1, остальное оставьте стандартным.

Подробнее: Рабочие области и Бакеты.

Проверьте wildcard для созданной области:

1dig +short A demo-ws.zakroma.internal | sort -u

Ожидаются IP-адреса всех трёх Storage-узлов.

Проверка S3

Создайте для локального пользователя S3-ключ в Admin UI: нажмите на имя пользователя в правой верхней части страницы, затем на «Установить ключ доступа»; параметры можно не менять. Полученный идентификатор ключа — это AWS_ACCESS_KEY_ID, а секретный ключ — это AWS_SECRET_ACCESS_KEY.

Кнопка копирования полей с ключами не работает без HTTPS

Обратите внимание, что кнопки для копирования идентификатора ключа и секретного ключа не работают в текущей конфигурации. Для их работы требуется TLS-шифрование.

Затем установите AWS CLI на машине оператора и передайте ключи через переменные окружения:

1export AWS_ACCESS_KEY_ID='<access-key>' 2read -rsp 'AWS Secret Access Key: ' AWS_SECRET_ACCESS_KEY 3export AWS_SECRET_ACCESS_KEY 4echo 5export S3_ENDPOINT='http://demo-ws.zakroma.internal:6443' 6export S3_BUCKET='demo'

Создайте тестовый файл, загрузите его в бакет, скачайте обратно, сравните содержимое и удалите объект:

1object="quick-start-$(date +%s).txt" 2printf 'Zakroma quick-start S3 check\n' >/tmp/zakroma-s3-source.txt 3aws --endpoint-url "$S3_ENDPOINT" s3 cp /tmp/zakroma-s3-source.txt "s3://${S3_BUCKET}/${object}" 4aws --endpoint-url "$S3_ENDPOINT" s3 ls "s3://${S3_BUCKET}/${object}" 5aws --endpoint-url "$S3_ENDPOINT" s3 cp "s3://${S3_BUCKET}/${object}" /tmp/zakroma-s3-downloaded.txt 6cmp /tmp/zakroma-s3-source.txt /tmp/zakroma-s3-downloaded.txt 7aws --endpoint-url "$S3_ENDPOINT" s3 rm "s3://${S3_BUCKET}/${object}" 8rm -f /tmp/zakroma-s3-source.txt /tmp/zakroma-s3-downloaded.txt 9unset AWS_SECRET_ACCESS_KEY
Кнопка копирования полей с ключами не работает без HTTPS

Для работы кнопок копирования в Admin UI требуется TLS.

Критерии готовности

  • Все четыре узла соответствуют минимальным ресурсам.
  • На каждом Storage-узле /data/zds смонтирован как отдельный том.
  • DNS или /etc/hosts на узлах резолвят FQDN стенда.
  • Firewall отключён в изолированном контуре либо разрешает необходимые соединения.
  • Плейбук sample-play-quick-start.yml завершился без ошибок на всех стадиях.
  • PostgreSQL доступен с трёх Storage-узлов по postgresql.<domain>:5432.
  • На каждом Storage-узле активны Storage, Gateway и ZDS.
  • ZDS видит три узла, тома в статусе RUNNING, кластер — RW.
  • Admin UI и S3 API доступны по HTTP на портах 8444 и 6443.
  • Группа хранения создана с EC 2+1.
  • Проверка S3 успешно записывает, читает и удаляет объект.

Распространённые ошибки

Ниже — частые причины падения плейбука на стадиях prepare, preflight и install. Сообщения могут незначительно отличаться по версии роли, но смысл один и тот же.

Доменные имена не резолвятся

Симптом. На стадии prepare или preflight:

1Имя postgresql.zakroma.internal не резолвится на storage-1. 2Настройте DNS для zakroma.internal или включите zakroma_quick_start_write_hosts.

Либо на preflight:

1Timeout when waiting for postgresql.zakroma.internal:5432

Причина. При zakroma_quick_start_write_hosts: false FQDN стенда должны резолвиться через DNS на каждом узле Storage, ZDS и PostgreSQL. Если DNS не настроен, имя есть только на машине оператора или /etc/hosts ещё не записан.

Что сделать.

  1. Настройте A-записи для postgresql.<domain>, zakroma-admin.<domain>, global.<domain> и FQDN узлов (см. раздел «Записи DNS»).
  2. Либо на стадии bootstrap ответьте yes на вопрос о /etc/hosts, либо задайте zakroma_quick_start_write_hosts: true в group_vars/all/quick-start.yml и повторите стадию prepare.
  3. Проверьте резолв на проблемном узле:
1getent ahostsv4 postgresql.zakroma.internal 2getent ahostsv4 zakroma-admin.zakroma.internal

Файл лицензии не найден

Симптом. В начале прогона, на стадии bootstrap или licence:

1Положите лицензию в .../files/zakroma-licence/licence 2или задайте zakroma_quick_start_licence_src.

Причина. Роль ожидает файл лицензии на машине оператора до копирования на узлы Storage. Путь по умолчанию — files/zakroma-licence/licence в корне распакованной поставки.

Что сделать.

1install -m 0644 /path/to/licence files/zakroma-licence/licence 2# или укажите другой путь: 3# -e zakroma_quick_start_licence_src=/path/to/licence

Убедитесь, что файл обычный (не каталог) и содержит все поля лицензии (owner, licenseId, validTo, product, environment, licensedVolume, signature).

Нет сетевого доступа по нужным портам

Симптом. Preflight или установка падают на проверке TCP, SSH или подключении к сервисам:

1Timeout when waiting for postgresql.zakroma.internal:5432
1Failed to connect to the host via ssh: Connection timed out

ZDS preflight не видит соседние узлы на 8088/8089.

Причина. Межсетевой экран, security group облака или маршрутизация блокируют трафик между узлами или с машины оператора.

Что сделать. Разрешите соединения из раздела «Firewall»:

НаправлениеПортыЗачем
оператор → Storage22, 6443, 8444SSH, S3 API, Admin UI
Storage ↔ Storage8088, 8089ZDS API и межузловой обмен
оператор → PostgreSQL22, 5432SSH; настройка PostgreSQL на стадии postgres
Storage → PostgreSQL5432метаданные Storage

Проверка с Storage-узла:

1nc -vz -w 3 postgresql.zakroma.internal 5432 2nc -vz -w 3 storage-2.zakroma.internal 8088

С машины оператора:

1nc -vz -w 3 192.168.1.11 22 2nc -vz -w 3 192.168.1.14 5432

Диск ZDS не смонтирован

Симптом. На стадии prepare, задача «Проверить, что диск ZDS смонтирован»:

1/data/zds должен быть точкой монтирования отдельного тома, 2не каталогом на корневой ФС. 3Смонтируйте диск в этот путь и повторите.

Причина. Роль не форматирует и не монтирует диски. Каталог /data/zds на корневой файловой системе или пустой mount не подходят — нужен отдельный том (в примере /dev/vdb).

Что сделать. На каждом Storage/ZDS-узле выполните подготовку диска (см. раздел «Диски ZDS»), затем повторите плейбук:

1findmnt --target /data/zds 2df -h /data/zds 3lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT /dev/vdb

Точка монтирования должна совпадать с zakroma_quick_start_zds_mount (по умолчанию /data/zds).

Дополнительно о роли zakroma-quick-start

Роль входит в поставку zakroma-roles версии 7.2.3 и находится в каталоге roles/zakroma-quick-start. Плейбук — playbooks/sample-play-quick-start.yml, inventory для первого запуска — заглушка inventories/quick-start/hosts.

Стадия / тегДействие роли
bootstrapКопирует group_vars из inventories/base-cluster в inventories/quick-start, спрашивает IP узлов, домен, пароли и параметры, записывает inventory
prepareЗадаёт FQDN, ставит пакеты, при необходимости прописывает /etc/hosts, проверяет точку монтирования ZDS, создаёт каталоги и пользователя zakroma, накладывает overrides Storage/ZDS
postgresУстанавливает PostgreSQL 16 из PGDG, создаёт zakroma_user, БД zakroma и схемы
licenceКопирует файл лицензии на узлы Storage
preflightЗапускает проверки zakroma-preflight для Storage и ZDS v2
installУстанавливает zakroma-storage и zakroma-zds-v2
accessПечатает URL, пароли и блок /etc/hosts для клиентской машины

Роль не форматирует диски и не настраивает DNS-сервер. Эти шаги выполняются до запуска Ansible (см. разделы выше). Если DNS нет, на стадии bootstrap можно ответить yes на вопрос о записи /etc/hosts — роль пропишет нужные имена на всех узлах.

Параметры для Quick Start (HTTP, file-auth, EC 2+1, порты 6443/8444, пароли из Vault или интерактивного ввода) роль применяет сама в inventories/quick-start/group_vars/zakroma-storage.yml и zakroma-zds-v2-ec.yml. Ручное редактирование этих файлов для типового сценария не требуется.

Повторный запуск

Если inventories/quick-start/hosts и quick-start-secrets.yml уже созданы, достаточно:

1export ZAKROMA_QUICK_START_INTERACTIVE=false 2 3ANSIBLE_CONFIG=ansible.cfg ansible-playbook \ 4 -u "${ANSIBLE_USER:-user}" \ 5 --private-key "${ANSIBLE_PRIVATE_KEY_FILE:-$HOME/.ssh/id_ed25519}" \ 6 -i inventories/quick-start/hosts \ 7 -e zakroma_quick_start_interactive=false \ 8 playbooks/sample-play-quick-start.yml

SSH-пользователь и ключ по-прежнему задаются флагами -u и --private-key (или переменными ANSIBLE_USER, ANSIBLE_PRIVATE_KEY_FILE в окружении оператора), в inventory они не сохраняются.

Что дальше