Быстрый старт
Назначение
В этой инструкции описана минимальная отказоустойчивая конфигурация Закрома.Хранение для пилота, демонстрации или функционального тестирования:
- три узла с Zakroma-Storage и Zakroma-ZDS;
- отдельный четвёртый узел PostgreSQL;
- защита данных Erasure Coding 2+1;
- локальные пользователи;
Не для productionУказанные ресурсы рассчитаны на функциональный пилот. Для production нужны отдельный расчёт ресурсов, HA-кластер PostgreSQL и внешний отказоустойчивый балансировщик. См. Типовые варианты конфигурации.
Схема стенда
Конфигурация 3+1 означает три узла Storage/ZDS и один узел PostgreSQL. Её не следует путать с параметрами Erasure Coding: для трёх ZDS-узлов используется EC 2+1.
1 +-----------------------------+ 2 | postgres-1 | 3 | PostgreSQL 16 | 4 | 192.168.1.14:5432 | 5 +--------------+--------------+ 6 | 7 +-------------------+-------------------+ 8 | | | 9 +---------+---------+ +-------+-----------+ +-----+-------------+ 10 | storage-1 | | storage-2 | | storage-3 | 11 | Storage + ZDS | | Storage + ZDS | | Storage + ZDS | 12 | 192.168.1.11 | | 192.168.1.12 | | 192.168.1.13 | 13 +-------------------+ +-------------------+ +-------------------+ 14 \______________ EC 2+1 ______________/
Минимальные требования
В примере используются Debian 12 и архитектура x86_64. Поддерживаемые ОС указаны в составе поставки.
| Роль | Количество | vCPU | RAM | Системный диск | Диск данных |
|---|---|---|---|---|---|
| Zakroma-Storage + Zakroma-ZDS | 3 | 4 | 8 ГБ | SSD 50 ГБ | отдельный SSD 50 ГБ |
| PostgreSQL | 1 | 4 | 8 ГБ | SSD 50 ГБ | отдельный SSD рекомендуется |
Для функционального пилота допускается сеть 1 Гбит/с. Для нагрузочных тестов рекомендуется 10 Гбит/с и выше. Размер ZDS-диска увеличьте, если объём тестовых данных превышает 50 ГБ.
Параметры конфигурации
| Параметр | Значение |
|---|---|
| Узлы 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 | zakroma-admin.zakroma.internal:8444 |
| S3 API | <workspace>.zakroma.internal:6443 |
| PostgreSQL | postgresql.zakroma.internal:5432 |
| Подсеть кластера | 192.168.1.0/24 |
| Диск ZDS | /dev/vdb |
| Точка монтирования ZDS | /data/zds |
Замените примеры на адреса и имена из своей инфраструктуры.
Подготовка 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 |
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 round-robinНесколько A-записей распределяют клиентские запросы, но не проверяют состояние узлов. Для production используйте балансировщик с health checks. Файл
/etc/hostsне поддерживает wildcard и не заменяет DNS для этого сценария.
Проверка DNS
Установите dig на машине оператора и на всех четырёх узлах:
1sudo apt-get update 2sudo apt-get install -y dnsutils
Проверьте имена:
1getent ahostsv4 storage-1.zakroma.internal 2getent ahostsv4 storage-2.zakroma.internal 3getent ahostsv4 storage-3.zakroma.internal 4getent ahostsv4 postgresql.zakroma.internal 5getent ahostsv4 zakroma-admin.zakroma.internal 6getent ahostsv4 dns-check.zakroma.internal 7getent ahostsv4 global.zakroma.internal
dns-check.zakroma.internal — заведомо несозданное отдельное имя. Его успешное разрешение подтверждает работу wildcard-записи.
Проверьте полный набор A-записей для Admin UI, global и wildcard:
1dig +short A zakroma-admin.zakroma.internal | sort -u 2dig +short A global.zakroma.internal | sort -u 3dig +short A dns-check.zakroma.internal | sort -u
Каждая команда должна вывести три адреса:
1192.168.1.11 2192.168.1.12 3192.168.1.13
Повторите команды на машине оператора и на всех четырёх узлах. Результат должен быть одинаковым.
Проверка узлов до установки
Установите на узлах базовые утилиты:
1sudo apt-get update 2sudo apt-get install -y curl jq openssl xfsprogs netcat-openbsd
На каждом узле проверьте ОС, архитектуру, процессоры, память, системный диск и синхронизацию времени:
1grep -E '^(PRETTY_NAME|VERSION_ID)=' /etc/os-release 2uname -m 3nproc 4free -h 5findmnt -n -o SOURCE,SIZE,FSTYPE,TARGET / 6timedatectl show -p NTPSynchronized --value
Ожидаются Debian 12, архитектура x86_64, не менее 4 vCPU, 8 ГБ RAM, системный диск от 50 ГБ и значение yes для синхронизации времени.
На каждом из трёх узлов Storage/ZDS дополнительно проверьте диск данных:
1lsblk -b -o NAME,SIZE,FSTYPE,MOUNTPOINTS,MODEL /dev/vdb 2sudo blockdev --getsize64 /dev/vdb 3sudo wipefs --no-act /dev/vdb
/dev/vdb должен быть отдельным пустым блочным устройством размером не менее 50 ГБ. Если имя устройства отличается, замените его во всех следующих командах.
Подготовка PostgreSQL
PostgreSQL не устанавливается Ansible-ролями из поставки Закрома. Выполните этот раздел на postgres-1.
Скрипт установки и настройки PostgreSQL
Скрипт подключает официальный PGDG-репозиторий, устанавливает PostgreSQL 16, настраивает сетевой доступ и создаёт базу со схемами Закрома.Хранение.
Сохраните его как /tmp/setup-postgresql.sh на узле postgres-1:
1#!/usr/bin/env bash 2set -euo pipefail 3 4CLIENT_CIDR=${1:-192.168.1.0/24} 5 6sudo apt-get update 7sudo apt-get install -y postgresql-common ca-certificates 8sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh 9sudo apt-get update 10sudo apt-get install -y postgresql-16 postgresql-client-16 11sudo systemctl enable --now postgresql 12 13sudo -u postgres psql -v ON_ERROR_STOP=1 <<'SQL' 14ALTER SYSTEM SET listen_addresses = '*'; 15ALTER SYSTEM SET max_connections = 200; 16SQL 17 18PG_HBA=$(sudo -u postgres psql -tAc 'SHOW hba_file;') 19PG_RULE="host zakroma zakroma_user ${CLIENT_CIDR} scram-sha-256" 20sudo grep -Fqx "$PG_RULE" "$PG_HBA" || printf '%s\n' "$PG_RULE" | sudo tee -a "$PG_HBA" 21 22if sudo -u postgres psql -tAc "SELECT 1 FROM pg_roles WHERE rolname = 'zakroma_user'" | grep -qx 1; then 23 echo 'PostgreSQL role zakroma_user already exists; password was not changed.' 24else 25 sudo -u postgres createuser --login --pwprompt zakroma_user 26fi 27 28if sudo -u postgres psql -tAc "SELECT 1 FROM pg_database WHERE datname = 'zakroma'" | grep -qx 1; then 29 echo 'Database zakroma already exists.' 30else 31 sudo -u postgres createdb --owner=zakroma_user zakroma 32 sudo -u postgres psql -d zakroma -v ON_ERROR_STOP=1 -c 'DROP SCHEMA public;' 33fi 34 35sudo -u postgres psql -d zakroma -v ON_ERROR_STOP=1 <<'SQL' 36CREATE SCHEMA IF NOT EXISTS core AUTHORIZATION zakroma_user; 37CREATE SCHEMA IF NOT EXISTS permission AUTHORIZATION zakroma_user; 38CREATE SCHEMA IF NOT EXISTS worker0 AUTHORIZATION zakroma_user; 39CREATE SCHEMA IF NOT EXISTS notification AUTHORIZATION zakroma_user; 40CREATE SCHEMA IF NOT EXISTS seclog AUTHORIZATION zakroma_user; 41SQL 42 43sudo systemctl restart postgresql 44sudo systemctl is-active postgresql 45sudo -u postgres psql -tAc 'SHOW server_version;' 46sudo -u postgres psql -d zakroma -c '\dn+' 47sudo ss -lntp | grep ':5432'
Запустите скрипт, передав подсеть трёх Storage-узлов:
1chmod +x /tmp/setup-postgresql.sh 2/tmp/setup-postgresql.sh 192.168.1.0/24
При первом запуске createuser запросит пароль для zakroma_user и не сохранит его в истории команд. Этот пароль должен совпадать с будущей переменной zakroma_postgresql_password в Ansible Vault.
Если роль уже существует и пароль нужно заменить, выполните отдельно:
1sudo -u postgres psql -c '\password zakroma_user'
Число подключений
200включает запас для трёх узлов Storage, одного worker и отключённого Keycloak. При изменении состава сервисов пересчитайте значение по инструкции. Не указывайте вpg_hba.confболее широкую подсеть, чем требуется.
Ожидаются версия 16.x, статус active, пять схем Закрома и порт 5432 в состоянии LISTEN.
С каждого Storage-узла проверьте DNS, порт и авторизацию:
1getent ahostsv4 postgresql.zakroma.internal 2nc -vz -w 3 postgresql.zakroma.internal 5432 3psql -W "host=postgresql.zakroma.internal port=5432 dbname=zakroma user=zakroma_user sslmode=disable" \ 4 -c 'SET search_path TO core; SELECT current_database(), current_user, current_schema();'
Подробнее: Настройка PostgreSQL. PgBouncer в Quick Start не используется.
Подготовка дисков ZDS
Выполните на каждом из трёх Storage/ZDS-узлов.
Форматирование удалит данныеКоманда
mkfs.xfsбезвозвратно удалит данные на выбранном устройстве. Сверьте/dev/vdbс фактическим диском данных. Не используйте автовыбор диска.
Проверьте устройства:
1lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS,MODEL 2sudo wipefs --no-act /dev/vdb
Если /dev/vdb — нужный пустой диск, создайте XFS и точку монтирования:
1sudo mkfs.xfs /dev/vdb 2sudo install -d -m 0755 /data/zds 3ZDS_UUID=$(sudo blkid -s UUID -o value /dev/vdb) 4FSTAB_LINE="UUID=${ZDS_UUID} /data/zds xfs defaults,noatime 0 2" 5sudo grep -Fqx "$FSTAB_LINE" /etc/fstab || printf '%s\n' "$FSTAB_LINE" | sudo tee -a /etc/fstab 6sudo mount -a
Проверьте результат:
1findmnt --target /data/zds 2df -h /data/zds
Подготовка поставки
Получите:
- Архив
zakroma-roles-<версия>.tar.gz. См. Таблица соответствия версий. - Файл лицензии.
- Wildcard-сертификат и ключ для
*.zakroma.internal. Он покрывает Admin UI,globalи имена рабочих областей. - Машину оператора с Ansible 2.15.0–2.18.15 и SSH/sudo-доступом к трём Storage-узлам.
Распакуйте архив:
1RELEASE_VERSION=7.2.0 2tar -xvzf "zakroma-roles-${RELEASE_VERSION}.tar.gz" 3cd "zakroma-roles-${RELEASE_VERSION}" 4ansible --version
Положите файлы в каталог поставки:
1install -m 0644 /path/to/zakroma.crt files/zakroma.crt 2install -m 0600 /path/to/zakroma.key files/zakroma.key 3install -m 0644 /path/to/licence files/zakroma-licence/licence
Inventory
Замените inventories/base-cluster/hosts:
1[certificates] 2storage-1 ansible_host=192.168.1.11 3storage-2 ansible_host=192.168.1.12 4storage-3 ansible_host=192.168.1.13 5 6[zakroma-storage] 7storage-1 ansible_host=192.168.1.11 8storage-2 ansible_host=192.168.1.12 9storage-3 ansible_host=192.168.1.13 10 11[zakroma-zds-v2-ec] 12storage-1 ansible_host=192.168.1.11 zakroma_zds_node_name=storage-1 13storage-2 ansible_host=192.168.1.12 zakroma_zds_node_name=storage-2 14storage-3 ansible_host=192.168.1.13 zakroma_zds_node_name=storage-3
PostgreSQL не включается в Inventory: в поставке нет роли его установки.
Проверьте Inventory и SSH:
1ANSIBLE_CONFIG=ansible.cfg ansible-inventory -i inventories/base-cluster/hosts --graph 2ANSIBLE_CONFIG=ansible.cfg ansible -i inventories/base-cluster/hosts all -m ping 3ANSIBLE_CONFIG=ansible.cfg ansible -i inventories/base-cluster/hosts all -m setup -a 'filter=ansible_hostname'
Все три узла должны вернуть SUCCESS и pong. Не изменяйте zakroma_zds_node_name после начала эксплуатации.
Секреты Ansible Vault
Не записывайте реальные пароли в открытом виде. Создайте inventories/base-cluster/group_vars/all/vault.yml:
1mkdir -p inventories/base-cluster/group_vars/all 2touch inventories/base-cluster/group_vars/all/vault.yml 3 4ansible-vault encrypt_string --name zakroma_postgresql_password >> \ 5 inventories/base-cluster/group_vars/all/vault.yml 6ansible-vault encrypt_string --name zakroma_admin_password >> \ 7 inventories/base-cluster/group_vars/all/vault.yml 8ansible-vault encrypt_string --name zakroma_zds_password >> \ 9 inventories/base-cluster/group_vars/all/vault.yml
Для всех трёх команд используйте один и тот же Vault password. zakroma_postgresql_password должен совпадать с паролем zakroma_user в PostgreSQL.
Копирование сертификата
В inventories/base-cluster/group_vars/certificates.yml оставьте три узла:
1certificates_copy_source_path: files 2 3host_cert_config: 4 storage-1: 5 certs: 6 - src_dir: "{{ certificates_copy_source_path }}" 7 dest_dir: /opt/certs 8 cert_file: zakroma.crt 9 key_file: zakroma.key 10 owner: zakroma 11 group: zakroma 12 cert_permissions: "0644" 13 key_permissions: "0600" 14 storage-2: 15 certs: 16 - src_dir: "{{ certificates_copy_source_path }}" 17 dest_dir: /opt/certs 18 cert_file: zakroma.crt 19 key_file: zakroma.key 20 owner: zakroma 21 group: zakroma 22 cert_permissions: "0644" 23 key_permissions: "0600" 24 storage-3: 25 certs: 26 - src_dir: "{{ certificates_copy_source_path }}" 27 dest_dir: /opt/certs 28 cert_file: zakroma.crt 29 key_file: zakroma.key 30 owner: zakroma 31 group: zakroma 32 cert_permissions: "0644" 33 key_permissions: "0600"
Переменные Zakroma-Storage
В inventories/base-cluster/group_vars/zakroma-storage.yml проверьте и измените следующие блоки:
Не заменяйте весь файлВ примере показаны только изменяемые поля. Найдите их в поставляемом
zakroma-storage.yml, измените указанные значения и сохраните остальные поля вложенных блоков.
1zakroma_storage_postgresql_host: postgresql.zakroma.internal 2 3zakroma_storage_admin: 4 path: "zakroma-admin.zakroma.internal:8444" 5 monitoring_path: "" 6 7zakroma_storage_nginx_proxy: false 8zakroma_storage_base_domain: zakroma.internal 9 10zakroma_storage_gateway: 11 host: "global.{{ zakroma_storage_base_domain }}" 12 s3api_port: 6443 13 management_port: 8444 14 tls: 15 enabled: true 16 certs: 17 - key: /opt/certs/zakroma.key 18 crt: /opt/certs/zakroma.crt 19 default_admin: zakromaadmin 20 auth: 21 auth_provider: file 22 user_provider: file 23 users: 24 - name: zakromaadmin 25 password: "{{ zakroma_admin_password }}" 26 groups: 27 - clouduser
Порты без балансировщикаGateway отдельно слушает S3 API и Management API. Поэтому в Quick Start Admin UI доступен на
8444, а S3 API — на6443. Единый порт443публикуется внешним HAProxy/Nginx и не входит в этот сценарий.
Замените во всех блоках PostgreSQL пароль-заглушку на Vault-переменную:
1postgresql_username: zakroma_user 2postgresql_password: "{{ zakroma_postgresql_password }}" 3postgresql_dbname: zakroma 4postgresql_sslmode: disable
Это нужно сделать для zakroma_storage_core, zakroma_storage_gateway, единственного элемента zakroma_storage_workers, zakroma_storage_notification и zakroma_storage_seclog. Не добавляйте второй worker в этом сценарии.
Переменные Zakroma-ZDS
В inventories/base-cluster/group_vars/zakroma-zds-v2-ec.yml задайте EC 2+1, группу Inventory и один диск:
Изменяйте только указанные поляНе заменяйте показанным фрагментом весь файл: роли нужны и остальные поля блоков
server,client,providers,workers,registryиdrive. Внутриzakroma_zds_driveзамените только подблокlist.
1zakroma_zds_server: 2 accessKey: zakromaadmin 3 secretKey: "{{ zakroma_zds_password }}" 4 5zakroma_zds_cluster_server: 6 accessKey: zakromaadmin 7 secretKey: "{{ zakroma_zds_password }}" 8 9zakroma_zds_client: 10 accessKey: zakromaadmin 11 secretKey: "{{ zakroma_zds_password }}" 12 13zakroma_zds_providers: 14 maxConcurrentPipelines: 200 15 writeQueueDepth: 2 16 pipelineMinFileSize: 4096 17 ec: 18 dataPart: 2 19 parityPart: 1 20 cleanup: false 21 fc: 22 replicaCount: 2 23 cleanup: false 24 25zakroma_zds_background_window_jobs: 26 vacuum: 27 storePath: /etc/zds/vacuum-state 28 scan: 29 storePath: /etc/zds/scan-state 30 31zakroma_zds_registry: 32 path: /etc/zds/db 33 34zakroma_zds_hosts_group_name: zakroma-zds-v2-ec 35 36zakroma_zds_drive: 37 capacityThreshold: 1 38 defaultStorageClass: HDD 39 list: 40 - index: 1 41 path: /data/zds 42 storageGroup: 1 43 storageClass: HDD
Не оставляйте EC 3+1Для
dataPart: 3иparityPart: 1нужно не менее четырёх частей на разных узлах/дисках. В этом трёхузловом сценарии задайте2+1явно.
Запуск Ansible
Перед каждым запуском выполните --syntax-check. Из-за Vault-переменных Ansible запросит Vault password.
Сертификаты
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook --ask-vault-pass \ 2 -i inventories/base-cluster/hosts \ 3 playbooks/sample-play-copy-certificates.yml --syntax-check 4 5ANSIBLE_CONFIG=ansible.cfg ansible-playbook --ask-vault-pass \ 6 -i inventories/base-cluster/hosts \ 7 playbooks/sample-play-copy-certificates.yml
Лицензия
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook --ask-vault-pass \ 2 -i inventories/base-cluster/hosts \ 3 playbooks/sample-play-copy-licence-file.yml --syntax-check 4 5ANSIBLE_CONFIG=ansible.cfg ansible-playbook --ask-vault-pass \ 6 -i inventories/base-cluster/hosts \ 7 playbooks/sample-play-copy-licence-file.yml
Zakroma-Storage
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook --ask-vault-pass \ 2 -i inventories/base-cluster/hosts \ 3 playbooks/sample-play-zakroma-storage.yml --syntax-check 4 5ANSIBLE_CONFIG=ansible.cfg ansible-playbook --ask-vault-pass \ 6 -i inventories/base-cluster/hosts \ 7 playbooks/sample-play-zakroma-storage.yml
Zakroma-ZDS
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook --ask-vault-pass \ 2 -i inventories/base-cluster/hosts \ 3 playbooks/sample-play-zakroma-zds-v2-ec.yml --syntax-check 4 5ANSIBLE_CONFIG=ansible.cfg ansible-playbook --ask-vault-pass \ 6 -i inventories/base-cluster/hosts \ 7 playbooks/sample-play-zakroma-zds-v2-ec.yml
Полное описание переменных: Установка базового кластера.
Проверка сервисов
На каждом 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 запросит пароль, заданный в zakroma_zds_password:
1curl --fail --silent --show-error --user zakromaadmin \ 2 http://localhost:8089/inner/status | \ 3 jq -e ' 4 .status == "RUNNING" and 5 .clusterStatus == "RW" and 6 (.nodes | length) == 2 and 7 all(.nodes[]; .status == "RUNNING") and 8 all(.volumes[]; .status == "RUNNING") 9 '
Команда должна завершиться с кодом 0 и вывести true.
Проверка DNS и HTTPS после установки
Ещё раз проверьте 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
Каждая команда должна вывести IP-адреса всех трёх Storage-узлов.
Затем проверьте каждый backend отдельно. --resolve передаёт правильные Host и SNI, но направляет запрос на конкретный IP:
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 https://zakroma-admin.zakroma.internal:8444/auth/config >/dev/null 5 echo "OK: Admin UI on ${ip}" 6done
Проверьте сертификат на каждом узле:
1for ip in 192.168.1.11 192.168.1.12 192.168.1.13; do 2 openssl s_client -connect "${ip}:8444" \ 3 -servername zakroma-admin.zakroma.internal \ 4 -verify_return_error </dev/null 2>/dev/null | \ 5 grep -E 'subject=|issuer=|Verify return code' 6done
Ожидается Verify return code: 0 (ok). Если используется внутренний CA, добавьте его корневой сертификат в trust store машины оператора.
Проверьте обычный DNS-доступ:
1curl --fail https://zakroma-admin.zakroma.internal:8444/auth/config
Admin UI доступен по адресу:
1https://zakroma-admin.zakroma.internal:8444
Войдите под zakromaadmin с паролем zakroma_admin_password. Создайте рабочую область demo-ws, бакет demo и группу хранения с EC 2+1. Подробнее: Рабочие области и Бакеты.
Проверьте wildcard для созданной области:
1dig +short A demo-ws.zakroma.internal | sort -u
Ожидаются IP-адреса всех трёх Storage-узлов.
Проверка S3
Создайте для локального пользователя S3-ключ в Admin UI. Затем установите 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='https://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
Команда cmp не должна вывести различий. Команда s3 rm должна подтвердить удаление тестового объекта.
Критерии готовности
- Все четыре узла соответствуют минимальным ресурсам.
- DNS-имена одинаково разрешаются с машины оператора и каждого узла.
-
zakroma-admin,globalи wildcard возвращают три IP-адреса Storage. - PostgreSQL доступен с трёх Storage-узлов.
- На каждом Storage-узле активны Storage, Gateway и ZDS.
- ZDS видит три узла, волюмы имеют статус
RUNNING, кластер —RW. - Каждый Storage backend отвечает при проверке через
curl --resolve. - TLS-сертификат валиден для Admin UI и имени рабочей области.
- Группа хранения создана с EC 2+1.
- Проверка S3 успешно записывает, читает и удаляет объект.