Локальная конфигурация кластера и экземпляра¶
Конфигурация кластера в 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.
Перед обновлением существующей конфигурации кластера, например, при добавлении новых наборов реплик или перераспределении данных между узлами, требуется выполнить несколько предварительных шагов. Эти шаги необходимы для обеспечения стабильной работы запросов к данным.
Перед изменением конфигурации кластера:
Приостановите любые DML-операции (insert, update, delete) во всех компонентах системы.
Выполните масштабирование или инициируйте ребалансировку.
Дождитесь полного завершения процесса миграции бакетов.
На всех роутерах выполните сброс маршрутов:
vshard.router._route_map_clear()
Возобновите выполнение DML-операций.
После этого вы можете выполнить изменение конфигурации кластера.
Важно
Несоблюдение этой последовательности шагов перед изменением конфигурации может привести к некорректной маршрутизации запросов, в том числе к дублированию записей, потерянным обновлениям или несогласованными данными между наборами реплик в процессе миграции бакетов.
Обновление конфигурации через веб-интерфейс¶
Чтобы обновить конфигурацию через веб-интерфейс, выполните следующие шаги:
В веб-интерфейсе перейдите на вкладку Configuration files.
При необходимости скачайте текущую версию конфигурационного файла, нажав на кнопку Download.
Внесите необходимые изменения в конфигурационный файл. Добавлять, изменять и удалять можно любые разделы, кроме системных (например,
topology
,vshard
,vshard_groups
).Нажмите кнопку 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
.
Веб-интерфейс
В веб-интерфейсе Tarantool DB перейдите на вкладку Code.
Создайте файл
crud.yml
. В нем будут храниться настройки ролиcrud
.Укажите в файле конфигурацию ниже:
--- stats: true ...
Здесь:
stats
– включение сбора метрик CRUD.
Нажмите кнопку Apply.
Через веб-интерфейс можно менять состояние работы статистики и другие параметры в реальном времени без перезапуска кластера или экземпляров. Для этого поменяйте значение параметра и нажмите кнопку Apply.
Файл config.yaml
Перейдите в директорию
bootstrap
. В ней хранится файлconfig.yaml
.В
config.yaml
добавьте секциюcrud
со следующими настройками:crud: stats: true
Структура файла теперь выглядит так: