Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Хранилище данных

Т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

Чтобы использовать кластер etcd в качестве хранилища данных TCM, задайте параметру storage.provider значение etcd и укажите параметры подключения в секции storage.etcd.*. Минимальная конфигурация etcd включает конечные точки хранилища:

storage:  provider: etcd  etcd:    endpoints:      - http://127.0.0.1:2379

Если в etcd включена аутентификация, укажите параметры storage.etcd.username и storage.etcd.password:

storage:  provider: etcd  etcd:    endpoints:      - http://127.0.0.1:2379    username: etcduser    password: secret

Данные TCM хранятся в etcd под префиксом, заданным в параметре storage.etcd.prefix. По умолчанию используется префикс /tcm. Чтобы изменить его или хранить данные разных экземпляров TCM раздельно в одном кластере etcd, задайте префикс явно:

storage:  provider: etcd  etcd:    endpoints:      - http://127.0.0.1:2379    prefix: /tcm2

Остальные параметры storage.etcd.* настраивают различные аспекты подключения к хранилищу etcd, такие как сетевые ограничения времени ожидания, ограничения и параметры TLS. Полный список параметров хранилища данных etcd для TCM см. в справочнике по настройке TCM.

Внешнее хранилище на базе Tarantool

Чтобы использовать кластер Tarantool в качестве хранилища данных TCM, задайте параметру storage.provider значение tarantool и укажите параметры подключения в секции storage.tarantool.*. Минимальная конфигурация включает один или несколько адресов экземпляров хранилища данных:

storage:  provider: tarantool  tarantool:    addr: http://127.0.0.1:3301

Или:

storage:  provider: tarantool  tarantool:    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: tarantool  tarantool:    addr: http://127.0.0.1:3301    username: tarantooluser    password: secret

Данные TCM хранятся в хранилище данных на базе Tarantool под префиксом, заданным в параметре storage.tarantool.prefix. По умолчанию используется префикс /tcm. Чтобы изменить его или хранить данные разных экземпляров TCM раздельно в одном кластере Tarantool, задайте префикс явно:

storage:  provider: tarantool  tarantool:    addr: http://127.0.0.1:3301    username: tarantooluser    password: secret    prefix: /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: tarantool  tarantool.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: etcd  etcd:    endpoints:      - http://127.0.0.1:2379      - http://127.0.0.1:22379      - http://127.0.0.1:32379    embed:      enabled: true      name: infra1      endpoints:        - http://127.0.0.1:2379      advertises:        - http://127.0.0.1:2379      initial-cluster-state: new      initial-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-1      peer-endpoints:        - http://127.0.0.1:12380      peer-advertises:        - http://127.0.0.1:12380      workdir: node1.etcd
  • Второй экземпляр:

    http:  port: 8081storage:  provider: etcd  etcd:    endpoints:      - http://127.0.0.1:2379      - http://127.0.0.1:22379      - http://127.0.0.1:32379    embed:      enabled: true      name: infra2      endpoints:        - http://127.0.0.1:22379      advertises:        - http://127.0.0.1:22379      initial-cluster-state: new      initial-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-1      peer-endpoints:        - http://127.0.0.1:22380      peer-advertises:        - http://127.0.0.1:22380      workdir: node2.etcd
  • Третий экземпляр:

    http:  port: 8082storage:  provider: etcd  etcd:    endpoints:      - http://127.0.0.1:2379      - http://127.0.0.1:22379      - http://127.0.0.1:32379    embed:      enabled: true      name: infra3      endpoints:        - http://127.0.0.1:32379      advertises:        - http://127.0.0.1:32379      initial-cluster-state: new      initial-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-1      peer-endpoints:        - http://127.0.0.1:32380      peer-advertises:        - http://127.0.0.1:32380      workdir: node3.etcd

Чтобы настроить кластер из встроенных хранилищ данных на базе Tarantool:

  1. Укажите конфигурацию кластера Tarantool в параметре storage.tarantool.embed.config (в виде обычного текста) или storage.tarantool.embed.config-file (в виде YAML-файла).
  2. Назначьте имя экземпляра из этой конфигурации каждому встроенному хранилищу с помощью параметра storage.tarantool.embed.args для каждого встроенного хранилища.

Ниже приведены примеры конфигураций трех экземпляров TCM, которые запускаются со встроенными хранилищами данных на базе Tarantool и формируют из них кластер:

  • Первый экземпляр:

    http:  port: 8080storage:  provider: tarantool  tarantool:    addrs:      - http://127.0.0.1:3301      - http://127.0.0.1:3302      - http://127.0.0.1:3303    embed:      enabled: true      executable: /path/to/execfile/tarantool-enterprise/tarantool      config-filename: config.yml      workdir: node1.tarantool      args:        - --name        - instance-001        - --config        - config.yml
  • Второй экземпляр:

    http:  port: 8081storage:  provider: tarantool  tarantool:    addrs:      - http://127.0.0.1:3301      - http://127.0.0.1:3302      - http://127.0.0.1:3303    embed:      enabled: true      executable: /path/to/execfile/tarantool-enterprise/tarantool      config-filename: config.yml      workdir: node2.tarantool      args:        - --name        - instance-002        - --config        - config.yml
  • Третий экземпляр:

    http:  port: 8082storage:  provider: tarantool  tarantool:    addrs:      - http://127.0.0.1:3301      - http://127.0.0.1:3302      - http://127.0.0.1:3303    embed:      enabled: true      executable: /path/to/execfile/tarantool-enterprise/tarantool      config-filename: config.yml      workdir: node3.tarantool      args:        - --name        - instance-003        - --config        - config.yml