Настройка межкластерных репликаторов¶
В этом руководстве описано, как настроить репликаторы данных (компоненты Gateway/Destination) между двумя кластерами (Tarantool Cluster 1 и Tarantool Cluster 2).
Параметры Gateway и Destination задаются в файлах конфигурации YAML. Для каждого направления межкластерной репликации – из Tarantool Cluster 1 в Tarantool Cluster 2, из Tarantool Cluster 2 в Tarantool Cluster 1 – используется отдельный файл конфигурации. Полный список опций конфигурации репликаторов данных можно найти в разделе Конфигурация репликаторов данных.
Перед настройкой межкластерных репликаторов данных требуется подготовить:
Содержание:
Конфигурация файла для репликации данных с Tarantool Cluster 1 на Tarantool Cluster 2
Конфигурация файла для репликации данных с Tarantool Cluster 2 на Tarantool Cluster 1
Запуск репликатора Tarantool Cluster 1 -> Tarantool Cluster 2
Проверка репликации с Tarantool Cluster 1 на Tarantool Cluster 2
Запуск репликатора Tarantool Cluster 2 -> Tarantool Cluster 1
Проверка репликации с Tarantool Cluster 2 на Tarantool Cluster 1
Конфигурация файла для репликации данных с Tarantool Cluster 1 на Tarantool Cluster 2¶
Чтобы сконфигурировать репликаторы, создайте файл config_a_b.yaml
в домашней директории.
Укажите, что TCF Gateway будет инициировать репликацию:
gateway: grpc_server: host: 127.0.0.1 port: 10080 http_server: host: 127.0.0.1 port: 8001 metrics_enabled: true replica_type: anonymous
gateway
– основной блок настроек репликации;grpc_server
– адрес и порт gRPC-сервера, который управляет репликацией;host
– IP-адрес gRPC-сервера;port
– порт, на котором работает gRPC-сервер;http_server
– адрес, на котором запускается HTTP-сервер;metrics_enabled
– метрики Gateway. Для получения значений метрик используйте HTTP-endpoint /metrics;replica_type
– тип репликации. Типanonymous
означает, что этот узел будет только получать данные без записи своего идентификатора в исходный кластер.
Перечислите узлы типа
storage
для шардированного хранилища, с которых Gateway будет забирать информацию:gateway: 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
stream_instances
– список экземпляров-источников данных в Tarantool Cluster 1. Здесь репликация данных идет с трех экземпляров Tarantool Cluster 2;uri
– адреса экземпляров кластера, с которых Gateway забирает данные. Первый узел в списке, с которого Gateway получает поток данных, использует порт3304
;user
– имя пользователя для подключения к экземпляру кластера;password
– пароль для подключения к экземпляру кластера.
В секции
destination.gateways
укажите адрес и порт gRPC-сервера, который управляет репликацией:destination: metrics_enabled: true http_server: host: 127.0.0.1 port: 8002 gateways: - host: 127.0.0.1 port: 10080
destination
– целевой кластер, в который реплицируются данные;gateways
– список шлюзов, через которые передаются данные;host
– gRPC-сервер, с которого Destination получает данные;port
– порт, на котором работает gRPC-сервер;http_server
– адрес, на котором запускается HTTP-сервер;metrics_enabled
– метрики Gateway. Для получения значений метрик используйте HTTP-endpoint /metrics;replica_type
– тип репликации. Типanonymous
означает, что этот узел будет только получать данные без записи своего идентификатора в исходный кластер.
Определите, что конечный пункт репликации – Tarantool Cluster 2. Укажите узлы типа
router
, с которых TCF Destination получает информацию о составе кластера:destination: vshard_routers: hosts: - "127.0.0.1:3327" user: tcf_replicator password: secret
vshard_routers
– список экземпляров типаrouter
в Tarantool Cluster 2;hosts
– адреса узлов, которые работают как маршрутизаторы;user
– учетная запись для записи данных в Tarantool Cluster 2;password
– пароль для аутентификации.
В результате получится конфигурационный файл для передачи данных с Tarantool Cluster 1 на Tarantool Cluster 2:
gateway:
grpc_server:
host: 127.0.0.1
port: 10080
http_server:
host: 127.0.0.1
port: 8001
metrics_enabled: true
max_cpu: 4
replica_type: anonymous
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:
gateways:
- host: 127.0.0.1
port: 10080
http_server:
host: 127.0.0.1
port: 8002
metrics_enabled: true
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
Конфигурация файла для репликации данных с Tarantool Cluster 2 на Tarantool Cluster 1¶
Чтобы сконфигурировать репликаторы, создайте файл config_b_a.yaml
в домашней директории.
Этот файл аналогичен ранее созданному файлу config_a_b.yaml
, но выполняет обратную задачу – репликацию данных из Tarantool Cluster 2 в Tarantool Cluster 1.
Укажите, что TCF Gateway будет инициировать репликацию:
gateway: grpc_server: host: 127.0.0.1 port: 10180 http_server: host: 127.0.0.1 port: 8003 metrics_enabled: true
Перечислите узлы типа
storage
для шардированного хранилища, с которых Gateway будет забирать информацию:gateway: stream_instances: - uri: 127.0.0.1:3324 user: tcf_replicator password: secret - uri: 127.0.0.1:3325 user: tcf_replicator password: secret - uri: 127.0.0.1:3326 user: tcf_replicator password: secret
В секции
destination.gateways
укажите адрес и порт gRPC-сервера, который управляет репликацией:destination: gateways: - host: 127.0.0.1 port: 10180 http_server: host: 127.0.0.1 port: 8004 metrics_enabled: true
Определите, что конечный пункт репликации – Tarantool Cluster 1. Укажите узлы типа
router
, с которых TCF Destination получает информацию о составе кластера:destination: vshard_routers: hosts: - "127.0.0.1:3307" user: tcf_replicator password: secret
В результате получится конфигурационный файл для передачи данных с Tarantool Cluster 2 на Tarantool Cluster 1:
gateway:
grpc_server:
host: 127.0.0.1
port: 10180
http_server:
host: 127.0.0.1
port: 8003
metrics_enabled: true
replica_type: anonymous
max_cpu: 4
stream_instances:
- uri: 127.0.0.1:3324
user: tcf_replicator
password: secret
- uri: 127.0.0.1:3325
user: tcf_replicator
password: secret
- uri: 127.0.0.1:3326
user: tcf_replicator
password: secret
destination:
gateways:
- host: 127.0.0.1
port: 10180
http_server:
host: 127.0.0.1
port: 8004
metrics_enabled: true
buffer_size: 10000
vshard_routers:
hosts:
- "127.0.0.1:3307"
user: tcf_replicator
password: secret
start_retry_delay: 200
max_retry_delay: 1500
retry_attempts: 10
max_cpu: 4
Запуск репликатора Tarantool Cluster 1 -> Tarantool Cluster 2¶
Запустите 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 From="&{VClock:[0 3117] OwnerID:0 ConfirmedVClock:[]}"
Проверка репликации с Tarantool Cluster 1 на Tarantool Cluster 2¶
Перед проверкой репликации убедитесь, что ранее был создан файл с миграцией 001_migration.lua
из шага 9 раздела Создание кластеров.
Чтобы проверить успешную репликацию данных с Tarantool Cluster 1 на Tarantool Cluster 2:
В TCM над вкладкой Stateboard выберите кластер Tarantool Cluster 1 в выпадающем списке Clusters.
Подключитесь к узлу хранилища. Для этого нажмите на набор реплик
replicaset001
, выберите экземплярinstance004
и в открывшемся окне перейдите на вкладку 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
.
Смена состояния кластеров¶
Чтобы проверить репликацию с Tarantool Cluster 2 на Tarantool Cluster 1, необходимо переключить состояние кластеров и сделать Tarantool Cluster 2 активным. Подробнее про смену состояния кластеров читайте в соответствующем разделе.
Получите состояние Tarantool Cluster 1:
$ curl -X GET --location "http://127.0.0.1:10080/tcf/status" active
Переключите состояние кластеров на противоположные. Для этого отправьте POST-запрос на адрес обработчика запроса вида
/tcf/toggle
:$ curl -X POST --location "http://127.0.0.1:10080/tcf/toggle"
Проверьте состояние Tarantool Cluster 1:
$ curl -X GET --location "http://127.0.0.1:10080/tcf/status" passive
Проверьте состояние Tarantool Cluster 2:
$ curl -X GET --location "http://127.0.0.1:10180/tcf/status" active
Запуск репликатора Tarantool Cluster 2 -> Tarantool Cluster 1¶
Запустите TCF Gateway для отправки изменений с Tarantool Cluster 2 на Tarantool Cluster 1:
$ ./tcf-gateway --config config_b_a.yaml
Запустите TCF Destination для применения изменений, пришедших с Tarantool Cluster 2 на Tarantool Cluster 1:
$ ./tcf-destination --config config_b_a.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 2 на Tarantool Cluster 1¶
В TCM над вкладкой Stateboard выберите кластер Tarantool Cluster 2 в выпадающем списке Clusters.
Подключитесь к узлу хранилища. Для этого нажмите на набор реплик
replicaset001
, выберите экземплярstorage-b-001
и в открывшемся окне перейдите на вкладку Terminal (TT Connect).Во вкладке Terminal добавьте в спейс новый кортеж:
crud.insert_object('writers', { id = 2, name = 'Eiji Mikage', age = 41 }, { noreturn = true })
Проверьте, что в спейсе появились данные. Для этого перейдите на вкладку Tuples и выберите в списке спейс
writers
. В открывшейся вкладке видно, что в спейс добавлен новый кортежEiji Mikage
.Переключитесь на Tarantool Cluster 1 и перейдите на вкладку Tuples.
Выберите в списке спейс
writers
и проверьте, что в открывшейся вкладке также появился кортежEiji Mikage
.