Конфигурация кластера
Tarantool позволяет настроить полную топологию кластера, определить параметры для отдельных экземпляров и задать клиентский код миграций. Каждый экземпляр использует эту конфигурацию при запуске, чтобы организовать кластер. Конфигурация кластера определяет топологию кластера, восстановление после сбоев (failover), параметры шардирования, настройки модулей, настройки аутентификации, управление списками контроля доступа (ACL), а также настройки, заданные пользователем. В конфигурации также можно задать параметры для конкретного экземпляра, например настройки подключения, память, рабочие каталоги и параметры снимков данных (snapshots).
Доступны два способа хранения конфигурации:
- Централизованная конфигурация. Данные конфигурации хранятся в едином месте — в хранилище на базе etcd или Tarantool, все изменения конфигурации экземпляры кластера получают из этого централизованного хранилища;
- Локальная конфигурация в YAML-файле для каждого экземпляра в составе кластера. Такой способ предполагает, что все экземпляры кластера используют идентичные файлы конфигурации. Копия конфигурации хранится на каждом экземпляре кластера, а сам кластер автоматически синхронизирует эти копии.
Узнать больше о способах настройки конфигурации можно в документации Tarantool.
Содержание:
- Представление кластерной конфигурации
- Загрузка конфигурации кластера
- Пример работы с кластерной конфигурацией
Представить кластерную конфигурацию можно двумя способами:
-
Единый YAML-файл — заданные секции конфигурации собраны в одном файле
config.yml. Секции конфигурации представлены в виде соответствующих блоков внутри файла. Это представление конфигурации компактно, его удобно использовать для хранения и передачи данных. -
Несколько YAML-файлов — конфигурация разбита на несколько файлов. Вместе эти файлы составляют единую конфигурацию кластера. Этот подход можно использовать, чтобы организовать конфигурацию в большом кластере. В веб-интерфейсе TCM все файлы, которые формируют конфигурацию кластера, отображаются в списке на вкладке Configuration.
Пример единого файла конфигурации config.yml:
credentials:users:admin:password: 'secret-cluster-cookie'roles: [super]client:password: 'secret'roles: [super]replicator:password: 'secret'roles: [replication]storage:password: 'secret'roles: [sharding]iproto:advertise:peer:login: replicatorsharding:login: storagesharding:bucket_count: 30000roles_cfg:roles.metrics-export:http:- endpoints:- format: prometheuspath: /metricslisten: 8081groups:routers:replication:failover: manualsharding:roles: [router]roles:- roles.crud-router- roles.metrics-export- roles.dictionary-routerroles_cfg:roles.crud-router:stats: truestats_driver: metricsstats_quantiles: truestats_quantile_tolerated_error: 0.001stats_quantile_age_buckets_count: 5stats_quantile_max_age_time: 180replicasets:router-msk:leader: router-mskinstances:router-msk:iproto:listen:- uri: tarantool-router-msk:3301advertise:client: tarantool-router-msk:3301router-spb:leader: router-spbinstances:router-spb:iproto:listen:- uri: tarantool-router-spb:3301advertise:client: tarantool-router-spb:3301storages:replication:failover: electionsharding:roles: [storage]roles:- roles.crud-storage- roles.metrics-export- roles.dictionary-storageroles_cfg:roles.expirationd: [ ]replicasets:storage-1:instances:storage-1-msk:iproto:listen:- uri: tarantool-storage-1-msk:3301advertise:client: tarantool-storage-1-msk:3301storage-1-spb:iproto:listen:- uri: tarantool-storage-1-spb:3301advertise:client: tarantool-storage-1-spb:3301storage-1-brn:iproto:listen:- uri: tarantool-storage-1-brn:3301advertise:client: tarantool-storage-1-brn:3301storage-2:instances:storage-2-msk:iproto:listen:- uri: tarantool-storage-2-msk:3301advertise:client: tarantool-storage-2-msk:3301storage-2-spb:iproto:listen:- uri: tarantool-storage-2-spb:3301advertise:client: tarantool-storage-2-spb:3301storage-2-brn:iproto:listen:- uri: tarantool-storage-2-brn:3301advertise:client: tarantool-storage-2-brn:3301
Загрузить новую конфигурацию кластера или обновить уже существующую можно двумя способами:
Чтобы обновить конфигурацию через TCM, выполните следующие шаги:
- В TCM перейдите на вкладку Configuration.
- При необходимости скачайте текущую версию конфигурационного файла. Для этого выберите нужный файли и нажмите на кнопку Download в появившемся меню.
- Внесите необходимые изменения в конфигурационный файл.
- Чтобы сохранить черновик конфигурации без отправки в централизованное хранилище конфигурации, нажмите Save. Чтобы применить обновленный файл конфигурации и загрузить его в централизованное хранилище, нажмите Apply. Кластер проверяет изменения, отклоняя неприемлемые, а затем распространяет новую конфигурацию по всем узлам кластера. Если файл обновлен успешно, появится соответствующее сообщение в нижней части экрана. Если при попытке применить новые настройки возникла проблема, появится сообщение об ошибке.
Обновить конфигурацию через утилиту tt можно следующим образом:
-
Перейдите в директорию, где хранится файл конфигурации
config.yaml. -
Загрузите конфигурацию кластера в централизованное хранилище из YAML-файла, используя команду tt cluster publish:
tt cluster publish http://etcd1:2379/tdb config.ymlЗдесь:
http://etcd1:2379/tdb— адрес одного из узлов ETCD;config.yml— публикуемый файл конфигурации.
В конфигурации кластера можно хранить данные и параметры для конкретной роли.
Гибкость конфигурации кластера позволяет изменять систему под различные потребности, в том числе под требования конкретных ролей.
В примере добавлены роли crud, которые позволяют выполнять на кластере CRUD-операции
(создание, чтение, обновление, удаление) через IPROTO API.
Чтобы добавить роль crud в запущенный кластер через TCM:
-
В TCM перейдите на вкладку Configuration.
-
Создайте файл
crud.yml. В нем будут храниться настройки ролиcrud. -
Укажите в файле такую конфигурацию:
roles:- roles.crud-router- roles.crud-storageroles_cfg:roles.crud-router:crud:stats: truestats_driver: metricsstats_quantiles: falsestats_quantile_tolerated_error: 0.001stats_quantile_age_buckets_count: 5stats_quantile_max_age_time: 180Здесь:
- опция roles включает технологические роли
roles.crud-routerиroles.crud-storage; - опция roles_cfg задает конфигурацию ролей
crudдля роутера и хранилищ.
- опция roles включает технологические роли
Узнать больше: Включение и настройка ролей.
Подробное описание опций crud можно прочитать в справочнике конфигурации.
- Нажмите кнопку Apply.

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