TDB Documentation portal logo
Помощь
Обновлена 30 июля 2026 г. в 16:49

Запуск кластеров Tarantool DataBase с TCF и настройка репликатора

В этом руководстве показано, как запустить два независимых кластера Tarantool DB в Docker в связке с Tarantool Clusters Federation (TCF) и настроить работу репликатора между кластерами.

Для работы Tarantool Clusters Federation необходимы:

  • активный кластер Tarantool DB — с него идет чтение реплицируемых данных;
  • пассивный кластер Tarantool DB — на него идет запись реплицируемых данных;
  • etcd — для восстановления после сбоя (failover) кластеров Tarantool DB;
  • репликатор Tarantool Clusters Federation — бинарные файлы tcf-destination и tcf-gateway. Инструкция о том, как получить эти файлы, приведена ниже, в секции Запуск стенда.

Содержание:

Пререквизиты

Для выполнения примера требуются:

  • установленный Docker-образ Tarantool DB;

  • архив для развёртывания TCF версии 0.9.0. Архив можно скачать в личном кабинете tarantool.io, в разделе tcf/release/;

  • приложение Docker compose;

  • исходные файлы примера tarantool_clusters_federation.

Запуск стенда

Перейдите в директорию с примером:

cd ./docs/docs/ru/assets/examples/tarantool_clusters_federation/

Загрузите в эту директорию архив для развёртывания TCF и распакуйте его в новой папке tcf_archive:

mkdir tcf_archivetar -xzvf tcf-<VERSION>.tar.gz --directory tcf_archive

Здесь:

  • VERSION — версия продукта.

Пример: tcf-0.9.0.tar.gz.

Создайте директорию bin и скопируйте в нее бинарные файлы tcf-destination и tcf-gateway из созданной директории tcf_archive:

mkdir bincp tcf_archive/tcf-destination bin && cp tcf_archive/tcf-gateway bin

Для запуска примера не требуются архив с TCF и другие файлы из директории tcf_archive, так что их можно удалить:

rm -r tcf_archiverm -r tcf-<VERSION>.tar.gz

Запустите кластер etcd:

docker compose -f docker-compose-etcd.yml up -d

Просмотреть логи можно с помощью следующей команды:

docker compose -f docker-compose-etcd.yml logs etcd1

Дождитесь в логах появления такого сообщения:

tarantool_cluster_federation-etcd1-1  | 2024-04-02 12:37:41.475318 I | etcdserver/api: enabled capabilities for version 3.5

После этого запустите кластеры Tarantool DB:

docker compose -f docker-compose-clusters.yml up --force-recreate -d

Дождитесь, пока поднимутся два кластера:

  • кластер А;
  • кластер B.

Запустите репликатор:

docker compose -f docker-compose-replicator.yml up --force-recreate -d --build

Запущенный стенд состоит из:

  • двух кластеров Tarantool DB,
  • кластера etcd из трех узлов;
  • сервиса репликатора Tarantool Clusters Federation.

На запущенном стенде настроена репликация из кластера А в кластер B. Настройки TCF доступны в веб-интерфейсе Tarantool DB по адресу http://localhost:8081 на вкладке TCF. Подробная информация о доступных опциях конфигурации TCF и настройке TCF через веб-интерфейс приведена в документации Tarantool Clusters Federation.

Репликация

Подключитесь к роутеру А, используя команду tt connect:

tt connect admin:cookie-A@localhost:3300

Запустите вставку данных с помощью следующей команды:

localhost:3300> box.schema.func.call('__start_data_stream')

После этого откройте веб-интерфейс Tarantool DB и перейдите на вкладку Space explorer. На этой вкладке вы увидите, как реплицируются данные из кластера A в кластер B.

Чтобы отключить запись данных, выполните следующую команду:

box.schema.func.call('__stop_data_stream')

Файлы конфигурации Tarantool Clusters Federation

Файлы конфигурации Tarantool Clusters Federation расположены в корневой директории примера tarantool_clusters_federation.

Кластер A

Конфигурация кластера приведена в файле ./bootstrap-A/config.yml:

cluster_federation:  cluster_1: cluster_a  cluster_2: cluster_b  replication_user: replicator  replication_password: SuPPerSECreT_PAssw0rd  status_ttl: 4  enable_system_check: true  failover_timeout: 20  health_check_delay: 3  max_suspect_counts: 3  initial_status: active  dml_users:    - db_user

Полный список поддерживаемых опций конфигурации кластера приведен в разделе Конфигурация кластера в YAML (Cartridge) в документации TCF.

Настроить кластер можно также в веб-интерфейсе Tarantool DB на вкладке TCF. Узнать больше: Конфигурация кластера в веб-интерфейсе (Cartridge).

Кластер B

Конфигурация кластера приведена в файле ./bootstrap-B/config.yml:

cluster_federation:  cluster_1: cluster_b  cluster_2: cluster_a  replication_user: replicator  replication_password: SuPPerSECreT_PAssw0rd  status_ttl: 4  enable_system_check: true  failover_timeout: 20  health_check_delay: 3  max_suspect_counts: 3  initial_status: passive  dml_users:    - db_user

Полный список опций конфигурации кластера приведен в разделе Конфигурация кластера в YAML (Cartridge) в документации TCF.

Настроить кластер можно также в веб-интерфейсе Tarantool DB на вкладке TCF. Узнать больше: Конфигурация кластера в веб-интерфейсе (Cartridge).

Репликация из A в B

Конфигурация для репликации из A в B приведена в файле ./config_repl_AB.yaml:

gateway:  grpc_server:    host: 0.0.0.0    port: 10080  replica_type: anonymous  max_cpu: 2  log_level: debug  log_type: plain # plain/json  log_path: gateway_AB.log,stdout  report_interval: 10  stream_instances:    - uri: tarantool-storage-A-1-1:3301      user: replicator      password: SuPPerSECreT_PAssw0rd    - uri: tarantool-storage-A-1-2:3301      user: replicator      password: SuPPerSECreT_PAssw0rd    - uri: tarantool-storage-A-2-1:3301      user: replicator      password: SuPPerSECreT_PAssw0rd    - uri: tarantool-storage-A-2-2:3301      user: replicator      password: SuPPerSECreT_PAssw0rddestination:  gateways:    - host: localhost      port: 10080  # size of every channel for replicaset events. Zero will make it unbuffered  buffer_size: 10000  log_type: plain # plain/json  log_level: debug  log_path: destination_AB.log,stdout  report_interval: 10  vshard_routers:    hosts:      - "tarantool-router-B:3301"    user: replicator    password: SuPPerSECreT_PAssw0rd  # Optional parameters  start_retry_delay: 200 #  milliseconds  max_retry_delay: 1500 # milliseconds  retry_attempts: 10 # milliseconds  max_cpu: 2

Полный список опций конфигурации для репликатора приведен в разделе Конфигурация репликаторов данных в документации TCF.

Репликация из B в A

Конфигурация для репликации из B в A приведена в файле ./config_repl_BA.yaml:

gateway:  grpc_server:    host: 0.0.0.0    port: 10180  replica_type: anonymous  max_cpu: 2  log_level: debug  log_type: plain # plain/json  log_path: gateway_BA.log,stdout  stream_instances:    - uri: tarantool-storage-B-1-1:3301      user: replicator      password: SuPPerSECreT_PAssw0rd    - uri: tarantool-storage-B-1-2:3301      user: replicator      password: SuPPerSECreT_PAssw0rd    - uri: tarantool-storage-B-2-1:3301      user: replicator      password: SuPPerSECreT_PAssw0rd    - uri: tarantool-storage-B-2-2:3301      user: replicator      password: SuPPerSECreT_PAssw0rddestination:  gateways:    - host: localhost      port: 10180  # size of every channel for replicaset events. Zero will make it unbuffered  buffer_size: 10000  log_type: plain # plain/json  log_level: debug  log_path: destination_BA.log,stdout  vshard_routers:    hosts:      - "tarantool-router-A:3301"    user: replicator    password: SuPPerSECreT_PAssw0rd  # Optional parameters  start_retry_delay: 200 #  milliseconds  max_retry_delay: 1500 # milliseconds  retry_attempts: 10 # milliseconds  max_cpu: 2

Полный список опций конфигурации для репликатора приведен в разделе Конфигурация репликаторов данных в документации TCF.

Отключение стенда

Чтобы отключить стенд, выполните следующие команды:

docker compose -f docker-compose-replicator.yml downdocker compose -f docker-compose-clusters.yml downdocker compose -f docker-compose-etcd.yml down