Быстрый старт
Минимальные требования
Для быстрого старта подготовьте четыре физических или виртуальных узла архитектуры x86_64 (amd64). ARM-архитектура в этом сценарии не используется.
В примере используется дистрибутив Debian 12. Если в вашей инфраструктуре применяется другой дистрибутив, перед установкой проверьте её наличие в списке поддерживаемых операционных систем.
| Узел | Операционная система | Архитектура | vCPU | RAM | Системный диск | Диск данных |
|---|---|---|---|---|---|---|
storage-1 | Debian 12 | x86_64 | 4 | 8 ГБ | SSD 50 ГБ | отдельный SSD 50 ГБ для ZDS |
storage-2 | Debian 12 | x86_64 | 4 | 8 ГБ | SSD 50 ГБ | отдельный SSD 50 ГБ для ZDS |
storage-3 | Debian 12 | x86_64 | 4 | 8 ГБ | SSD 50 ГБ | отдельный SSD 50 ГБ для ZDS |
postgres-1 | Debian 12 | x86_64 | 4 | 8 ГБ | 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-1 | 192.168.1.11 | Zakroma-Storage, Zakroma-ZDS | S3 API, управление хранилищем и хранение частей объектов |
storage-2 | 192.168.1.12 | Zakroma-Storage, Zakroma-ZDS | S3 API, управление хранилищем и хранение частей объектов |
storage-3 | 192.168.1.13 | Zakroma-Storage, Zakroma-ZDS | S3 API, управление хранилищем и хранение частей объектов |
postgres-1 | 192.168.1.14 | PostgreSQL 16 | Метаданные, конфигурация и служебная информация Закрома.Хранение |
Компоненты Zakroma-Storage и Zakroma-ZDS работают на трёх узлах совместно. Части объектов распределяются между ZDS-узлами по схеме EC 2+1, а все экземпляры Storage используют отдельный PostgreSQL по адресу postgresql.zakroma.internal:5432.
Параметры примера
| Параметр | Значение |
|---|---|
| Узлы Storage/ZDS | storage-1, storage-2, storage-3 |
| Узел PostgreSQL | postgres-1 |
| IP Storage/ZDS | 192.168.1.11, 192.168.1.12, 192.168.1.13 |
| IP PostgreSQL | 192.168.1.14 |
| Базовый домен | zakroma.internal |
| Admin UI | http://zakroma-admin.zakroma.internal:8444 |
| S3 API | http://<workspace>.zakroma.internal:6443 |
| PostgreSQL | postgresql.zakroma.internal:5432 |
| Подсеть кластера | 192.168.1.0/24 |
| Диск ZDS | /dev/vdb |
| Точка монтирования ZDS | /data/zds |
Замените примеры на адреса и имена из своей инфраструктуры.

Подготовка до запуска Ansible
Перед первым запуском плейбука настройте на узлах:
Записи DNS
Если используете DNS, создайте A-записи:
| Имя | IP-адреса |
|---|---|
storage-1.zakroma.internal | 192.168.1.11 |
storage-2.zakroma.internal | 192.168.1.12 |
storage-3.zakroma.internal | 192.168.1.13 |
postgres-1.zakroma.internal | 192.168.1.14 |
postgresql.zakroma.internal | 192.168.1.14 |
zakroma-admin.zakroma.internal | 192.168.1.11, 192.168.1.12, 192.168.1.13 |
*.zakroma.internal | 192.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/hostswildcard не поддерживает; каждую рабочую область придётся прописывать отдельно либо использовать 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, 8444 | SSH, S3 API и Admin UI |
storage-1, storage-2, storage-3 | три Storage/ZDS-узла | 8088, 8089 | API ZDS и межузловой обмен ZDS |
postgres-1 | машина оператора | 22, 5432 | SSH; настройка 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'
Подготовка поставки
Получите:
- Архив
zakroma-roles-<версия>.tar.gz. См. Таблица соответствия версий. - Файл лицензии.
- Машину оператора с 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 роль:
- Скопирует
group_varsизinventories/base-clusterвinventories/quick-start. - Спросит IP трёх узлов Storage и одного PostgreSQL (введите FQDN или IP).
- Спросит базовый домен, точку монтирования ZDS (
/data/zds), запись/etc/hosts(yes/no), пароли PostgreSQL, Admin UI и ZDS. - При отсутствии пакетов в
roles/zakroma-storage/filesиroles/zakroma-zds-v2/files— логин и пароль для скачивания пакетов. - Запишет указанные данные в
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 ещё не записан.
Что сделать.
- Настройте A-записи для
postgresql.<domain>,zakroma-admin.<domain>,global.<domain>и FQDN узлов (см. раздел «Записи DNS»). - Либо на стадии
bootstrapответьтеyesна вопрос о/etc/hosts, либо задайтеzakroma_quick_start_write_hosts: trueвgroup_vars/all/quick-start.ymlи повторите стадиюprepare. - Проверьте резолв на проблемном узле:
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»:
| Направление | Порты | Зачем |
|---|---|---|
| оператор → Storage | 22, 6443, 8444 | SSH, S3 API, Admin UI |
| Storage ↔ Storage | 8088, 8089 | ZDS API и межузловой обмен |
| оператор → PostgreSQL | 22, 5432 | SSH; настройка PostgreSQL на стадии postgres |
| Storage → PostgreSQL | 5432 | метаданные 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 они не сохраняются.