Локальная конфигурация кластера и экземпляра¶
Конфигурация кластера в 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.
Обновление конфигурации через веб-интерфейс¶
Чтобы обновить конфигурацию через веб-интерфейс, выполните следующие шаги:
В веб-интерфейсе перейдите на вкладку 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
Структура файла теперь выглядит так: