Запуск кластеров Tarantool DB с TCF и настройка репликатора¶
В этом руководстве показано, как запустить два независимых кластера Tarantool DB в Docker в связке с Tarantool Clusters Federation (TCF) и настроить работу репликатора между кластерами.
Примечание
TCF поддерживает репликацию шардированных данных в спейсах с асинхронным режимом репликации. Это означает, что передача словарей через TCF недоступна.
Для работы Tarantool Clusters Federation необходимы:
активный кластер Tarantool DB – с него идет чтение реплицируемых данных;
пассивный кластер Tarantool DB – на него идет запись реплицируемых данных;
etcd – для восстановления после сбоя (failover) кластеров Tarantool DB;
репликатор TCF – бинарные файлы
tcf-destination
иtcf-gateway
. Инструкция о том, как получить эти файлы, приведена ниже, в секции Запуск стенда.
Содержание:
Пререквизиты¶
Для выполнения примера требуются:
установленный Docker-образ Tarantool DB;
архив для развёртывания TCF версии не ниже 0.3.0. Архив можно скачать в личном кабинете tarantool.io, в разделе tcf/release/;
приложение Docker Compose;
исходные файлы примера
tarantool_clusters_federation
;Примечание
Есть два способа получить исходные файлы примера:
Архив с полной документацией Tarantool DB, полученный по почте или скачанный в личном кабинете tarantool.io. Пример архива:
tarantooldb-documentation-2.0.0.tar.gz
. Примерtarantool_clusters_federation
расположен в таком архиве в директории./doc/examples/tarantool_clusters_federation/
.Отдельный архив tarantool_clusters_federation.tar.gz, скачанный c сайта Tarantool.
Запуск стенда¶
Перейдите в директорию с примером:
cd ./doc/examples/tarantool_clusters_federation/
Загрузите в эту директорию архив для развёртывания TCF и распакуйте его в новой папке tcf_archive
:
mkdir tcf_archive
tar -xzvf tcf-<VERSION>.tar.gz --directory tcf_archive
Здесь:
VERSION
– версия продукта.
Пример: tcf-0.3.0.tar.gz
.
Скопируйте в директорию tcf
бинарные файлы tcf-destination
и tcf-gateway
из созданной директории tcf_archive
:
cp tcf_archive/tcf-destination tcf && cp tcf_archive/tcf-gateway tcf
Для запуска примера не требуются архив с TCF и другие файлы из директории tcf_archive
, так что их можно удалить:
rm -r tcf_archive
rm -r tcf-<VERSION>.tar.gz
Теперь запустите стенд:
make start
После запуска кластера становится доступен веб-интерфейс Tarantool Cluster Manager. Для входа в TCM откройте в браузере адрес http://localhost:8081. Логин и пароль для входа:
Username:
admin
Password:
secret
Проверить состояние кластеров можно в TCM. Для этого выберите нужный кластер (Tarantool DB Cluster 1
или Tarantool DB Cluster 2
) в выпадающем списке Clusters над вкладкой Stateboard.
Перейдите на вкладку Stateboard. Всё настроено правильно, если узлы в кластере подсвечены зеленым цветом.
Теперь запустите репликатор:
cd tcf && docker compose up --force-recreate -d --build
Запущенный стенд состоит из:
двух кластеров Tarantool DB. Каждый кластер содержит 2 роутера и 2 набора реплик по 3 хранилища;
кластера etcd из трех узлов;
1 Tarantool Cluster Manager (TCM);
сервиса репликатора Tarantool Clusters Federation.
На запущенном стенде настроена репликация из кластера 1 в кластер 2. Настройки TCF доступны в веб-интерфейсе TCM по адресу http://localhost:8081 на вкладке TCF. Подробная информация о доступных опциях конфигурации TCF и настройке TCF через веб-интерфейс приведена в документации Tarantool Clusters Federation.
Описание миграции¶
В примере создан спейс 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'}})
Репликация данных с первого кластера на второй¶
Подключитесь к роутеру router-msk
в кластере 1 через TCM. Для этого:
В TCM выберите кластер
Tarantool DB Cluster 1
в выпадающем списке Clusters над вкладкой Stateboard.Перейдите на вкладку Stateboard.
Нажмите на набор реплик
router-msk
.Выберите узел
router-msk
и в открывшемся окне перейдите на вкладку Terminal.
Во вкладке Terminal добавьте в спейс новый кортеж:
crud.insert_object('writers', {
id = 1,
name = 'Haruki Murakami',
age = 75
}, {
noreturn = true
})
Проверьте, что в спейсе появились данные.
Для этого в TCM перейдите на вкладку Tuples и выберите в списке спейс writers
.
В открывшейся вкладке видно, что в спейс добавлен новый кортеж Haruki Murakami
.
Теперь переключитесь на второй кластер (Tarantool DB Cluster 2
) в левом верхнем меню TCM.
Откройте вкладку Tuples и и убедитесь, что репликация на первый кластер прошла успешно – в спейсе writers
тоже появился новый кортеж.
Изменение направления межкластерной репликации¶
В TCF один кластер имеет активный статус и принимает все запросы от приложения. Второй кластер имеет пассивный статус и содержит копию данных активного кластера.
Проверьте статус первого кластера:
http://localhost:8001/tcf/status
active
Проверьте статус второго кластера:
http://localhost:8002/tcf/status
passive
Чтобы нарушить состояние первого кластера, остановите один из его узлов хранилища:
docker compose -f cluster1/docker-compose.yml stop cluster1-storage-1-msk
Теперь снова проверьте статусы кластеров:
http://localhost:8001/tcf/status
passive
http://localhost:8002/tcf/status
active
Видно, что направление репликации переключилось – теперь второй кластер стал активным, а первый – пассивным.
Восстановите работу экземпляра в первом кластере:
docker compose -f cluster1/docker-compose.yml start cluster1-storage-1-msk
Репликация данных со второго кластера на первый¶
Подключитесь к роутеру router-msk
во втором кластере через TCM. Для этого:
В TCM выберите кластер
Tarantool DB Cluster 2
в выпадающем списке Clusters над вкладкой Stateboard.Перейдите на вкладку Stateboard.
Нажмите на набор реплик
router-msk
.Выберите узел
router-msk
и в открывшемся окне перейдите на вкладку Terminal.
Во вкладке Terminal добавьте в спейс новый кортеж:
crud.insert_object('writers', {
id = 2,
name = 'Eiji Mikage',
age = 41
}, {
noreturn = true
})
Проверьте, что в спейсе появились данные.
Для этого в TCM перейдите на вкладку Tuples и выберите в списке спейс writers
.
В открывшейся вкладке видно, что в спейс добавлен новый кортеж Eiji Mikage
.
Теперь переключитесь на первый кластер (Tarantool DB Cluster 1
) в левом верхнем меню TCM.
Откройте вкладку Tuples и убедитесь, что репликация на первый кластер прошла успешно – в спейсе writers
тоже появился новый кортеж.
Отключение стенда¶
Чтобы отключить стенд, выполните в локальном терминале следующую команду:
make stop