Настройка межкластерных репликаторов¶
В этом руководстве описано, как настроить репликаторы данных (компоненты 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.