Вы просматриваете документацию для 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-совместимого хранилища
Развертывание
- Установите оператор FoundationDB (системный пакет)
- Разверните пакет приложения с требуемой конфигурацией
- Кластер будет автоматически подготовлен и настроен
Мониторинг
Пакет включает интеграцию с 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 | Количество процессов хранилища (определяет размер кластера). | int | 3 |
cluster.processCounts.cluster_controller | Количество процессов контроллера кластера. | int | 1 |
cluster.version | Используемая версия FoundationDB. | string | 7.3.63 |
cluster.redundancyMode | Режим избыточности базы данных (single, double, triple, three_datacenter, three_datacenter_fallback). | string | double |
cluster.storageEngine | Движок хранилища (ssd-2, ssd-redwood-v1, ssd-rocksdb-v1, memory). | string | ssd-2 |
cluster.faultDomain | Конфигурация домена отказа. | object | {} |
cluster.faultDomain.key | Ключ домена отказа. | string | kubernetes.io/hostname |
cluster.faultDomain.valueFrom | Источник значения домена отказа. | string | spec.nodeName |
storage | Конфигурация хранилища. | object | {} |
storage.size | Размер постоянных томов для каждого экземпляра. | quantity | 16Gi |
storage.storageClass | Класс хранилища (если не задан, используется класс хранилища кластера по умолчанию). | string | "" |
resources | Явная конфигурация CPU и памяти для каждого экземпляра FoundationDB. Если параметр не задан, применяется пресет, указанный в resourcesPreset. | object | {} |
resources.cpu | CPU, доступный каждому экземпляру. | quantity | "" |
resources.memory | Память (RAM), доступная каждому экземпляру. | quantity | "" |
resourcesPreset | Пресет ресурсов по умолчанию, используемый, если параметр resources не задан. | string | c1.small |
backup | УСТАРЕЛО. Конфигурация резервного копирования (используйте подсистему резервного копирования Cozystack: BackupClass + стратегия FoundationDB). | object | {} |
backup.enabled | УСТАРЕЛО. Включить резервное копирование, встроенное в чарт (заменено сценарием BackupClass + стратегия FoundationDB). | bool | false |
backup.s3 | УСТАРЕЛО. Конфигурация S3 для резервного копирования. | object | {} |
backup.s3.bucket | УСТАРЕЛО. Имя бакета S3. | string | "" |
backup.s3.endpoint | УСТАРЕЛО. URL эндпоинта S3. | string | "" |
backup.s3.region | УСТАРЕЛО. Регион S3. | string | us-east-1 |
backup.s3.credentials | УСТАРЕЛО. Учетные данные S3. | object | {} |
backup.s3.credentials.accessKeyId | УСТАРЕЛО. Идентификатор ключа доступа S3. | string | "" |
backup.s3.credentials.secretAccessKey | УСТАРЕЛО. Секретный ключ доступа S3. | string | "" |
backup.retentionPolicy | УСТАРЕЛО. Политика хранения резервных копий. | string | 7d |
monitoring | Конфигурация мониторинга. | object | {} |
monitoring.enabled | Включить интеграцию с WorkloadMonitor. | bool | true |
Конфигурация FoundationDB
| Имя | Описание | Тип | Значение |
|---|---|---|---|
customParameters | Пользовательские параметры, передаваемые в FoundationDB. | []string | [] |
imageType | Тип образа контейнера для развертывания. | string | split |
securityContext | Контекст безопасности контейнеров. | object | {} |
securityContext.runAsUser | Идентификатор пользователя для запуска контейнера. | int | 4059 |
securityContext.runAsGroup | Идентификатор группы для запуска контейнера. | int | 4059 |
automaticReplacements | Включить автоматическую замену подов. | bool | true |