Перейти к основному содержанию Перейти к навигации Перейти к нижнему колонтитулу

Лимиты и квоты

Справочник по лимитам, максимальным значениям и квотам, применяемым к репозиториям, сервисам, сетям и хранилищам Rediacc.

Лимиты и квоты

На этой странице описаны жёсткие и мягкие лимиты, применяемые к развёртываниям Rediacc. Понимание этих лимитов поможет вам планировать ёмкость и избегать неожиданных ограничений.


Сервисы на репозиторий

Каждый репозиторий поддерживает до 61 сервиса, работающего одновременно.

Это жёсткий лимит, определяемый адресным пространством сети, выделенным каждому репозиторию. Каждый сервис получает собственный выделенный частный IP-адрес, а адресный блок каждого репозитория вмещает ровно 61 слот для сервисов.

Если вы приближаетесь к этому лимиту, объедините мелкие сервисы (например, перенесите вспомогательные контейнеры или агенты мониторинга в отдельный репозиторий с собственными границами изоляции) или проведите рефакторинг для уменьшения числа независимо работающих процессов в рамках одного приложения.


Репозитории на машину

Жёсткого ограничения со стороны Rediacc нет. Практический лимит зависит от ресурсов вашей машины:

РесурсВлияние
Дисковое пространствоКаждый репозиторий представляет собой зашифрованный образ диска. Машина с 1 ТБ доступного хранилища может содержать множество репозиториев, но суммарный размер всех образов должен помещаться в пул хранилища данных.
Оперативная памятьКаждый работающий репозиторий запускает собственный Docker daemon и контейнеры. Потребление памяти зависит от ваших рабочих нагрузок.
ПроцессорПараллельные операции с репозиториями (запуск, резервное копирование, форк) создают временную нагрузку на процессор.

Типичные развёртывания запускают от 10 до 50 репозиториев на машину без проблем. Машины с 32 ГБ и более оперативной памяти и 500 ГБ и более хранилища регулярно обслуживают 100+ репозиториев.

Общесистемный лимит сетевых идентификаторов

Каждому репозиторию назначается уникальный сетевой идентификатор (число, используемое для расчёта диапазона частных IP-адресов). Этот пул общий для всех машин и репозиториев, управляемых одной конфигурацией Rediacc.

ЛимитЗначение
Всего доступных сетевых идентификаторов~261 944
Область действияНа конфигурацию (общая для всех машин в конфигурации)

При удалении репозитория его сетевой идентификатор освобождается и становится доступным для повторного использования. Rediacc выделяет идентификаторы последовательно и сканирует освобождённые промежутки только когда прямой счётчик приближается к потолку. На практике этот лимит никогда не достигается. Для этого потребовалось бы создать и отслеживать сотни тысяч репозиториев за время жизни одной конфигурации.


Форки

Ограничения на количество активных форков репозитория нет. Каждый форк является полной копией с механизмом копирования при записи, собственным зашифрованным хранилищем, сетевыми адресами и Docker daemon. Форки потребляют дисковое пространство пропорционально данным, записанным в них после создания (а не полному размеру родительского репозитория).


Внешние порты

Постоянно активные порты

Порты открываются только после настройки публичного IP-адреса командой rdc config infra set --public-ipv4. До этого момента на машине нет открытых портов. После настройки:

ПортПротоколНазначение
80TCPHTTP: обрабатывается Traefik; возвращает 404 для ненастроенных доменов, не передаётся ни одному сервису
443TCPHTTPS: аналогично; запросы без совпадающего маршрута отклоняются на уровне прокси
10000–10010TCPДинамический диапазон для управляемой Rediacc TCP-переадресации

HTTP/HTTPS отличаются от необработанных TCP-портов: хотя порты 80 и 443 открыты, каждый запрос проверяется обратным прокси по явной таблице маршрутизации. Без настроенного сервиса и соответствующего домена код приложения недоступен и данные не раскрываются.

Опциональная TCP/UDP-переадресация

Все остальные порты (базы данных, кеши, брокеры сообщений, DNS, почта) закрыты по умолчанию и должны быть явно открыты. Это сводит к минимуму поверхность атаки машины.

Чтобы открыть порт конкретного сервиса:

labels:
  - "rediacc.tcp_ports=5432"   # expose PostgreSQL from this container
  - "rediacc.udp_ports=53"     # expose DNS from this container

Чтобы открыть порт на уровне машины (доступный всем сервисам):

rdc config infra set -m server-1 --tcp-ports 25,587,993   # mail server
rdc config infra push -m server-1

Никогда не открывайте порты баз данных или кешей наружу без конкретной необходимости. Используйте автоматические HTTPS-маршруты для веб-сервисов и оставляйте сервисы хранения внутренними.


Хранилище данных

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

  • Минимальный рекомендуемый размер: 50 ГБ
  • Максимальный размер: ограничен вашим диском. Один пул может занимать весь диск.
  • Изменение размера: используйте rdc datastore resize для расширения существующего пула. Уменьшение не поддерживается.
  • Файловая система: Rediacc использует BTRFS для снимков с копированием при записи и эффективного форкинга. Требуется машина с ядром Linux 6.1 или новее для полной стабильности в продуктивной среде.

У каждого образа репозитория есть фиксированный максимальный размер, задаваемый при создании (по умолчанию: 10 ГБ). Используйте rdc repo resize для расширения отдельного репозитория. Сумма максимальных размеров всех репозиториев не может превышать размер пула хранилища данных.


HTTP-маршруты

Каждый сервис с меткой rediacc.service_port автоматически получает один HTTPS-маршрут. Ограничения на количество сервисов с маршрутами нет (с учётом максимума в 61 сервис на репозиторий).

Wildcard-сертификаты TLS выпускаются для каждого репозитория при первом развёртывании через Let’s Encrypt (вызов Cloudflare DNS-01). Let’s Encrypt устанавливает лимит в 50 сертификатов на зарегистрированный домен в неделю. Поскольку Rediacc использует один wildcard-сертификат на репозиторий (а не на сервис), развёртывание с более чем 50 новыми репозиториями за одну неделю может достичь этого лимита.

Форки используют существующий wildcard-сертификат родительского репозитория и не расходуют квоту сертификатов.


Контрольная точка / восстановление (CRIU)

Живая миграция через CRIU имеет следующие ограничения:

  • Опционально: контрольные точки создаются только для контейнеров с меткой rediacc.checkpoint=true. Базы данных и сервисы без состояния исключаются по умолчанию и запускаются заново при восстановлении.
  • Требование к ядру: Linux 6.1 или новее на исходной и целевой машине.
  • Сетевой режим: CRIU требует режим хостовой сети. Контейнеры с пользовательскими сетевыми конфигурациями не могут быть сохранены в контрольную точку.
  • Память: размер данных контрольной точки равен резидентной памяти сохраняемого процесса. Большие наборы данных в памяти (например, приложение Node.js, кеширующее 4 ГБ данных) создают файлы контрольных точек размером 4 ГБ.
  • TCP-соединения: Приложения должны быть готовы к потере соединений при восстановлении. Активные TCP-соединения не сохраняются, восстановленный процесс видит сокеты как закрытые и должен переподключиться. Это применимо как к восстановлению на той же машине, так и к межмашинному восстановлению.
  • Живой форк на той же машине не поддерживается: rdc repo fork --parent X --tag Y --checkpoint успешно захватывает контрольную точку, но последующий rdc repo up на той же машине терпит неудачу с criu failed: type RESTORE errno 0, пока родитель ещё работает. Это вызвано upstream-багами CRIU checkpoint-restore/criu#478 и checkpoint-restore/criu#514, которые взаимодействуют с network_mode: host. Для сохранения состояния процесса на месте на той же машине используйте rdc repo down --checkpoint + rdc repo up. Для живой миграции используйте rdc repo push --checkpoint на другую машину.

Резервное копирование

ЛимитЗначение
Назначений резервного копирования на репозиторийБез ограничений
Одновременных задач резервного копирования1 на репозиторий (задачи ставятся в очередь при одновременном запуске)
Частота резервного копированияМинимальный интервал не установлен; ограничено пропускной способностью вашего хранилища. Используйте rdc config backup-strategy set --name <name> --bwlimit "6M" для ограничения скорости загрузки
ХранениеКонтролируется вашим провайдером хранилища (S3, Cloudflare R2 и др.). Rediacc не устанавливает политики хранения.
Резервное копирование между машинамиПоддерживается; на целевой машине должно быть достаточно места в хранилище данных

CLI и API

ЛимитЗначение
Одновременных команд rdc к одной машинеБез ограничений (каждая команда открывает собственное SSH-соединение)
Параллелизм запуска репозиториев по умолчанию3 (настраивается через --concurrency)
Тайм-аут SSH-соединения30 секунд для первоначального подключения
Длительность сессии rdcБез тайм-аута; длительные операции поддерживают соединение активным

Поддерживаемые версии ОС

Удалённые машины должны работать на одной из следующих ОС для соответствия требованиям Rediacc к ядру, файловой системе и сетевой изоляции. Этот список является авторитетным CI-протестированным набором (матрица Bridge Workers) и должен оставаться синхронизированным с Требованиями:

ОСМинимальная версияЯдро по умолчаниюПримечания
Ubuntu24.04 LTS (рекомендуется)6.8AppArmor по умолчанию.
Debian13 (Trixie); 12 Bookworm также работает6.12 (6.1 на Debian 12)
Fedora436.12SELinux enforcing по умолчанию.
openSUSE Leap16.06.4+AppArmor по умолчанию.
Oracle Linux10 (UEK)UEK 7+UEK сохраняет btrfs; SELinux enforcing по умолчанию.

Минимально требуемое ядро: 6.1. Машины с более старыми ядрами отклоняются при настройке с понятным сообщением об ошибке.

Почему ядро 6.1? Rediacc использует BTRFS для зашифрованного хранения репозиториев и форкинга с копированием при записи. Linux 6.1 представил критические улучшения BTRFS, которые значительно сокращают время монтирования для больших хранилищ данных, улучшают производительность удаления снимков и исправляют проблемы целостности данных, присутствовавшие в более ранних ядрах. Ядро 6.1 также необходимо для хуков сетевой изоляции на уровне ядра, которые обеспечивают изоляцию между репозиториями, прозрачно переписывая вызовы bind() и блокируя соединения между репозиториями.

Почему не Rocky Linux 10 / стандартное ядро RHEL 10? Стандартное ядро RHEL 10 поставляется без модуля btrfs (modprobe btrfs завершается ошибкой “Module btrfs not found”). Зашифрованный бэкенд хранилища Rediacc не может работать без btrfs. Oracle Linux 10 является единственной RHEL-совместимой целью в списке поддерживаемых систем, поскольку по умолчанию использует Unbreakable Enterprise Kernel (UEK), который сохраняет btrfs. Полное объяснение см. в Требованиях: Почему UEK?.

Матрица функций ядра

Операторы могут использовать эту матрицу для быстрого просмотра того, что каждая CI-протестированная ОС предоставляет из коробки. Все пять удовлетворяют каждому требованию; матрица является операторской справочной информацией, а не критерием отбора.

ОСМодуль btrfscgroups v2Landlock (ABI 1 и выше)Хуки eBPF cgroup
Ubuntu 24.04встроенныйunified hierarchyда (5.13+)да
Debian 13встроенныйunified hierarchyдада
Fedora 43встроенныйunified hierarchyдада
openSUSE Leap 16.0встроенныйunified hierarchyдада
Oracle Linux 10 (UEK)встроенный (через UEK)unified hierarchyдада