Профиль нагрузки на хранилище секретов сильно различается между организациями, поэтому приведённые значения следует рассматривать как отправную точку. Проверяйте фактическое потребление ресурсов по метрикам, описанным в разделе «Мониторинг», и корректируйте размер кластера.

Базовые системные требования приведены в разделе «Требования».

Профили кластера

Значения для небольшого и большого кластера взяты из раздела «Требования». Профиль «Средний» и объём диска — рекомендации, которые нужно проверить на своей нагрузке.

ПараметрНебольшойСредний (рекомендация)Большой
НазначениеРазработка, тестирование, начальные развёртыванияProduction с умеренной нагрузкойProduction с постоянной высокой нагрузкой
Процессор4–8 ядер8 ядер8–16 ядер
Память8–16 ГБ16 ГБ16–32 ГБ
Операции дискового ввода-вывода3000+ оп/с3000+ оп/с3000+ оп/с
Пропускная способность диска70+ МБ/с100+ МБ/с200+ МБ/с
Объём диска для данных Raft25 ГБ50 ГБ100+ ГБ

Ориентировочная производительность в зависимости от числа ядер (из раздела «Требования»):

Операция4 ядра16 ядер
Аутентификация (получение токена)До 20 оп/сДо 100 оп/с
Чтение ключа до 1 КБДо 500 оп/сДо 7000 оп/с
Запись ключаДо 30 оп/сДо 150 оп/с

Диск для Raft

Каждая запись в Stronghold фиксируется в журнале Raft на большинстве узлов с синхронизацией на диск, поэтому задержка диска напрямую влияет на время записи и стабильность выборов лидера.

Рекомендации:

  • используйте локальные SSD или NVMe-диски; избегайте сетевых дисков с непредсказуемой задержкой;
  • выделите для данных Raft отдельный раздел, чтобы журналы ОС и аудита не могли заполнить его;
  • контролируйте задержку синхронизации на диск — ориентир не более единиц миллисекунд;
  • учитывайте, что размер хранилища растёт вместе с количеством аренд и токенов, а снимки Raft требуют места для временных файлов.

Проверить задержку синхронизации диска можно утилитой fio:

fio --name=raft-fsync --directory=/opt/stronghold/data --rw=write --ioengine=sync --fdatasync=1 --bs=4k --size=100m

В выводе обратите внимание на перцентили fsync/fdatasync/sync_file_range. Удалите созданный тестовый файл после проверки.

Количество узлов

УзловДопустимо потерятьКогда использовать
10Только разработка и тестирование
31Стандартный production-кластер
52Повышенные требования к доступности, размещение в трёх зонах отказа

Рекомендации:

  • используйте нечётное число голосующих узлов: при чётном числе устойчивость к отказам не увеличивается;
  • не увеличивайте кластер больше пяти голосующих узлов: каждый дополнительный узел увеличивает время фиксации записи;
  • размещайте узлы в разных зонах отказа с низкой сетевой задержкой между ними;
  • для горизонтального масштабирования операций чтения используйте performance standby (Stronghold EE), для катастрофоустойчивости — DR-репликацию.

В DP

В DP ресурсы и количество реплик задаёт модуль:

  • Запросы ресурсов (requests) пода stronghold — 50m CPU и 256Mi памяти; VerticalPodAutoscaler (режим Initial) может увеличить их до 500m и 1Gi. Под stronghold-automatic запрашивает 10m CPU и 50Mi памяти.
  • Размер диска по умолчанию (diskSizeGigabytes) — 1 ГБ; задайте значение, достаточное для ваших данных.
  • При первоначальной установке количество реплик вычисляется как число master-узлов плюс arbiter-узлов; если получилось чётное число, добавляется ещё одна реплика. Затем сохраняется текущее количество реплик StatefulSet.
  • У PodDisruptionBudget значение minAvailable равно replicas/2 + 1 (с округлением вниз; 0 при одной реплике).
  • Деструктивные миграции хранилища требуют не менее 3 реплик.

Что создаёт нагрузку

ФакторВлияниеКак снизить
АрендыКаждая аренда хранится в хранилище и обрабатывается при истечении. Большое количество увеличивает потребление памяти, время запуска и смены лидераУменьшайте TTL, отзывайте неиспользуемые аренды, применяйте квоты
ТокеныКаждый вход создаёт токен и запись в хранилищеПереиспользуйте токены, используйте Stronghold Agent, уменьшайте TTL
АутентификацияОперации входа значительно дороже чтения секретаКешируйте токены на стороне клиента
ЗаписьКаждая запись реплицируется через Raft с синхронизацией на дискИспользуйте быстрые диски, избегайте частой перезаписи одних и тех же секретов
АудитКаждый запрос и ответ записываются во все аудит-устройстваИспользуйте быстрые локальные диски или надёжные сетевые приёмники, фильтрацию
Криптографические операцииМеханизмы Transit и PKI нагружают CPU, особенно RSA-ключи большой длиныУвеличьте число ядер, выбирайте алгоритмы с меньшей стоимостью

Пересмотр размера кластера

Увеличьте ресурсы, если:

  • 99-й перцентиль stronghold_core_handle_request устойчиво растёт;
  • загрузка CPU на активном узле регулярно превышает 70–80%;
  • потребление памяти приближается к объёму ОЗУ узла;
  • возрастает stronghold_raft_commitTime и учащаются выборы лидера.