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

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

Конфигурация кластера в 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: { ... }
...

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

admin-config-view.png

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

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

  • Lua API – обеспечивает программную гибкость и позволяет автоматизировать процесс;

  • HTTP API – позволяет удобно работать с кластером с помощью стандартных HTTP-запросов;

  • веб-интерфейс Tarantool DB.

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

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

  1. Приостановите любые DML-операции (insert, update, delete) во всех компонентах системы.

  2. Выполните масштабирование или инициируйте ребалансировку.

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

  4. На всех роутерах выполните сброс маршрутов:

    vshard.router._route_map_clear()
    
  5. Возобновите выполнение DML-операций.

После этого вы можете выполнить изменение конфигурации кластера.

Важно

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

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

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

  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, требующим аутентификации.

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

В примере добавлена роль 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.

crud-config-2.png

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

Файл config.yaml

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

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

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

    crud-config-1.png

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

Нашли ответ на свой вопрос?
Обратная связь