Руководство для начинающих¶
В этом руководстве приведена инструкция по ручному разворачиванию отказоустойчивой системы из двух кластеров Tarantool DB 2.х с использованием Tarantool Clusters Federation (TCF). Узнать больше об архитектуре и элементах TCF вы можете на странице Архитектура.
В руководстве кластеры развернуты вручную с помощью утилиты tt CLI. Пример запуска кластеров Tarantool DB с TCF через Docker Compose можно найти в документации Tarantool DB.
Руководство включает следующие шаги:
Подготовка виртуальных машин¶
Для прохождения руководства необходимо подготовить две виртуальные машины, которые могут взаимодействовать между собой по сети. Поддерживаемые операционные системы описаны в разделе Требования к инфраструктуре для TCF.
Предположим, что виртуальные машины имеют следующие IP-адреса:
192.168.64.9
На этой виртуальной машине будут запущены:
активный кластер Tarantool DB (Cluster A), состоящий из 2 роутеров и 2 наборов реплик по 2 хранилища;
TCF Gateway – для отправки изменений с Cluster A на Cluster B;
TCF Destination – для применения изменений, пришедших с Cluster B на Cluster A;
1 узел etcd – для хранения состояния кластеров;
веб-интерфейс Tarantool Cluster Manager (TCM).
192.168.64.12
На этой виртуальной машине будут запущены:
пассивный кластер Tarantool DB (Cluster B), состоящий из 2 роутеров и 3 наборов реплик по 2 хранилища;
TCF Gateway – для отправки изменений с Cluster B на Cluster A;
TCF Destination – для применения изменений, пришедших с Cluster A на Cluster B.
Установка и запуск etcd¶
В этом руководстве etcd запускается только на первой виртуальной машине (192.168.64.9
).
Поэтому перед разворачиванием кластеров Tarantool DB и TCF установите etcd на эту машину.
Перед запуском и настройкой кластеров запустите etcd на первой виртуальной машине с флагами
–listen-client-urls
и -advertise-client-urls
:
$ etcd --listen-client-urls http://192.168.64.9:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://192.168.64.9:2379
Скачивание архивов для развертывания¶
TCF и Tarantool DB распространяются в виде TGZ-архивов. Скачайте следующие файлы в личном кабинете tarantool.io:
сборку TCF в разделе tcf/release. Архив имеет название вида
tcf-<tcf_version>.tar.gz
, где<tcf_version>
– версия TCF не ниже 0.3.0;сборку Tarantool DB в разделе tarantooldb/release/for_deploy/. Архив имеет название вида
tarantooldb-<tdb_version>.<os>.<arch>.tar.gz
, где<tdb_version>
– версия Tarantool DB не ниже 2.0.0.
Если у вас нет доступа к личному кабинету, свяжитесь с нами через форму обратной связи или напишите на sales@tarantool.io.
Настройка и запуск кластеров¶
Подготовка архивов для развертывания¶
На каждой из виртуальных машин повторите следующие шаги:
Скопируйте архив
tarantooldb-<tdb_version>.<os>.<arch>.tar.gz
в домашнюю директорию и распакуйте его:$ tar -xzf tarantooldb-2.0.0.linux.x86_64.tar.gz
Добавьте директорию
tarantooldb
в список директорий переменнойPATH
:$ export PATH=~/tarantooldb:$PATH
Скопируйте архив
tcf-<tcf_version>.tar.gz
в домашнюю директорию и распакуйте его:$ tar -xzf tcf-0.3.0.tar.gz
Создание приложения¶
На каждой из виртуальных машин повторите следующие шаги:
На каждой из виртуальных машин перейдите в директорию
tarantooldb
и выполните в ней команду tt init. Команда создаст окружениеtt
, в том числе файл конфигурацииtt.yaml
, который используется утилитой tt CLI.В директории
instances.enabled
созданногоtt
-окружения создайте директорию приложения и назовите ее следующим образом:cluster_a
– на первой виртуальной машине (192.168.64.9
);cluster_b
– на второй виртуальной машине (192.168.64.12
).
В директории
instances.enabled/cluster_a
на первой виртуальной машине (192.168.64.9
) создайте файлconfig.yml
. Этот файл содержит конфигурацию кластера A. Экземпляры в этой конфигурации принимают входящие запросы на порты 3301–3306:credentials: users: admin: password: 'secret-cluster-cookie' roles: [ super, sharding ] tcf-replicator: password: secret roles: [ super ] tcf-dml: password: secret roles: [ super ] iproto: advertise: peer: login: admin sharding: login: admin sharding: bucket_count: 3000 groups: routers: replication: failover: manual sharding: roles: [ router ] roles: [ roles.tcf-worker, roles.tcf-coordinator, roles.crud-router ] replicasets: router-msk: leader: router-msk instances: router-msk: roles_cfg: 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: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 http: listen: localhost:8081 roles.tcf-coordinator: storage: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 iproto: listen: - uri: localhost:3301 - uri: 192.168.64.9:3301 advertise: client: 192.168.64.9:3301 router-spb: leader: router-spb instances: router-spb: roles_cfg: 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: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 http: listen: localhost:8082 roles.tcf-coordinator: storage: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 iproto: listen: - uri: localhost:3302 - uri: 192.168.64.9:3302 advertise: client: 192.168.64.9:3302 storages: replication: failover: manual sharding: roles: [ storage ] roles: [ roles.crud-storage, roles.tcf-worker ] replicasets: storage-1: leader: storage-1-msk instances: storage-1-msk: roles_cfg: 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: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 http: listen: localhost:8083 iproto: listen: - uri: localhost:3303 - uri: 192.168.64.9:3303 advertise: client: 192.168.64.9:3303 storage-1-spb: roles_cfg: 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: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 http: listen: localhost:8084 iproto: listen: - uri: localhost:3304 - uri: 192.168.64.9:3304 advertise: client: 192.168.64.9:3304 storage-2: leader: storage-2-msk instances: storage-2-msk: roles_cfg: 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: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 http: listen: localhost:8085 iproto: listen: - uri: localhost:3305 - uri: 192.168.64.9:3305 advertise: client: 192.168.64.9:3305 storage-2-spb: roles_cfg: 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: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 http: listen: localhost:8086 iproto: listen: - uri: localhost:3306 - uri: 192.168.64.9:3306 advertise: client: 192.168.64.9:3306
В директории
instances.enabled/cluster_a
на первой виртуальной машине (192.168.64.9
) создайте файлinstances.yml
– список экземпляров, которые будут запущены в текущем окружении:router-msk: router-spb: storage-1-msk: storage-1-spb: storage-2-msk: storage-2-spb:
В директории
instances.enabled/cluster_b
на второй виртуальной машине (192.168.64.12
) создайте файлconfig.yml
с конфигурацией кластера B. Экземпляры в этой конфигурации принимают входящие запросы на порты 3301–3308:credentials: users: admin: password: 'secret-cluster-cookie' roles: [ super, sharding ] tcf-replicator: password: secret roles: [ super ] tcf-dml: password: secret roles: [ super ] iproto: advertise: peer: login: admin sharding: login: admin sharding: bucket_count: 3000 groups: routers: replication: failover: manual sharding: roles: [ router ] roles: [ roles.tcf-worker, roles.tcf-coordinator, roles.crud-router ] replicasets: router-msk: leader: router-msk instances: router-msk: roles_cfg: 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: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 http: listen: localhost:8081 roles.tcf-coordinator: storage: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 iproto: listen: - uri: localhost:3301 - uri: 192.168.64.12:3301 advertise: client: 192.168.64.12:3301 router-spb: leader: router-spb instances: router-spb: roles_cfg: 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: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 http: listen: localhost:8082 roles.tcf-coordinator: storage: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 iproto: listen: - uri: localhost:3302 - uri: 192.168.64.12:3302 advertise: client: 192.168.64.12:3302 storages: replication: failover: manual sharding: roles: [ storage ] roles: [ roles.crud-storage, roles.tcf-worker ] replicasets: storage-1: leader: storage-1-msk instances: storage-1-msk: roles_cfg: 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: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 http: listen: localhost:8083 iproto: listen: - uri: localhost:3303 - uri: 192.168.64.12:3303 advertise: client: 192.168.64.12:3303 storage-1-spb: roles_cfg: 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: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 http: listen: localhost:8084 iproto: listen: - uri: localhost:3304 - uri: 192.168.64.12:3304 advertise: client: 192.168.64.12:3304 storage-2: leader: storage-2-msk instances: storage-2-msk: roles_cfg: 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: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 http: listen: localhost:8085 iproto: listen: - uri: localhost:3305 - uri: 192.168.64.12:3305 advertise: client: 192.168.64.12:3305 storage-2-spb: roles_cfg: 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: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 http: listen: localhost:8086 iproto: listen: - uri: localhost:3306 - uri: 192.168.64.12:3306 advertise: client: 192.168.64.12:3306 storage-3: leader: storage-3-msk instances: storage-3-msk: roles_cfg: 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: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 http: listen: localhost:8087 iproto: listen: - uri: localhost:3307 - uri: 192.168.64.12:3307 advertise: client: 192.168.64.12:3307 storage-3-spb: roles_cfg: 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: etcd_v3 storage_params: endpoints: - http://127.0.0.1:2379 - http://192.168.64.9:2379 http: listen: localhost:8088 iproto: listen: - uri: localhost:3308 - uri: 192.168.64.12:3308 advertise: client: 192.168.64.12:3308
В директории
instances.enabled/cluster_b
на второй виртуальной машине (192.168.64.12
) создайте файлinstances.yml
:router-msk: router-spb: storage-1-msk: storage-1-spb: storage-2-msk: storage-2-spb: storage-3-msk: storage-3-spb:
На каждой из виртуальных машин в директориях
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
.
Настройка и запуск Tarantool Cluster Manager¶
В качестве веб-интерфейса кластеров Tarantool DB используется Tarantool Cluster Manager, или TCM. Tarantool Cluster Manager – это инструмент для настройки и отслеживания кластеров Tarantool EE и управления ими. Подробная информация о TCM приведена в документации Tarantool.
Задать настройки для запуска TCM можно в файле конфигурации.
Для этого создайте файл tcm.yml
в директории instances.enabled/cluster_a
на первой виртуальной машине (192.168.64.9
в этом руководстве):
http:
host: 0.0.0.0
port: 8080
storage:
provider: etcd
etcd:
prefix: /tcm
endpoints:
- http://127.0.0.1:2379
- http://192.168.64.9:2379
security:
bootstrap-password: secret
initial-settings:
clusters:
- name: Cluster A
id: 00000000-0000-0000-0000-000000000000
storage-connection:
provider: etcd
etcd-connection:
prefix: /tdb1
username: client
password: secret
endpoints:
- http://127.0.0.1:2379
- http://192.168.64.9:2379
tarantool-connection:
username: "admin"
password: "secret-cluster-cookie"
- name: Cluster B
storage-connection:
provider: etcd
etcd-connection:
prefix: /tdb2
username: client
password: secret
endpoints:
- http://127.0.0.1:2379
- http://192.168.64.9:2379
tarantool-connection:
username: "admin"
password: "secret-cluster-cookie"
Здесь:
http
– имя и порт хоста, на котором работает TCM;storage
– настройки хранилища данных TCM;security
– настройки безопасности TCM;initial-settings
– сущности, которые создаются автоматически при первом запуске TCM. Сущности в примере – это два кластера Tarantool DB. Кластеры используют общий etcd, но имеют различные префиксы –/tdb1
и/tdb2
.
Полная информация об опциях конфигурации TCM приведена в документации TCM.
Запустить TCM с конфигурацией из файла можно так:
$ tcm -c=tcm.yml
Узнать больше: Начало работы с TCM.
Запуск активного кластера¶
Запустите активный кластер (Cluster A) на первой виртуальной машине (192.168.64.9
в руководстве).
Для этого:
Перейдите в директорию
tarantooldb
:$ cd tarantooldb
Загрузите конфигурацию кластера в централизованное хранилище из YAML-файла, используя команду tt cluster publish:
$ tt cluster publish http://127.0.0.1:2379/tdb1 ./instances.enabled/cluster_a/config.yml --force
Здесь:
http://127.0.0.1:2379/tdb1
– адрес узла etcd;./instances.enabled/cluster_a/config.yml
– публикуемый файл конфигурации.
Запустите кластер:
$ tt start cluster_a
Запустите модуль шардирования
vshard
:$ tt replicaset vshard bootstrap cluster_a
Загрузите миграции в кластер:
$ tt migrations publish http://127.0.0.1:2379/tdb1 ./instances.enabled/cluster_a/migrations
Примените загруженные миграции:
$ tt migrations apply http://127.0.0.1:2379/tdb1 --tarantool-username=admin --tarantool-password=secret-cluster-cookie
Запуск пассивного кластера¶
Запустите пассивный кластер (Cluster B) на второй виртуальной машине (192.168.64.12
в этом руководстве).
Для этого:
Перейдите в директорию
tarantooldb
:$ cd tarantooldb
Загрузите конфигурацию кластера в централизованное хранилище из YAML-файла, используя команду tt cluster publish:
$ tt cluster publish http://192.168.64.9:2379/tdb2 ./instances.enabled/cluster_b/config.yml --force
Здесь:
http://192.168.64.9:2379/tdb2
– адрес узла etcd;./instances.enabled/cluster_b/config.yml
– публикуемый файл конфигурации.
Запустите кластер:
$ tt start cluster_b
Запустите модуль шардирования
vshard
:$ tt replicaset vshard bootstrap cluster_b
Загрузите миграции в кластер:
$ tt migrations publish http://192.168.64.9:2379/tdb2 ./instances.enabled/cluster_b/migrations
Примените загруженные миграции:
$ tt migrations apply http://192.168.64.9:2379/tdb1 --tarantool-username=admin --tarantool-password=secret-cluster-cookie
Проверка работы кластеров¶
Чтобы проверить состояние кластеров, выполните следующие шаги:
Для входа в веб-интерфейс TCM откройте в браузере адрес
http://192.168.64.9:8080/
. Логин и пароль для входа:Username:
admin
Password:
secret
Чтобы проверить состояние кластеров, выберите нужный кластер (Cluster A или Cluster B) в выпадающем списке Clusters над вкладкой Stateboard. Перейдите на вкладку Stateboard. Всё настроено правильно, если все узлы в кластере подсвечены зеленым цветом.
Чтобы проверить примененную миграцию, перейдите на вкладку Tuples. При успешной миграции в списке появится спейс
writers
.Проверьте, что Cluster A перешел в активное состояние. Для этого выполните в локальном терминале следующую команду:
$ curl 192.168.64.9:8081/tcf/status active
Проверьте, что Cluster B перешел в пассивное состояние. Для этого выполните в локальном терминале следующую команду:
$ curl 192.168.64.12:8081/tcf/status passive
Также проверьте, что пассивный кластер заблокирован для пользователя
tcf-dml
, с помощью команды tt connect:$ tt connect 192.168.64.9:3301 -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)
Конфигурирование и запуск репликаторов данных¶
Настройка репликаторов¶
Чтобы сконфигурировать репликаторы, повторите следующие шаги на обеих виртуальных машинах:
Создайте файл
config_a_b.yaml
в домашней директории и вставьте следующую конфигурацию для репликации данных с Cluster A на Cluster B:gateway: grpc_server: host: 192.168.64.9 port: 10080 replica_type: anonymous stream_instances: - uri: 192.168.64.9:3303 user: tcf-replicator password: secret - uri: 192.168.64.9:3304 user: tcf-replicator password: secret - uri: 192.168.64.9:3305 user: tcf-replicator password: secret - uri: 192.168.64.9:3306 user: tcf-replicator password: secret destination: gateways: - host: 192.168.64.9 port: 10080 vshard_routers: hosts: - "192.168.64.12:3301" - "192.168.64.12:3302" user: tcf-replicator password: secret
Создайте файл
config_b_a.yaml
в домашней директории и вставьте следующую конфигурацию для репликации данных с Cluster B на Cluster A:gateway: grpc_server: host: 192.168.64.12 port: 10080 replica_type: anonymous stream_instances: - uri: 192.168.64.12:3303 user: tcf-replicator password: secret - uri: 192.168.64.12:3304 user: tcf-replicator password: secret - uri: 192.168.64.12:3305 user: tcf-replicator password: secret - uri: 192.168.64.12:3306 user: tcf-replicator password: secret - uri: 192.168.64.12:3307 user: tcf-replicator password: secret - uri: 192.168.64.12:3308 user: tcf-replicator password: secret destination: gateways: - host: 192.168.64.12 port: 10080 vshard_routers: hosts: - "192.168.64.9:3301" - "192.168.64.9:3302" user: tcf-replicator password: secret
Attention
Начиная с TCF 0.5.0, параметр destination.gateway
заменен на destination.gateways
.
В версиях до 0.5.0 используется старая версия параметра. Убедитесь, что ваша конфигурация соответствует версии TCF.
Полный список опций конфигурации репликаторов данных можно найти в разделе Конфигурация репликаторов данных.
Запуск репликатора Cluster A -> Cluster B¶
На первой виртуальной машине (
192.168.64.9
в данном руководстве) запустите TCF Gateway для отправки изменений с Cluster A на Cluster B:$ ./tcf-gateway --config config_a_b.yaml
На второй виртуальной машине (
192.168.64.12
в данном руководстве) запустите TCF Destination для применения изменений, пришедших с Cluster A на Cluster B:$ ./tcf-destination --config config_a_b.yaml
Запуск репликатора Cluster B -> Cluster A¶
На второй виртуальной машине (
192.168.64.12
в данном руководстве) запустите TCF Gateway для отправки изменений с Cluster B на Cluster A:$ ./tcf-gateway --config config_b_a.yaml
На первой виртуальной машине (
192.168.64.9
в данном руководстве) запустите TCF Destination для применения изменений, пришедших с Cluster B на Cluster A:$ ./tcf-destination --config config_b_a.yaml
Проверка репликации Cluster A -> Сluster B¶
Чтобы проверить успешную репликацию данных с Cluster A на Cluster B:
Откройте TCM по адресу
http://192.168.64.9:8080/
. В TCM выберите кластер Cluster A в выпадающем списке Clusters над вкладкой Stateboard.Подключитесь к роутеру
router-msk
. Для этого перейдите на вкладку Stateboard и нажмите на набор репликrouter-msk
. Выберите узелrouter-msk
и в открывшемся окне перейдите на вкладку Terminal (TT Connect).Во вкладке Terminal добавьте в спейс
writers
новый кортеж:crud.insert_object('writers', { id = 1, name = 'Haruki Murakami', age = 75 }, { noreturn = true })
Проверьте, что в спейсе появились данные. Для этого перейдите на вкладку Tuples и выберите в списке спейс
writers
. В открывшейся вкладке видно, что в спейс добавлен новый кортежHaruki Murakami
.Переключитесь на Cluster B и перейдите на вкладку Tuples.
Выберите в списке спейс
writers
и проверьте, что в открывшейся вкладке также появился кортежHaruki Murakami
.
Переключение состояния кластеров¶
TCF поддерживает два способа переключения состояния кластеров активный-пассивный:
ручное – например, через соответствующий HTTP POST-запрос;
автоматическое.
Чтобы направление репликации в кластерах изменилось автоматически, нужно нарушить состояние активного кластера (Cluster A). Для этого остановите один из его узлов хранилища:
$ tt stop cluster_a:storage-1-msk
Смена состояния кластера может занять несколько секунд: Cluster A при этом сначала перейдет в состояние volatile
,
а затем – в состояние passive
.
Проверьте, что Cluster A перешел в пассивное состояние.
Для этого на первой виртуальной машине (192.168.64.9
в этом руководстве) выполните в терминале следующую команду:
$ curl localhost:8081/tcf/status
passive
Проверьте, что Cluster B перешел в активное состояние.
Для этого на второй виртуальной машине (192.168.64.12
в этом руководстве) выполните в терминале следующую команду:
$ curl localhost:8081/tcf/status
active
Видно, что направление репликации переключилось – теперь второй кластер стал активным, а первый – пассивным.
Теперь восстановите работу экземпляра в первом кластере:
$ tt start cluster_a:storage-1-msk
Проверка репликации Cluster B -> Сluster A¶
В TCM выберите кластер Cluster B в выпадающем списке Clusters над вкладкой Stateboard.
Подключитесь к роутеру
router-msk
. Для этого перейдите на вкладку Stateboard и нажмите на набор репликrouter-msk
. Выберите узелrouter-msk
и в открывшемся окне перейдите на вкладку Terminal (TT Connect).Во вкладке Terminal добавьте в спейс новый кортеж:
crud.insert_object('writers', { id = 2, name = 'Eiji Mikage', age = 41 }, { noreturn = true })
Проверьте, что в спейсе появились данные. Для этого перейдите на вкладку Tuples и выберите в списке спейс
writers
. В открывшейся вкладке видно, что в спейс добавлен новый кортежEiji Mikage
.Переключитесь на Cluster A и перейдите на вкладку Tuples.
Выберите в списке спейс
writers
и проверьте, что в открывшейся вкладке также появился кортежEiji Mikage
.