Запуск кластеров 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. Инструкция о том, как получить эти файлы, приведена ниже, в секции Запуск стенда.
Содержание:
- Пререквизиты
- Запуск стенда
- Репликация
- Файлы конфигурации Tarantool Clusters Federation
- Отключение стенда
Для выполнения примера требуются:
-
установленный 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
Дождитесь, пока поднимутся два кластера:
Запустите репликатор:
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.
Конфигурация кластера приведена в файле ./bootstrap-A/config.yml:
cluster_federation:cluster_1: cluster_acluster_2: cluster_breplication_user: replicatorreplication_password: SuPPerSECreT_PAssw0rdstatus_ttl: 4enable_system_check: truefailover_timeout: 20health_check_delay: 3max_suspect_counts: 3initial_status: activedml_users:- db_user
Полный список поддерживаемых опций конфигурации кластера приведен в разделе Конфигурация кластера в YAML (Cartridge) в документации TCF.
Настроить кластер можно также в веб-интерфейсе Tarantool DB на вкладке TCF. Узнать больше: Конфигурация кластера в веб-интерфейсе (Cartridge).
Конфигурация кластера приведена в файле ./bootstrap-B/config.yml:
cluster_federation:cluster_1: cluster_bcluster_2: cluster_areplication_user: replicatorreplication_password: SuPPerSECreT_PAssw0rdstatus_ttl: 4enable_system_check: truefailover_timeout: 20health_check_delay: 3max_suspect_counts: 3initial_status: passivedml_users:- db_user
Полный список опций конфигурации кластера приведен в разделе Конфигурация кластера в YAML (Cartridge) в документации TCF.
Настроить кластер можно также в веб-интерфейсе Tarantool DB на вкладке TCF. Узнать больше: Конфигурация кластера в веб-интерфейсе (Cartridge).
Конфигурация для репликации из A в B приведена в файле ./config_repl_AB.yaml:
gateway:grpc_server:host: 0.0.0.0port: 10080replica_type: anonymousmax_cpu: 2log_level: debuglog_type: plain # plain/jsonlog_path: gateway_AB.log,stdoutreport_interval: 10stream_instances:- uri: tarantool-storage-A-1-1:3301user: replicatorpassword: SuPPerSECreT_PAssw0rd- uri: tarantool-storage-A-1-2:3301user: replicatorpassword: SuPPerSECreT_PAssw0rd- uri: tarantool-storage-A-2-1:3301user: replicatorpassword: SuPPerSECreT_PAssw0rd- uri: tarantool-storage-A-2-2:3301user: replicatorpassword: SuPPerSECreT_PAssw0rddestination:gateways:- host: localhostport: 10080# size of every channel for replicaset events. Zero will make it unbufferedbuffer_size: 10000log_type: plain # plain/jsonlog_level: debuglog_path: destination_AB.log,stdoutreport_interval: 10vshard_routers:hosts:- "tarantool-router-B:3301"user: replicatorpassword: SuPPerSECreT_PAssw0rd# Optional parametersstart_retry_delay: 200 # millisecondsmax_retry_delay: 1500 # millisecondsretry_attempts: 10 # millisecondsmax_cpu: 2
Полный список опций конфигурации для репликатора приведен в разделе Конфигурация репликаторов данных в документации TCF.
Конфигурация для репликации из B в A приведена в файле ./config_repl_BA.yaml:
gateway:grpc_server:host: 0.0.0.0port: 10180replica_type: anonymousmax_cpu: 2log_level: debuglog_type: plain # plain/jsonlog_path: gateway_BA.log,stdoutstream_instances:- uri: tarantool-storage-B-1-1:3301user: replicatorpassword: SuPPerSECreT_PAssw0rd- uri: tarantool-storage-B-1-2:3301user: replicatorpassword: SuPPerSECreT_PAssw0rd- uri: tarantool-storage-B-2-1:3301user: replicatorpassword: SuPPerSECreT_PAssw0rd- uri: tarantool-storage-B-2-2:3301user: replicatorpassword: SuPPerSECreT_PAssw0rddestination:gateways:- host: localhostport: 10180# size of every channel for replicaset events. Zero will make it unbufferedbuffer_size: 10000log_type: plain # plain/jsonlog_level: debuglog_path: destination_BA.log,stdoutvshard_routers:hosts:- "tarantool-router-A:3301"user: replicatorpassword: SuPPerSECreT_PAssw0rd# Optional parametersstart_retry_delay: 200 # millisecondsmax_retry_delay: 1500 # millisecondsretry_attempts: 10 # millisecondsmax_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