Настройка межкластерных репликаторов | Clusters_Federation
Руководство по эксплуатации Настройка среды TCF + TDB Настройка межкластерных репликаторов

Настройка межкластерных репликаторов

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

Чтобы сконфигурировать репликаторы, создайте файл config_a_b.yaml в домашней директории.

  1. Укажите, что 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 означает, что этот узел будет только получать данные без записи своего идентификатора в исходный кластер.

  2. Перечислите узлы типа 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 – пароль для подключения к экземпляру кластера.

  3. В секции 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 означает, что этот узел будет только получать данные без записи своего идентификатора в исходный кластер.

  4. Определите, что конечный пункт репликации – 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.

  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
    
  2. Перечислите узлы типа 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
    
  3. В секции destination.gateways укажите адрес и порт gRPC-сервера, который управляет репликацией:

     destination:
       gateways:
         - host: 127.0.0.1
           port: 10180
       http_server:
         host: 127.0.0.1
         port: 8004
       metrics_enabled: true
    
  4. Определите, что конечный пункт репликации – 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

  1. Запустите TCF Gateway для отправки изменений с Tarantool Cluster 1 на Tarantool Cluster 2:

    $ ./tcf-gateway --config config_a_b.yaml
    
  2. Запустите 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
    
  3. Проверить статус 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:

  1. В TCM над вкладкой Stateboard выберите кластер Tarantool Cluster 1 в выпадающем списке Clusters.

  2. Подключитесь к узлу хранилища. Для этого нажмите на набор реплик replicaset001, выберите экземпляр instance004 и в открывшемся окне перейдите на вкладку Terminal (TT Connect).

  3. Добавьте в созданный ранее спейс writers новый кортеж:

    crud.insert_object('writers', {
        id = 1,
        name = 'Haruki Murakami',
        age = 75
    }, {
        noreturn = true
    })
    
  4. Проверьте, что в спейсе появились данные. Для этого перейдите на вкладку Tuples и выберите в списке спейс writers. В открывшейся вкладке видно, что в спейс добавлен новый кортеж Haruki Murakami.

  5. Переключитесь на Tarantool Cluster 2 и перейдите на вкладку Tuples.

  6. Выберите в списке спейс writers и проверьте, что в открывшейся вкладке также появился кортеж Haruki Murakami.

Смена состояния кластеров

Чтобы проверить репликацию с Tarantool Cluster 2 на Tarantool Cluster 1, необходимо переключить состояние кластеров и сделать Tarantool Cluster 2 активным. Подробнее про смену состояния кластеров читайте в соответствующем разделе.

  1. Получите состояние Tarantool Cluster 1:

    $ curl -X GET --location "http://127.0.0.1:10080/tcf/status"   
    active
    
  2. Переключите состояние кластеров на противоположные. Для этого отправьте POST-запрос на адрес обработчика запроса вида /tcf/toggle:

    $ curl -X POST --location "http://127.0.0.1:10080/tcf/toggle"
    
  3. Проверьте состояние Tarantool Cluster 1:

    $ curl -X GET --location "http://127.0.0.1:10080/tcf/status"   
    passive
    
  4. Проверьте состояние Tarantool Cluster 2:

    $ curl -X GET --location "http://127.0.0.1:10180/tcf/status"   
    active
    

Запуск репликатора Tarantool Cluster 2 -> Tarantool Cluster 1

  1. Запустите TCF Gateway для отправки изменений с Tarantool Cluster 2 на Tarantool Cluster 1:

    $ ./tcf-gateway --config config_b_a.yaml
    
  2. Запустите 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
    
  3. Проверить статус 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

  1. В TCM над вкладкой Stateboard выберите кластер Tarantool Cluster 2 в выпадающем списке Clusters.

  2. Подключитесь к узлу хранилища. Для этого нажмите на набор реплик replicaset001, выберите экземпляр storage-b-001 и в открывшемся окне перейдите на вкладку Terminal (TT Connect).

  3. Во вкладке Terminal добавьте в спейс новый кортеж:

     crud.insert_object('writers', {
         id = 2,
         name = 'Eiji Mikage',
         age = 41
     }, {
         noreturn = true
     })
    
  4. Проверьте, что в спейсе появились данные. Для этого перейдите на вкладку Tuples и выберите в списке спейс writers. В открывшейся вкладке видно, что в спейс добавлен новый кортеж Eiji Mikage.

  5. Переключитесь на Tarantool Cluster 1 и перейдите на вкладку Tuples.

  6. Выберите в списке спейс writers и проверьте, что в открывшейся вкладке также появился кортеж Eiji Mikage.

Found what you were looking for?
Feedback