Установка TCF вручную поверх кластеров Tarantool DB¶
Сценарий установки доступен начиная с версии Tarantool DB 2.2.0. Поддерживаемые операционные системы описаны в разделе Требования к инфраструктуре для TCF.
В этом руководстве приведена инструкция по ручной установке отказоустойчивой системы из двух кластеров Tarantool DB 2.х с использованием Tarantool Clusters Federation (TCF). В руководстве кластеры развернуты вручную с помощью консольной утилиты tt CLI. В качестве хранилища конфигурации и состояния кластеров используется хранилище на основе Tarantool (Tarantool-based configuration storage). Подробная информация по настройке среды TCF + TDB приведена в соответствующем разделе.
В инструкции для примера созданы два кластера – Tarantool Cluster 1 и Tarantool Cluster 2.
Во время прохождения руководства будут запущены:
хранилище конфигурации на основе Tarantool – для хранения состояния кластеров;
активный кластер Tarantool DB (Tarantool Cluster 1), состоящий из роутера и набора реплик, в котором 3 экземпляра хранилища;
пассивный кластер Tarantool DB (Tarantool Cluster 2), состоящий из роутера и набора реплик, в котором 3 экземпляра хранилища;
веб-интерфейс Tarantool Cluster Manager (TCM);
TCF Gateway – репликатор для отправки изменений с Tarantool Cluster 1 на Tarantool Cluster 2;
TCF Destination – репликатор для применения изменений, пришедших с Tarantool Cluster 1 на Tarantool Cluster 2.
Чтобы проверить, что данные успешно реплицируются с одного кластера на другой, в руководстве:
На каждом из кластеров создан спейс
writers
со следующим форматом:local space = box.schema.space.create('writers') space:format({ {name = 'id', type = 'number'}, {name = 'bucket_id', type = 'number'}, {name = 'name', type = 'string'}, {name = 'age', type = 'number'}, }) space:create_index('primary', {parts = {'id'}}) space:create_index('bucket_id', {parts = {'bucket_id'}}) helpers.register_sharding_key('writers', {'id'})
Эти спейсы созданы в Tarantool DB при первоначальной миграции – так называется изменение схемы базы данных и данных в ней, возникающее во время разработки. Чтобы межкластерная репликация работала корректно, спейсы, созданные в этих кластерах, должны быть идентичными.
Добавлены данные в спейс на одном кластере.
Проверено, что данные появились в спейсе на другом кластере.
Руководство включает следующие шаги:
Настройка и запуск репликации данных с активного кластера на пассивный
Проверка репликации с Tarantool Cluster 1 на Tarantool Cluster 2
Подготовка архивов для установки¶
Дистрибутивы TCF и Tarantool DB распространяются в виде TGZ-архивов.
Скачайте следующие файлы в личном кабинете на сайте tarantool.io
:
сборку TCF в разделе tcf/release. Архив имеет название вида
tcf-<tcf_version>.tar.gz
, где<tcf_version>
– версия TCF не ниже 0.5.0;сборку Tarantool DB в разделе tarantooldb/release/for_deploy/. Архив имеет название вида
tarantooldb-<tdb_version>.<os>.<arch>.tar.gz
, где<tdb_version>
– версия Tarantool DB не ниже 2.2.0.
Если у вас нет доступа к личному кабинету, свяжитесь с нами через форму обратной связи или напишите на sales@tarantool.io.
Для распаковки TGZ-архивов выполните следующие шаги:
Загрузите на сервер дистрибутив Tarantool DB.
Распакуйте архив с Tarantool DB. По умолчанию распаковка выполняется в директорию
tarantooldb
:$ tar -xzf tarantooldb-2.2.0.linux.x86_64.tar.gz
Добавьте директорию
tarantooldb
в список директорий переменнойPATH
:$ export PATH=~/tarantooldb:$PATH
Загрузите на сервер дистрибутив TCF.
Распакуйте архив с TCF. По умолчанию распаковка выполняется в текущую директорию:
$ tar -xzf tcf-0.9.0.tar.gz
Настройка хранилища состояния кластеров¶
Перед запуском и настройкой TCF необходимо настроить и запустить среду для хранения и управления конфигурацией TCF. В руководстве для этого используются экземпляры хранилища на основе Tarantool.
Перейдите в интерфейс командной строки, создайте директорию
config-env
для хранилища конфигурации TCF и создайте в ней новое окружение для консольной утилиты tt. Директорияconfig-env
должна быть создана в домашней директории на одном уровне с директориейtarantoodb
.$ mkdir config-env $ cd config-env/ $ tt init
Перейдите в директорию окружения
instances.enabled
, созданную автоматически при выполнении командыtt init
. Создайте внутри директориюconfigstorage
, а затем перейдите в нее.$ cd instances.enabled/ $ mkdir configstorage $ cd configstorage/
В директории
configstorage
подготовьте файлconfig.yaml
с конфигурацией хранилища конфигурации на основе Tarantool. Пример конфигурации для набора реплик с 3 экземплярами хранилища, экземпляры в этой конфигурации принимают входящие запросы на порты 3301–3303:replication: failover: election timeout: 10 synchro_timeout: 10 iproto: advertise: peer: login: replicator credentials: users: replicator: password: topsecret roles: [replication] dbadmin: password: secret roles: [super] tcm_config_storage: password: tcm_config_storage_password privileges: - permissions: [execute] universe: true - permissions: [read, write] spaces: [config_storage, config_storage_meta] tarantool_config_storage: password: tarantool_config_storage_password privileges: - permissions: [execute] universe: true - permissions: [read, write] spaces: [config_storage, config_storage_meta] database: use_mvcc_engine: true groups: storages: replicasets: replicaset001: roles: [config.storage] instances: instance001: iproto: listen: - uri: 127.0.0.1:3301 advertise: client: 127.0.0.1:3301 instance002: iproto: listen: - uri: 127.0.0.1:3302 advertise: client: 127.0.0.1:3302 instance003: iproto: listen: - uri: 127.0.0.1:3303 advertise: client: 127.0.0.1:3303
В файле конфигурации в секции
credentials.users
заданы следующие пользователи:replicator
– пользователь для соединения узлов хранилища конфигурации друг с другом;dbadmin
– администратор БД;tcm_config_storage
– пользователь для подключения TCM к узлам хранилища конфигурации;tarantool_config_storage
– пользователь для подключения экземпляров кластера к узлам хранилища конфигурации.
В директории
configstorage
подготовьте файлinstances.yaml
, содержащий список узлов (экземпляров хранилища). Для примера конфигурации выше список будет таким:instance001: instance002: instance003:
Запустите настроенное хранилище состояний:
$ tt start configstorage
Вывод результатов работы команды будет выглядеть следующим образом:
• Starting an instance [configstorage:instance001]... • Starting an instance [configstorage:instance002]... • Starting an instance [configstorage:instance003]...
Проверьте состояние запущенных узлов:
$ tt status configstorage INSTANCE STATUS PID MODE CONFIG BOX UPSTREAM configstorage:instance001 RUNNING 26302 RW ready running -- configstorage:instance002 RUNNING 26303 RO ready running -- configstorage:instance003 RUNNING 26304 RO ready running --
Указанные параметры для каждого узла должны иметь такие значения:
параметр
STATUS
–RUNNING
;параметр
CONFIG
–ready
;параметры
BOX
–running
.
tt status
позволяет определить, какой из запущенных экземпляров является master-узлом. В примере экземплярinstance001
работает в режимеRW
– чтения и записи (см. параметр узловMODE
). Это означает, чтоinstance001
является master-узлом.
Настройка и запуск кластеров¶
Создание приложения¶
Повторите следующие шаги:
Перейдите в директорию
tarantooldb
и выполните в ней команду tt init. Команда создаст окружениеtt
, в том числе файл конфигурацииtt.yaml
, который используется консольной утилитой tt CLI.В директории
instances.enabled
созданногоtt
-окружения создайте директории кластеров и назовите их следующим образом:
cluster_a
;cluster_b
.
В директории
instances.enabled/cluster_a
создайте файлconfig.yaml
. Этот файл содержит конфигурацию кластера Tarantool Cluster 1. Экземпляры в этой конфигурации принимают входящие запросы на порты 3304–3307:replication: failover: manual bootstrap_strategy: config iproto: advertise: peer: login: replicator sharding: login: storage credentials: users: dbadmin: password: secret roles: [super] replicator: password: replicator_password roles: - replication - dictionary_api_service tcm_tarantool: password: tcm_tarantool_password roles: [super] storage: password: storage_password roles: [sharding] privileges: - permissions: ['execute'] functions: ['box.info'] tcf_dml: password: secret roles: [super] roles_cfg: roles.tcf-coordinator: storage: config_storage storage_params: endpoints: - uri: 127.0.0.1:3301 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3302 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3303 login: tarantool_config_storage password: tarantool_config_storage_password roles.tcf-worker: cluster_1: cluster_a cluster_2: cluster_b initial_status: active dml_users: [ tcf_dml ] replication_user: tcf_replicator replication_password: secret storage: config_storage storage_params: endpoints: - uri: 127.0.0.1:3301 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3302 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3303 login: tarantool_config_storage password: tarantool_config_storage_password groups: routers: replicasets: rsrouter-a-001: leader: router-a-001 bootstrap_leader: router-a-001 instances: router-a-001: iproto: listen: - uri: 127.0.0.1:3307 advertise: client: 127.0.0.1:3307 roles_cfg: roles.httpd: default: listen: localhost:10001 sharding: roles: [router] roles: - roles.tcf-worker - roles.tcf-coordinator - roles.httpd - roles.crud-router - dictionary.roles.router roles_cfg: roles.crud-router: stats: true stats_driver: metrics stats_quantiles: true stats_quantile_tolerated_error: 0.001 stats_quantile_age_buckets_count: 5 stats_quantile_max_age_time: 180 storages: memtx: memory: 536870912 #512MiB replicasets: replicaset001: leader: storage-a-001 bootstrap_leader: storage-a-001 instances: storage-a-001: roles_cfg: roles.httpd: default: listen: localhost:10101 iproto: listen: - uri: 127.0.0.1:3304 advertise: client: 127.0.0.1:3304 storage-a-002: roles_cfg: roles.httpd: default: listen: localhost:10102 iproto: listen: - uri: 127.0.0.1:3305 advertise: client: 127.0.0.1:3305 storage-a-003: roles_cfg: roles.httpd: default: listen: localhost:10103 iproto: listen: - uri: 127.0.0.1:3306 advertise: client: 127.0.0.1:3306 sharding: roles: [storage] roles: - roles.tcf-worker - roles.httpd - roles.crud-storage - roles.expirationd - dictionary.roles.storage roles_cfg: roles.expirationd: []
В файле конфигурации в секции
credentials.users
заданы следующие пользователи:dbadmin
– администратор БД;replicator
– используется для соединения узлов кластера друг с другом;tcm_tarantool
– пользователь для подключения TCM к узлам кластера;storage
– пользователь используется при запросах роутера к экземплярам хранилища;tcf_replicator
– пользователь используется для репликации между кластерами;tcf_dml
– пользователь предназначен для выполнения DML-операций с данными от имени сервисных компонентов TCF.Note
Начиная с TCF 0.5.0, рекомендуется явно указывать роль
roles.httpd
в конфигурации кластера. При этом адрес для HTTP-запросов для конкретного экземпляра задается в секцииroles_cfg.roles.httpd.default.listen
. В версиях до 0.5.0 такой адрес указывается в секцииroles_cfg.roles.tcf-worker.http.listen
.
В директории
instances.enabled/cluster_a
создайте файлinstances.yaml
– список экземпляров, которые будут запущены в текущем окружении:router-a-001: storage-a-001: storage-a-002: storage-a-003:
В директории
instances.enabled/cluster_b
создайте файлconfig.yaml
с конфигурацией кластера Tarantool Cluster 2. Экземпляры в этой конфигурации принимают входящие запросы на порты 3324–3327:replication: failover: manual bootstrap_strategy: config iproto: advertise: peer: login: replicator sharding: login: storage credentials: users: dbadmin: password: secret roles: [super] replicator: password: replicator_password roles: - replication - dictionary_api_service tcm_tarantool: password: tcm_tarantool_password roles: [super] storage: password: storage_password roles: [sharding] privileges: - permissions: ['execute'] functions: ['box.info'] tcf_replicator: password: secret roles: [super] tcf_dml: password: secret roles: [super] roles_cfg: roles.tcf-coordinator: storage: config_storage storage_params: endpoints: - uri: 127.0.0.1:3301 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3302 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3303 login: tarantool_config_storage password: tarantool_config_storage_password roles.tcf-worker: cluster_1: cluster_b cluster_2: cluster_a initial_status: passive dml_users: [ tcf_dml ] replication_user: tcf_replicator replication_password: secret storage: config_storage storage_params: endpoints: - uri: 127.0.0.1:3301 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3302 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3303 login: tarantool_config_storage password: tarantool_config_storage_password groups: routers: replicasets: rsrouter-b-001: leader: router-b-001 bootstrap_leader: router-b-001 instances: router-b-001: roles_cfg: roles.httpd: default: listen: localhost:20001 iproto: listen: - uri: 127.0.0.1:3327 advertise: client: 127.0.0.1:3327 sharding: roles: [router] roles: - roles.tcf-worker - roles.tcf-coordinator - roles.httpd - roles.crud-router - dictionary.roles.router roles_cfg: roles.crud-router: stats: true stats_driver: metrics stats_quantiles: true stats_quantile_tolerated_error: 0.001 stats_quantile_age_buckets_count: 5 stats_quantile_max_age_time: 180 storages: memtx: memory: 536870912 #512MiB replicasets: replicaset001: leader: storage-b-001 bootstrap_leader: storage-b-001 instances: storage-b-001: roles_cfg: roles.httpd: default: listen: localhost:21101 iproto: listen: - uri: 127.0.0.1:3324 advertise: client: 127.0.0.1:3324 storage-b-002: roles_cfg: roles.httpd: default: listen: localhost:21102 iproto: listen: - uri: 127.0.0.1:3325 advertise: client: 127.0.0.1:3325 storage-b-003: roles_cfg: roles.httpd: default: listen: localhost:21103 iproto: listen: - uri: 127.0.0.1:3326 advertise: client: 127.0.0.1:3326 sharding: roles: [storage] roles: - roles.tcf-worker - roles.httpd - roles.crud-storage - roles.expirationd - dictionary.roles.storage roles_cfg: roles.expirationd: []
В директории
instances.enabled/cluster_b
создайте файлinstances.yaml
:router-b-001: storage-b-001: storage-b-002: storage-b-003:
В каждой из директорий
instances.enabled/cluster_a
иinstances.enabled/cluster_b
соответственно создайте директориюmigrations/scenario
. В этой директории создайте файл миграции001_migration.lua
:local helpers = require('tt-migrations.helpers') local function apply_scenario() local space = box.schema.space.create('writers') space:format({ {name = 'id', type = 'number'}, {name = 'bucket_id', type = 'number'}, {name = 'name', type = 'string'}, {name = 'age', type = 'number'}, }) space:create_index('primary', {parts = {'id'}}) space:create_index('bucket_id', {parts = {'bucket_id'}}) helpers.register_sharding_key('writers', {'id'}) end return { apply = { scenario = apply_scenario, }, }
В миграции создан шардированный спейс
writers
с ключом шардированияid
и первичным индексомprimary
.Перейдите в домашнюю директорию, где хранится директория
tarantooldb
. Скопируйте директорию с модулями.rocks
в директорииinstances.enabled/cluster_a
иinstances.enabled/cluster_b
:$ sudo cp -r tarantooldb/.rocks tarantooldb/instances.enabled/cluster_a $ sudo cp -r tarantooldb/.rocks tarantooldb/instances.enabled/cluster_b
Настройка и запуск Tarantool Cluster Manager¶
В качестве веб-интерфейса кластеров Tarantool DB используется Tarantool Cluster Manager, или TCM. Tarantool Cluster Manager – это инструмент для настройки и отслеживания кластеров Tarantool EE и управления ими. Подробная информация о TCM приведена в документации Tarantool.
Задать настройки для запуска TCM можно в файле конфигурации.
Для этого создайте файл tcm.yaml
в директории instances.enabled/cluster_a
:
mode: production
cluster:
connection-rate-limit: 512
tarantool-timeout: 10s
tarantool-ping-timeout: 5s
tt-command: tt
refresh-state-period: 5s
refresh-state-timeout: 4s
discovery-period: 4s
sharding-index: bucket_id
skew-time: 30s
security:
bootstrap-password: secret
http:
host: 127.0.0.1
port: 8080
show-stack-trace: False
trace: False
network: tcp
tls:
enabled: False
cert-file:
key-file:
server-name:
min-version: 0
max-version: 0
curve-preferences: []
cipher-suites: []
log:
default:
show-stack-trace: False
add-source: False
level: INFO
format: struct
output: stdout
file:
name: /var/log/tarantool/cluster-manager/tcm.log
maxsize: 1073741824
maxage: 0
maxbackups: 10
compress: True
storage:
provider: tarantool
tarantool:
username: tcm_config_storage
password: tcm_config_storage_password
addrs:
- 127.0.0.1:3301
- 127.0.0.1:3302
- 127.0.0.1:3303
addon:
enabled: False
addons-dir:
max-upload-size: 104857600
dev-addons-dir: []
limits:
users-count: 1000
clusters-count: 10
roles-count: 100
webhooks-count: 200
user-secrets-count: 10
user-websessions-count: 10
linked-cluster-users: 10
feature:
ttgraph: False
column-store: False
tqe: False
api-token: False
tcf: True
initial-settings:
clusters:
- name: Tarantool Cluster 1
id: 00000000-0000-0000-0000-000000000000
storage-connection:
provider: tarantool
tarantool-connection:
prefix: /default1
username: tcm_config_storage
password: tcm_config_storage_password
endpoints:
- 127.0.0.1:3301
- 127.0.0.1:3302
- 127.0.0.1:3303
tarantool-connection:
username: tcm_tarantool
password: tcm_tarantool_password
Здесь:
http
– имя и порт хоста, на котором запущен TCM. По умолчанию, TCM запускается на порту 8080;storage
– настройки хранилища конфигурации и его узлов, настроенных и запущенных ранее;security
– настройки безопасности TCM;initial-settings
– кластеры, которые создаются автоматически при первом запуске TCM. В конфигурации TCM автоматически создан кластер Tarantool Cluster 1. Второй кластер (Tarantool Cluster 2) будет создан позже вручную через веб-интерфейс TCM. Кластеры используют общее хранилище конфигурации, но имеют различные префиксы –/default1
и/default2
.
Полная информация об опциях конфигурации TCM приведена в документации TCM.
Чтобы запустить TCM с конфигурацией из файла,
Откройте новую вкладку терминала.
Перейдите в директорию
instances.enabled/cluster_a
.Выполните команду:
$ tcm -c tcm.yaml
См. также Начало работы с TCM.
Запуск активного кластера¶
Запустите активный кластер (Tarantool Cluster 1). Для этого:
Перейдите в директорию
tarantooldb
:$ cd tarantooldb
Загрузите конфигурацию кластера в централизованное хранилище из YAML-файла, используя команду tt cluster publish:
$ tt cluster publish http://dbadmin:secret@127.0.0.1:3301/default1 ./instances.enabled/cluster_a/config.yaml
Здесь:
http://dbadmin:secret@127.0.0.1:3301/default1
– адрес master-узла хранилища конфигурации, переданный вместе с именем и паролем администратора БД. Определить master-узел можно с помощью команды tt status configstorage – в примере это узелinstance001
, имеющий адрес127.0.0.1:3301
;./instances.enabled/cluster_a/config.yaml
– публикуемый файл конфигурации.
Запустите кластер:
$ tt start cluster_a
Проверьте статус кластера:
$ tt status cluster_a
Запустите модуль шардирования
vshard
:$ tt bootstrap vshard cluster_a
Загрузите миграции в кластер:
$ tt migrations publish http://dbadmin:secret@127.0.0.1:3301/default1 ./instances.enabled/cluster_a/migrations
Примените загруженные миграции:
$ tt migrations apply http://dbadmin:secret@127.0.0.1:3301/default1 --tarantool-username=admin --tarantool-password=secret
Запуск пассивного кластера¶
Запустите пассивный кластер (Tarantool Cluster 2). Для этого:
Перейдите в директорию
tarantooldb
:$ cd tarantooldb
Загрузите конфигурацию кластера в централизованное хранилище из YAML-файла, используя команду tt cluster publish:
$ tt cluster publish http://dbadmin:secret@127.0.0.1:3301/default2 ./instances.enabled/cluster_b/config.yaml
Здесь:
http://dbadmin:secret@http://127.0.0.1:3301/default2
– адрес master-узла хранилища конфигурации, переданный вместе с именем и паролем администратора БД. Определить master-узел можно с помощью команды tt status configstorage – в примере это узелinstance001
, имеющий адрес127.0.0.1:3301
;./instances.enabled/cluster_b/config.yaml
– публикуемый файл конфигурации.
Запустите кластер:
$ tt start cluster_b
Проверьте статус кластера:
$ tt status cluster_b
Запустите модуль шардирования
vshard
:$ tt bootstrap vshard cluster_b
Загрузите миграции в кластер:
$ tt migrations publish http://dbadmin:secret@127.0.0.1:3301/default2 ./instances.enabled/cluster_b/migrations
Примените загруженные миграции:
$ tt migrations apply http://dbadmin:secret@127.0.0.1:3301/default2 --tarantool-username=admin --tarantool-password=secret
Создание пассивного кластера в TCM¶
Перед запуском пассивного кластера необходимо создать этот кластер в TCM и настроить его конфигурацию. Для этого:
Для входа в TCM откройте в браузере адрес http://localhost:8080. Логин и пароль для входа:
Username:
admin
;Password:
secret
.
В TCM перейдите на вкладку Clusters и нажмите кнопку Add.
На первом экране настройки (General) введите имя нового кластера в поле Name. Имя кластера может быть любое, в примере используется имя
Tarantool Cluster 2
.
Перейдите во вкладку Config storage connection, нажав кнопку Next.
Во вкладке Config storage connection укажите следующие значения:
в поле Provider –
tarantool
;в поле Prefix –
/default2
;в поле Endpoints укажите узлы хранилища конфигурации:
127.0.0.1:3301 127.0.0.1:3302 127.0.0.1:3303
в поле Username –
tcm_config_storage
;в поле Password –
tcm_config_storage_password
.
Переключитесь на третий экран настройки (Tarantool connection), нажав кнопку Next.
На третьем экране настройки (Tarantool connection) укажите следующие значения:
в поле Username –
tcm_tarantool
;в поле Password –
tcm_tarantool_password
.
Нажмите кнопку Add, чтобы сохранить новые настройки кластера.
Проверка работы кластеров¶
Чтобы проверить состояние кластеров, выполните следующие шаги:
В TCM выберите нужный кластер (Tarantool Cluster 1 или Tarantool Cluster 2) над вкладкой Stateboard в выпадающем списке Clusters. Всё настроено правильно, если на вкладке Stateboard все узлы в кластере подсвечены зеленым цветом.
Чтобы проверить примененную миграцию, перейдите на вкладку Tuples. При успешной миграции в списке появится спейс
writers
.Чтобы проверить текущее состояние кластеров, перейдите на вкладку TCF. Видно, что Tarantool Cluster 1 перешел в активное состояние, а Tarantool Cluster 2 – в пассивное.
Note
В Tarantool DB вкладка TCF в TCM поддерживается начиная с версии Tarantool DB 2.1.0. В более ранних версиях Tarantool DB 2.x используйте для проверки состояния кластеров соответствующий HTTP GET-запрос. Пример использования такого запроса приведен в соответствующем разделе Руководства для начинающих.
Также проверьте с помощью команды tt connect, что пассивный кластер заблокирован для пользователя
tcf_dml
:$ tt connect 127.0.0.1:3327 -u tcf_dml -p secret • Connecting to the instance... ⨯ failed to run interactive console: failed to create new console: failed to connect: failed to authenticate: DML is blocked, cluster is passive (ClientError, code 0x1ff)
Настройка и запуск репликации данных с активного кластера на пассивный¶
Чтобы сконфигурировать репликаторы данных (компоненты Gateway и Destination) для репликации с кластера Tarantool Cluster 1 на кластер Tarantool Cluster 2, в директории с распакованным архивом TCF создайте файл
config_a_b.yaml
и вставьте следующую конфигурацию:gateway: grpc_server: host: 127.0.0.1 port: 10080 http_server: host: 127.0.0.1 port: 8000 replica_type: anonymous max_cpu: 4 stream_instances: - uri: 127.0.0.1:3304 user: tcf_replicator password: secret - uri: 127.0.0.1:3305 user: tcf_replicator password: secret - uri: 127.0.0.1:3306 user: tcf_replicator password: secret destination: metrics_enabled: true http_server: host: 127.0.0.1 port: 8001 gateways: - host: 127.0.0.1 port: 10080 buffer_size: 10000 vshard_routers: hosts: - 127.0.0.1:3327 user: tcf_replicator password: secret start_retry_delay: 200 max_retry_delay: 1500 retry_attempts: 10 max_cpu: 4
Подробная инструкция по настройке репликаторов данных приведена в разделе Настройка межкластерных репликаторов. Полный список опций конфигурации репликаторов можно найти в соответствующем разделе справочника.
Запустите TCF Gateway для отправки изменений с Tarantool Cluster 1 на Tarantool Cluster 2:
$ ./tcf-gateway --config config_a_b.yaml
Запустите TCF Destination для применения изменений, пришедших с Tarantool Cluster 1 на Tarantool Cluster 2:
$ ./tcf-destination --config config_a_b.yaml
Когда компонент TCF Destination будет готов к работе, вывод результатов работы команды может выглядеть так:
2025-02-27T17:43:38+03:00 INFO src/pkg/ttpusher/pusher.go:427 "CDC State successfully fetched" Pusher=General/Subscribe
Проверить статус TCF Gateway необходимо после запуска компонента Destination. Когда компонент Gateway готов к работе, вывод результатов работы команды может выглядеть так:
2025-02-27T17:42:53+03:00 INFO src/internal/gateway/server.go:512 Connected "Replica set"=e0f5488a-00c5-4c53-9b3a-ec052610357b Host=localhost:13303 From="&{VClock:[0 3117] OwnerID:0 ConfirmedVClock:[]}"
Проверка репликации с Tarantool Cluster 1 на Tarantool Cluster 2¶
Чтобы проверить успешную репликацию данных с Tarantool Cluster 1 на Tarantool Cluster 2:
В TCM над вкладкой Stateboard выберите кластер Tarantool Cluster 1 в выпадающем списке Clusters.
Подключитесь к узлу хранилища. Для этого нажмите на набор реплик
replicaset001
, выберите экземплярstorage-a-001
и в открывшемся окне перейдите на вкладку Terminal (TT Connect).Добавьте в созданный ранее спейс
writers
новый кортеж:crud.insert_object('writers', { id = 1, name = 'Haruki Murakami', age = 75 }, { noreturn = true })
Проверьте, что в спейсе появились данные. Для этого перейдите на вкладку Tuples и выберите в списке спейс
writers
. В открывшейся вкладке видно, что в спейс добавлен новый кортежHaruki Murakami
.Переключитесь на Tarantool Cluster 2 и перейдите на вкладку Tuples.
Выберите в списке спейс
writers
и проверьте, что в открывшейся вкладке также появился кортежHaruki Murakami
.