TDB Documentation portal logo
Помощь
Обновлена 30 июля 2026 г. в 16:49

Локальная конфигурация кластера и экземпляра

Конфигурация кластера в Tarantool задает общие параметры кластера, одинаковые для всех узлов кластера, и клиентский код миграций. Копия такой конфигурации хранится на каждом экземпляре, входящем в состав кластера, а сам кластер автоматически синхронизирует эти копии. Конфигурация кластера определяет топологию кластера, восстановление после сбоев (failover), параметры vshard, настройки аутентификации, управление списками контроля доступа (ACL), а также настройки, устанавливаемые пользователем. Конфигурация кластера не содержит параметры для конкретного экземпляра — порты, рабочие каталоги и настройки памяти.

Содержание:

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

Представить кластерную конфигурацию можно двумя способами:

  • Единый YAML-файл — заданные секции конфигурации собраны в одном файле config.yml. Секции конфигурации представлены в виде соответствующего блока внутри файла. Это представление конфигурации компактно, его удобно использовать для хранения и передачи данных.

  • Несколько YAML-файлов — каждая секция конфигурации находится в отдельном файле. Этот подход позволяет гибко управлять конфигурацией и редактировать отдельные ее части.

Конфигурация в едином YAML-файле

Пример единого файла конфигурации config.yml:

# config.yml---auth: { ... }crud: { ... }metrics: { ... }migrations: { ... }topology: { ... }schema: { ... }user_custom_config: { ... }vshard_groups: { ... }...

Конфигурация в нескольких YAML-файлах

В файловой системе схема конфигурации кластера имеет вид древовидной структуры. Директория config содержит основные секции конфигурации. По умолчанию в директории определены три секции конфигурации: auth.yml, topology.yml и vshard_groups.yml.

config/├── auth.yml├── topology.yml└── vshard_groups.yml

По мере добавления пользовательских секций конфигурации схема увеличивается:

config/├── auth.yml├── crud.yml├── metrics.yml├── migrations.yml├── schema.yml├── user_custom_config.yml└── vshard_groups.yml

Настройка параметров роли

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

# config.yml---migrations/source/001_init.lua: { ... }...

Пример структуры с вложенным каталогом:

Локальная конфигурация кластера и экземпляра

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

Загрузка конфигурации кластера

Есть несколько способов обновить конфигурацию кластера:

  • Lua API — обеспечивает программную гибкость и позволяет автоматизировать процесс;
  • HTTP API — позволяет удобно работать с кластером с помощью стандартных HTTP-запросов;
  • веб-интерфейс Tarantool DB.

Обновление конфигурации через веб-интерфейс

Чтобы обновить конфигурацию через веб-интерфейс, выполните следующие шаги:

  1. В веб-интерфейсе перейдите на вкладку Configuration files.
  2. При необходимости скачайте текущую версию конфигурационного файла, нажав на кнопку Download.
  3. Внесите необходимые изменения в конфигурационный файл. Добавлять, изменять и удалять можно любые разделы, кроме системных (например, topology, vshard, vshard_groups).
  4. Нажмите кнопку Upload configuration, чтобы применить обновленный файл конфигурации. Кластер проверяет изменения, отклоняя неприемлемые, а затем распространяет новую конфигурацию по всем узлам кластера. Если файл обновлен успешно, появится соответствующее сообщение в нижней части экрана. Если при попытке применить новые настройки возникла проблема, появится сообщение об ошибке.

Обновление конфигурации через HTTP API

Чтобы объединить несколько конфигураций в единый файл, можно использовать HTTP API. HTTP API работает только с одним файлом конфигурации старого образца.

В примере ниже создан файл конфигурации config.yml:

cat > config.yml << CONFIG---custom_section: { }...  CONFIG

Загрузить новую конфигурацию в кластер можно следующей командой:

curl -v "localhost:8081/admin/config" -X PUT --data-binary @config.yml

Скачать текущую конфигурацию из кластера можно так:

curl -v "localhost:8081/admin/config" -o config.yml

Скачать можно только разделы, связанные с ролями. Скачать или загрузить системные разделы (например, topology, auth, users_acl) не получится.

Если включена авторизация, используйте параметр --user с учетными данными пользователя: --user username:password. Этот параметр обеспечивает безопасное взаимодействие с API, требующим аутентификации.

Режим работы кластера при изменении конфигурации

После изменения конфигурации шардированного кластера, например, при добавлении нового набора реплик или изменении веса шардов, начинается балансировка сегментов. При балансировке выполняется миграция сегментов — перенос сегментов с более нагруженных шардов на менее нагруженные.

Начиная с версии Tarantool DataBase 1.2.6 при старте балансировки кластер автоматически включает безопасный режим, чтобы обеспечить согласованность и целостность данных. Производительность кластера в этом режиме снижается (примерно на 15% для операций REPLACE). Безопасный режим включается независимо на каждом хранилище, участвующем в балансировке сегментов. Запросы к спейсам на движке vinyl всегда выполняются в безопасном режиме независимо от текущего статуса безопасного режима.

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

  • вызвать метод crud.rebalance_safe_mode_status();
  • проверить значение метрики tnt_crud_storage_safe_mode_enabled.

Чтобы вернуть кластер в нормальный режим работы после окончания процесса балансировки, выполните следующие шаги:

  1. Дождитесь полного завершения миграции сегментов.

  2. Очистите кэш карты маршрутов на каждом роутере:

    crud.rebalance.router_cache_clear()

    Проверить время последней очистки кэша можно с помощью метрики tnt_crud_router_cache_clear_ts.

  3. Отключите безопасный режим вручную на каждом хранилище — как на мастер-узлах, так и на репликах:

    crud.rebalance_safe_mode_disable()

Кроме того, существуют следующие особенности, касающиеся балансировки сегментов:

  • Поскольку во время миграции сегмента невозможно выполнять операции с кортежами в этом сегменте, CRUD-операции при балансировке могут завершаться с ошибками. Для исправления ошибок требуется повторно выполнить соответствующие запросы;

  • Когда *_many-запрос выполняется над данными из нескольких шардов, на роутере эти данные автоматически разбиваются на пачки по шардам и параллельно отправляются на соответствующие узлы хранилища. Во время балансировки запрос может завершиться с ошибкой на некоторых хранилищах. В этом случае операция будет выполнена частично, а пользователю вернется ошибка с указанием хранилища, где не удалось выполнить запрос. Пользователю нужно быть готовым к тому, что операция может быть выполнена не полностью, и при необходимости повторить соответствующие запросы или выполнить другие необходимые действия;

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

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

В примере добавлена роль crud, которая позволяет выполнять на кластере CRUD-операции (создание, чтение, обновление, удаление) через IPROTO API. Настроить эту роль можно тремя способами:

  • через Lua API;
  • через CLI — с помощью прямого подключения к экземплярам роутеров и настройки нужных параметров crud;
  • с помощью кластерной конфигурации.

В примере ниже роль crud настроена с помощью кластерной конфигурации.

Добавление конфигурации в запущенный кластер

Есть два способа добавить конфигурацию в запущенный кластер:

  • через веб-интерфейс Tarantool DB;
  • через файл config.yml.

Веб-интерфейс

  1. В веб-интерфейсе Tarantool DB перейдите на вкладку Code.

  2. Создайте файл crud.yml. В нем будут храниться настройки роли crud.

  3. Укажите в файле конфигурацию ниже:

    ---stats: true...

    Здесь:

    • stats — включение сбора метрик CRUD.
  4. Нажмите кнопку Apply.

Локальная конфигурация кластера и экземпляра

Через веб-интерфейс можно менять состояние работы статистики и другие параметры в реальном времени без перезапуска кластера или экземпляров. Для этого поменяйте значение параметра и нажмите кнопку Apply.

Файл config.yaml

  1. Перейдите в директорию bootstrap. В ней хранится файл config.yaml.

  2. В config.yaml добавьте секцию crud со следующими настройками:

    crud:  stats: true
  3. Структура файла теперь выглядит так:

    Локальная конфигурация кластера и экземпляра

  4. Примените новую конфигурацию.