Параметры конфигурации кластера

Конфигурация кластера задается в YAML-файле, который передается в параметре --yaml-config при запуске узлов кластера. В данной статье приведено описание основных разделов конфигурации и ссылки на подробную документацию по каждому разделу.

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

Разделы конфигурации

Синтаксис

host_configs:
- host_config_id: 1
  drive:
  - path: <path_to_device>
    type: <type>
  - path: ...
- host_config_id: 2
  ...

Атрибут host_config_id задает числовой идентификатор конфигурации. В атрибуте drive содержится коллекция описаний подключенных дисков. Каждое описание состоит из двух атрибутов:

  • path : Путь к смонтированному блочному устройству, например /dev/disk/by-partlabel/ydb_disk_ssd_01
  • type : Тип физического носителя устройства: ssd, nvme или rot (rotational - HDD)

Примеры

Одна конфигурация с идентификатором 1, с одним диском типа SSD, доступным по пути /dev/disk/by-partlabel/ydb_disk_ssd_01:

host_configs:
- host_config_id: 1
  drive:
  - path: /dev/disk/by-partlabel/ydb_disk_ssd_01
    type: SSD

Две конфигурации с идентификаторами 1 (два SSD диска) и 2 (три SSD диска):

host_configs:
- host_config_id: 1
  drive:
  - path: /dev/disk/by-partlabel/ydb_disk_ssd_01
    type: SSD
  - path: /dev/disk/by-partlabel/ydb_disk_ssd_02
    type: SSD
- host_config_id: 2
  drive:
  - path: /dev/disk/by-partlabel/ydb_disk_ssd_01
    type: SSD
  - path: /dev/disk/by-partlabel/ydb_disk_ssd_02
    type: SSD
  - path: /dev/disk/by-partlabel/ydb_disk_ssd_03
    type: SSD

Особенности Kubernetes

YDB Kubernetes operator монтирует NBS диски для Storage узлов на путь /dev/kikimr_ssd_00. Для их использования должна быть указана следующая конфигурация host_configs:

host_configs:
- host_config_id: 1
  drive:
  - path: /dev/kikimr_ssd_00
    type: SSD

Файлы с примерами конфигурации, поставляемые в составе YDB Kubernetes operator, уже содержат такую секцию, и её не нужно менять.

hosts — статические узлы кластера

В данной группе перечисляются статические узлы кластера, на которых запускаются процессы работы со Storage, и задаются их основные характеристики:

  • Числовой идентификатор узла
  • DNS-имя хоста и порт, по которым может быть установлено соединение с узлом в IP network
  • Идентификатор типовой конфигурации хоста
  • Размещение в определенной зоне доступности, стойке
  • Инвентарный номер сервера (опционально)

Синтаксис

hosts:
- host: <DNS-имя хоста>
  host_config_id: <числовой идентификатор типовой конфигурации хоста>
  port: <порт> # 19001 по умолчанию
  location:
    unit: <строка с инвентарным номером сервера>
    data_center: <строка с идентификатором зоны доступности>
    rack: <строка с идентификатором стойки>
- host: <DNS-имя хоста>
  # ...

Примеры

hosts:
- host: hostname1
  host_config_id: 1
  node_id: 1
  port: 19001
  location:
    unit: '1'
    data_center: '1'
    rack: '1'
- host: hostname2
  host_config_id: 1
  node_id: 2
  port: 19001
  location:
    unit: '1'
    data_center: '1'
    rack: '1'

Особенности Kubernetes

При развертывании YDB с помощью оператора Kubernetes секция hosts полностью генерируется автоматически, заменяя любой указанный пользователем контент в передаваемой оператору конфигурации. Все Storage узлы используют host_config_id = 1, для которого должна быть задана корректная конфигурация.

Конфигурация безопасности

В разделе security_config задаются режимы аутентификации, первичная конфигурация локальных пользователей и групп и их права.

security_config:
  # настройка режима аутентификации
  enforce_user_token_requirement: false
  enforce_user_token_check_requirement: false
  default_user_sids: <аутентификационный токен для анонимных запросов>
  all_authenticated_users: <имя группы всех аутентифицированных пользователей>
  all_users_group: <имя группы всех пользователей>

  # первичные настройки безопасности
  default_users: <список пользователей по умолчанию>
  default_groups: <список групп по умолчанию>
  default_access: <список прав по умолчанию на корне кластера>

  # настройки привилегий
  viewer_allowed_sids: <список SID'ов с правами просмотра состояния кластера>
  monitoring_allowed_sids: <список SID'ов с правами просмотра и изменения состояния кластера>
  administration_allowed_sids: <список SID'ов с доступом администратора кластера>
  register_dynamic_node_allowed_sids: <список SID'ов с правами регистрации узлов баз данных в кластере>

Каждый клиент State Storage (например, таблетка DataShard) использует nto_select узлов для записи копий его данных в State Storage. Если State Storage состоит из большего количества узлов чем nto_select, то разные узлы могут быть использованы для разных клиентов, поэтому необходимо обеспечить, чтобы любое подмножество из nto_select узлов в пределах State Storage отвечало критериям отказоустойчивости.

Для nto_select должны использоваться нечетные числа, так как использование четных чисел не улучшает отказоустойчивость по сравнению с ближайшим меньшим нечетным числом.

Конфигурация безопасности

В разделе domains_config.security_config задаются режимы аутентификации, первичная конфигурация локальных пользователей и групп и их права.

domains_config:
  ...
  security_config:
    # настройка режима аутентификации
    enforce_user_token_requirement: false
    enforce_user_token_check_requirement: false
    default_user_sids: <аутентификационный токен для анонимных запросов>
    all_authenticated_users: <имя группы всех аутентифицированных пользователей>
    all_users_group: <имя группы всех пользователей>

    # первичные настройки безопасности
    default_users: <список пользователей по умолчанию>
    default_groups: <список групп по умолчанию>
    default_access: <список прав по умолчанию на корне кластера>

    # настройки привилегий
    viewer_allowed_sids: <список SID'ов с правами просмотра состояния кластера>
    monitoring_allowed_sids: <список SID'ов с правами просмотра и изменения состояния кластера>
    administration_allowed_sids: <список SID'ов с доступом администратора кластера>

Настройки режима аутентификации

Раздел

Обязателен

Описание

actor_system_config

Да

Распределение CPU-ресурсов по пулам акторной системы

auth_config

Нет

Настройки аутентификации и авторизации

blob_storage_config

Нет

Конфигурация статической группы кластера для системных таблеток

bridge_config

Нет

Конфигурация режима bridge

client_certificate_authorization

Нет

Аутентификация с помощью клиентских сертификатов

domains_config

Нет

Конфигурация домена кластера, включая Blob Storage и State Storage

feature_flags

Нет

Функциональные флаги для включения или отключения определённых возможностей YDB

healthcheck_config

Нет

Пороговые значения и таймауты сервиса Health Check

hive_config

Нет

Конфигурация запуска таблеток

host_configs

Нет

Типовые конфигурации хостов для узлов кластера

hosts

Да

Конфигурация статических узлов кластера

kafka_proxy_config

Нет

Конфигурация Kafka Proxy

log_config

Нет

Конфигурация и параметры логирования

memory_controller_config

Нет

Распределение памяти и лимиты для компонентов базы данных

node_broker_config

Нет

Конфигурация стабильных имен узлов

query_service_config

Нет

Конфигурация внешних источников для федеративных запросов

resource_broker_config

Нет

Брокер ресурсов для контроля потребления CPU и памяти

security_config

Нет

Настройки конфигурации безопасности

table_service_config

Нет

Настройки конфигурации выполнения запросов

tls

Нет

Конфигурация TLS для безопасных соединений

Практические рекомендации

Этот раздел документации посвящён полному описанию доступных настроек, а практические рекомендации по тому, что и когда настраивать, можно найти в следующих местах:

Примеры конфигураций кластеров

Модельные конфигурации кластера для развертывания можно найти в репозитории. Изучите их перед развертыванием кластера.

Предыдущая
Следующая