Хранилище данных
Тarantool Cluster Manager использует базовое хранилище данных (backend store) для своих сущностей: пользователей, ролей, подключений к кластерам, конфигураций и других объектов, с которыми выполняются действия в TCM. В качестве хранилища данных может выступать кластер etcd или Tarantool.
Для повышения надежности и масштабируемости хранилище данных работает независимо от TCM. Например, это может быть тот же кластер etcd или Tarantool, который используется как централизованное хранилище конфигураций. Благодаря этому TCM работает без сохранения состояния: все объекты, созданные или измененные в его веб-интерфейсе, сохраняются в хранилище данных, а внутри самих экземпляров TCM ничего не хранится. Любое количество экземпляров TCM может работать с одним хранилищем данных, при этом они взаимозаменяемы.. При остановке всех экземпляров хранилище по-прежнему содержит их объекты. Работу с ними можно продолжить сразу после запуска нового экземпляра.
Помимо использования внешнего хранилища данных, TCM можно запустить со встроенным экземпляром etcd или Tarantool, который будет использоваться в качестве хранилища данных.
На этой странице описано, как подключить TCM к хранилищам данных обоих типов или запустить TCM со встроенным хранилищем данных.
Хранилище данных TCM требует такой же конфигурации, как и централизованное хранилище конфигураций Tarantool. Чтобы настроить хранилище данных, следуйте инструкциям в разделе Настройка хранилища конфигурации.
Подключение TCM к хранилищу данных настраивается с помощью параметров
конфигурации storage.*. Тип
хранилища задается параметром
storage.provider. Он
может принимать значения etcd или tarantool.
Чтобы использовать кластер etcd в качестве хранилища данных TCM, задайте параметру storage.provider значение etcd и
укажите параметры подключения в секции storage.etcd.*. Минимальная конфигурация etcd
включает конечные точки хранилища:
storage:provider: etcdetcd:endpoints:- http://127.0.0.1:2379
Если в etcd включена аутентификация, укажите параметры storage.etcd.username и storage.etcd.password:
storage:provider: etcdetcd:endpoints:- http://127.0.0.1:2379username: etcduserpassword: secret
Данные TCM хранятся в etcd под префиксом, заданным в параметре storage.etcd.prefix. По умолчанию используется
префикс /tcm. Чтобы изменить его или хранить данные разных экземпляров TCM раздельно в одном
кластере etcd, задайте префикс явно:
storage:provider: etcdetcd:endpoints:- http://127.0.0.1:2379prefix: /tcm2
Остальные параметры storage.etcd.* настраивают различные аспекты подключения к хранилищу etcd, такие как сетевые
ограничения времени ожидания, ограничения и параметры TLS. Полный список параметров хранилища данных etcd для TCM
см. в справочнике по
настройке TCM.
Чтобы использовать кластер Tarantool в качестве хранилища данных TCM, задайте параметру storage.provider значение tarantool и
укажите параметры подключения в секции storage.tarantool.*. Минимальная конфигурация включает один или несколько
адресов экземпляров хранилища данных:
storage:provider: tarantooltarantool:addr: http://127.0.0.1:3301
Или:
storage:provider: tarantooltarantool:addrs:- http://127.0.0.1:3301- http://127.0.0.1:3302- http://127.0.0.1:3303
Если в хранилище данных включена аутентификация, укажите параметры storage.tarantool.username и storage.tarantool.password:
storage:provider: tarantooltarantool:addr: http://127.0.0.1:3301username: tarantooluserpassword: secret
Данные TCM хранятся в хранилище данных на базе Tarantool под префиксом, заданным в параметре storage.tarantool.prefix.
По умолчанию используется префикс /tcm. Чтобы изменить его или хранить данные разных экземпляров TCM раздельно в одном
кластере Tarantool, задайте префикс явно:
storage:provider: tarantooltarantool:addr: http://127.0.0.1:3301username: tarantooluserpassword: secretprefix: /tcm2
Остальные параметры storage.tarantool.* настраивают различные аспекты подключения TCM к хранилищу данных на базе Tarantool,
такие как сетевые ограничения времени ожидания, ограничения и параметры TLS. Полный список параметров хранилища данных на базе Tarantool для
TCM см. в справочнике по настройке TCM.
При разработке TCM можно запустить со встроенным хранилищем данных. Это удобно для локального запуска, при котором внешнее хранилище данных отсутствует или не требуется.
Встроенное хранилище данных TCM – это отдельный экземпляр etcd или Tarantool, который запускается автоматически на том же хосте при запуске TCM. Он работает в фоновом режиме до остановки TCM. Встроенное хранилище данных персистентно: при повторном запуске TCM с той же конфигурацией хранилища данные TCM из предыдущих запусков восстанавливаются.
Встроенное хранилище данных настраивается с помощью параметров storage.etcd.embed.* для etcd или
storage.tarantool.embed.* для хранилища на базе Tarantool.
Чтобы запустить TCM со встроенным etcd с настройками по умолчанию, задайте параметру storage.etcd.embed.enabled значение true и
оставьте остальные параметры storage.* по умолчанию:
storage.etcd.embed.enabled: true
Чтобы запустить TCM со встроенным etcd без файла конфигурации, можно использовать команду:
$ tcm --storage.etcd.embed.enabled
Чтобы запустить TCM со встроенным хранилищем Tarantool с настройками по умолчанию:
- Задайте параметру
storage.providerзначениеtarantool. - Задайте параметру
storage.tarantool.embed.enabledзначениеtrue.
storage:provider: tarantooltarantool.embed.enabled: true
С аргументами командной строки:
$ tcm --storage.provider=tarantool --storage.tarantool.embed.enabled
Во встроенном хранилище данных можно включать и настраивать TLS, изменять рабочие каталоги или аргументы запуска. Чтобы
задать конкретные параметры, укажите их в секциях storage.etcd.embed.* или storage.tarantool.embed.*. Полный список
параметров конфигурации встроенных хранилищ данных см. в справочнике по
настройке TCM.
Для имитации рабочего окружения можно сформировать распределенный многоэкземплярный кластер из встроенных хранилищ нескольких экземпляров TCM. Для этого настройте объединение встроенных хранилищ экземпляров TCM в кластер.
Для etcd укажите параметры кластеризации встроенного хранилища storage.etcd.embed.* и конечные точки в параметре
storage.etcd.endpoints. Параметры, настраивающие встроенный etcd, в основном совпадают с параметрами конфигурации etcd.
Подробнее об этих параметрах см. в документации etcd.
Ниже приведены примеры конфигураций трех экземпляров TCM, которые запускаются со встроенными экземплярами etcd и формируют из них кластер etcd:
-
Первый экземпляр:
http:port: 8080storage:provider: etcdetcd:endpoints:- http://127.0.0.1:2379- http://127.0.0.1:22379- http://127.0.0.1:32379embed:enabled: truename: infra1endpoints:- http://127.0.0.1:2379advertises:- http://127.0.0.1:2379initial-cluster-state: newinitial-cluster: "infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380"initial-cluster-token: etcd-cluster-1peer-endpoints:- http://127.0.0.1:12380peer-advertises:- http://127.0.0.1:12380workdir: node1.etcd -
Второй экземпляр:
http:port: 8081storage:provider: etcdetcd:endpoints:- http://127.0.0.1:2379- http://127.0.0.1:22379- http://127.0.0.1:32379embed:enabled: truename: infra2endpoints:- http://127.0.0.1:22379advertises:- http://127.0.0.1:22379initial-cluster-state: newinitial-cluster: "infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380"initial-cluster-token: etcd-cluster-1peer-endpoints:- http://127.0.0.1:22380peer-advertises:- http://127.0.0.1:22380workdir: node2.etcd -
Третий экземпляр:
http:port: 8082storage:provider: etcdetcd:endpoints:- http://127.0.0.1:2379- http://127.0.0.1:22379- http://127.0.0.1:32379embed:enabled: truename: infra3endpoints:- http://127.0.0.1:32379advertises:- http://127.0.0.1:32379initial-cluster-state: newinitial-cluster: "infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380"initial-cluster-token: etcd-cluster-1peer-endpoints:- http://127.0.0.1:32380peer-advertises:- http://127.0.0.1:32380workdir: node3.etcd
Чтобы настроить кластер из встроенных хранилищ данных на базе Tarantool:
- Укажите конфигурацию кластера Tarantool в параметре
storage.tarantool.embed.config(в виде обычного текста) илиstorage.tarantool.embed.config-file(в виде YAML-файла). - Назначьте имя экземпляра из этой конфигурации каждому встроенному хранилищу с помощью параметра
storage.tarantool.embed.argsдля каждого встроенного хранилища.
Ниже приведены примеры конфигураций трех экземпляров TCM, которые запускаются со встроенными хранилищами данных на базе Tarantool и формируют из них кластер:
-
Первый экземпляр:
http:port: 8080storage:provider: tarantooltarantool:addrs:- http://127.0.0.1:3301- http://127.0.0.1:3302- http://127.0.0.1:3303embed:enabled: trueexecutable: /path/to/execfile/tarantool-enterprise/tarantoolconfig-filename: config.ymlworkdir: node1.tarantoolargs:- --name- instance-001- --config- config.yml -
Второй экземпляр:
http:port: 8081storage:provider: tarantooltarantool:addrs:- http://127.0.0.1:3301- http://127.0.0.1:3302- http://127.0.0.1:3303embed:enabled: trueexecutable: /path/to/execfile/tarantool-enterprise/tarantoolconfig-filename: config.ymlworkdir: node2.tarantoolargs:- --name- instance-002- --config- config.yml -
Третий экземпляр:
http:port: 8082storage:provider: tarantooltarantool:addrs:- http://127.0.0.1:3301- http://127.0.0.1:3302- http://127.0.0.1:3303embed:enabled: trueexecutable: /path/to/execfile/tarantool-enterprise/tarantoolconfig-filename: config.ymlworkdir: node3.tarantoolargs:- --name- instance-003- --config- config.yml