Вы просматриваете документацию для Cozystack v1.5. Документация последней версии доступна по ссылке: v1.6.

FoundationDB

Управляемый сервис FoundationDB для Cozystack.

Обзор

FoundationDB представляет собой распределенную базу данных для обработки больших объемов структурированных данных в кластерах серверов массового сегмента. Она организует данные в виде упорядоченного хранилища «ключ-значение» и использует ACID-транзакции для всех операций.

Этот пакет обеспечивает развертывание управляемого кластера FoundationDB с помощью оператора Kubernetes для FoundationDB.

Возможности

  • Высокая доступность: Развертывание с несколькими экземплярами и автоматическим аварийным переключением
  • ACID-транзакции: Полная поддержка ACID-транзакций во всем кластере
  • Масштабирование: Простое масштабирование ресурсов хранилища и вычислительных ресурсов
  • Интеграция резервного копирования: Необязательное S3-совместимое хранилище резервных копий
  • Мониторинг: Встроенные мониторинг и оповещения с помощью WorkloadMonitor
  • Гибкая настройка: Поддержка пользовательских параметров FoundationDB

Настройка

Базовая настройка

# Конфигурация процессов кластера
cluster:
  version: "7.3.63"
  processCounts:
    storage: 3           # Количество процессов хранилища (определяет размер кластера)
    stateless: -1        # Вычисляется автоматически
    cluster_controller: 1
  faultDomain:
    key: "kubernetes.io/hostname"
    valueFrom: "spec.nodeName"

Хранилище

storage:
  size: "16Gi"           # Размер хранилища на экземпляр
  storageClass: ""       # Класс хранилища (необязательно)

Ресурсы

# Используйте готовый профиль ресурсов
resourcesPreset: "medium"  # small, medium, large, xlarge, 2xlarge

# Или задайте пользовательскую конфигурацию ресурсов
resources:
  cpu: "2000m"
  memory: "4Gi"

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

Рекомендуемый сценарий резервного копирования использует подсистему резервного копирования Cozystack: ресурс BackupClass уровня кластера связывает apps.cozystack.io/FoundationDB со стратегией strategy.backups.cozystack.io/FoundationDB, а tenants запускают задания через BackupJob / RestoreJob. Полный пример (настройка администратором, резервное копирование, восстановление на месте и восстановление в копию) приведен в examples/backups/foundationdb/.

Встроенные в чарт значения backup.* (backup.enabled, backup.s3, backup.retentionPolicy) имеют статус УСТАРЕЛО, но для обратной совместимости по-прежнему формируют исходный пользовательский ресурс (CR) FoundationDBBackup без изменений при backup.enabled=true. В новых развертываниях оставляйте backup.enabled=false (значение по умолчанию) и используйте описанный выше сценарий с BackupClass. Одновременное использование обоих сценариев в одном кластере не поддерживается: оператор FoundationDB допускает только один активный каталог резервного копирования на кластер, а драйвер резервного копирования сразу возвращает Ready=False/ConflictingInChartBackup, если обнаруживает созданную чартом резервную копию в состоянии Running для того же целевого кластера.

Расширенная настройка

# Пользовательские параметры FoundationDB
customParameters:
  - "knob_disable_posix_kernel_aio=1"

# Тип образа (split используется по умолчанию; соответствует фактическому значению существующих кластеров)
imageType: "split"

# Включите автоматическую замену подов
automaticReplacements: true

# Конфигурация контекста безопасности
securityContext:
  runAsUser: 4059
  runAsGroup: 4059

Предварительные требования

  • В кластере должен быть установлен оператор FoundationDB
  • Достаточный объем ресурсов хранилища и вычислительных ресурсов
  • Для резервного копирования: учетные данные S3-совместимого хранилища

Развертывание

  1. Установите оператор FoundationDB (системный пакет)
  2. Разверните пакет приложения с требуемой конфигурацией
  3. Кластер будет автоматически подготовлен и настроен

Мониторинг

Пакет включает интеграцию с WorkloadMonitor для мониторинга состояния кластера и отслеживания ресурсов. Чтобы отключить мониторинг, задайте:

monitoring:
  enabled: false

Безопасность

  • Все контейнеры запускаются с контекстами безопасности с ограниченными правами
  • Повышение привилегий запрещено
  • Корневая файловая система по возможности доступна только для чтения
  • Поддерживается пользовательская настройка контекста безопасности

Отказоустойчивость

FoundationDB спроектирована для обеспечения высокой доступности:

  • Автоматическое обнаружение сбоев и восстановление
  • Репликация данных между экземплярами
  • Настраиваемые домены отказа с учетом распределения по стойкам и зонам
  • Избыточность журналов транзакций

Включенный в пакет ресурс WorkloadMonitor автоматически настраивается на основе значения cluster.redundancyMode. Для свойства minReplicas ресурса WorkloadMonitor задается значение, благодаря которому статус работоспособности кластера точно отражает его уровень отказоустойчивости. Допустимое количество отказов:

  • single: 0 отказов
  • double: 1 отказ
  • triple и режимы с учетом дата-центров: 2 отказа

Например, при конфигурации по умолчанию (redundancyMode: double и 3 пода хранилища) для minReplicas будет установлено значение 2.

Рекомендации по производительности

  • Используйте SSD-хранилище для повышения производительности
  • Рассмотрите возможность выделения отдельных узлов для процессов хранилища
  • Отслеживайте метрики кластера, чтобы выявлять возможности оптимизации
  • Масштабируйте процессы хранилища и процессы без состояния в соответствии с требованиями workload

Поддержка

По вопросам, связанным непосредственно с FoundationDB, обратитесь к документации FoundationDB.

По вопросам, связанным с Cozystack, обратитесь к документации Cozystack или воспользуйтесь каналами поддержки.

Параметр storageClass помечен в схеме чарта как неизменяемый. Описание контракта и список компонентов, обеспечивающих его соблюдение, приведены в docs/storage-immutability.md.

Параметры

Общие параметры

ИмяОписаниеТипЗначение
clusterКонфигурация кластера.object{}
cluster.processCountsКоличество процессов для разных ролей.object{}
cluster.processCounts.statelessКоличество процессов без состояния (-1 для автоматического расчета).int-1
cluster.processCounts.storageКоличество процессов хранилища (определяет размер кластера).int3
cluster.processCounts.cluster_controllerКоличество процессов контроллера кластера.int1
cluster.versionИспользуемая версия FoundationDB.string7.3.63
cluster.redundancyModeРежим избыточности базы данных (single, double, triple, three_datacenter, three_datacenter_fallback).stringdouble
cluster.storageEngineДвижок хранилища (ssd-2, ssd-redwood-v1, ssd-rocksdb-v1, memory).stringssd-2
cluster.faultDomainКонфигурация домена отказа.object{}
cluster.faultDomain.keyКлюч домена отказа.stringkubernetes.io/hostname
cluster.faultDomain.valueFromИсточник значения домена отказа.stringspec.nodeName
storageКонфигурация хранилища.object{}
storage.sizeРазмер постоянных томов для каждого экземпляра.quantity16Gi
storage.storageClassКласс хранилища (если не задан, используется класс хранилища кластера по умолчанию).string""
resourcesЯвная конфигурация CPU и памяти для каждого экземпляра FoundationDB. Если параметр не задан, применяется пресет, указанный в resourcesPreset.object{}
resources.cpuCPU, доступный каждому экземпляру.quantity""
resources.memoryПамять (RAM), доступная каждому экземпляру.quantity""
resourcesPresetПресет ресурсов по умолчанию, используемый, если параметр resources не задан.stringc1.small
backupУСТАРЕЛО. Конфигурация резервного копирования (используйте подсистему резервного копирования Cozystack: BackupClass + стратегия FoundationDB).object{}
backup.enabledУСТАРЕЛО. Включить резервное копирование, встроенное в чарт (заменено сценарием BackupClass + стратегия FoundationDB).boolfalse
backup.s3УСТАРЕЛО. Конфигурация S3 для резервного копирования.object{}
backup.s3.bucketУСТАРЕЛО. Имя бакета S3.string""
backup.s3.endpointУСТАРЕЛО. URL эндпоинта S3.string""
backup.s3.regionУСТАРЕЛО. Регион S3.stringus-east-1
backup.s3.credentialsУСТАРЕЛО. Учетные данные S3.object{}
backup.s3.credentials.accessKeyIdУСТАРЕЛО. Идентификатор ключа доступа S3.string""
backup.s3.credentials.secretAccessKeyУСТАРЕЛО. Секретный ключ доступа S3.string""
backup.retentionPolicyУСТАРЕЛО. Политика хранения резервных копий.string7d
monitoringКонфигурация мониторинга.object{}
monitoring.enabledВключить интеграцию с WorkloadMonitor.booltrue

Конфигурация FoundationDB

ИмяОписаниеТипЗначение
customParametersПользовательские параметры, передаваемые в FoundationDB.[]string[]
imageTypeТип образа контейнера для развертывания.stringsplit
securityContextКонтекст безопасности контейнеров.object{}
securityContext.runAsUserИдентификатор пользователя для запуска контейнера.int4059
securityContext.runAsGroupИдентификатор группы для запуска контейнера.int4059
automaticReplacementsВключить автоматическую замену подов.booltrue
Last modified 2026-07-19: temp (52ed192)