Запуск кластеров Tarantool DataBase с TCF и настройка репликатора
В этом руководстве показано, как запустить два независимых кластера Tarantool DB в Docker в связке с Tarantool Clusters Federation (TCF) и настроить работу репликатора между кластерами.
Для работы Tarantool Clusters Federation необходимы:
- активный кластер Tarantool DB — с него идет чтение реплицируемых данных;
- пассивный кластер Tarantool DB — на него идет запись реплицируемых данных;
- etcd — для восстановления после сбоя (failover) кластеров Tarantool DB;
- репликатор TCF — бинарные файлы
tcf-destinationиtcf-gateway. Инструкция о том, как получить эти файлы, приведена ниже, в секции Запуск стенда.
Содержание:
- Пререквизиты
- Запуск стенда
- Описание миграции
- Репликация данных с первого кластера на второй
- Изменение направления межкластерной репликации
- Репликация данных со второго кластера на первый
- Отключение стенда
Для выполнения примера требуются:
-
установленный Docker-образ Tarantool DB;
-
архив для развёртывания TCF версии 0.7.0. Архив можно скачать в личном кабинете tarantool.io, в разделе tcf/release/;
-
приложение Docker Compose;
-
исходные файлы примера
tarantool_clusters_federation;
Перейдите в директорию с примером:
cd ./docs/docs/ru/assets/examples/tarantool_clusters_federation/
Загрузите в эту директорию архив для развёртывания TCF и распакуйте его в новой папке tcf_archive:
mkdir tcf_archivetar -xzvf tcf-<VERSION>.tar.gz --directory tcf_archive
Здесь:
VERSION— версия продукта.
Пример: tcf-0.7.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_archiverm -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. Всё настроено правильно, если узлы в кластере подсвечены зеленым цветом.
Запущенный стенд состоит из:
- двух кластеров 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 и документации TCM.
В примере создан спейс 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'}})helpers.register_sharding_key('writers', {'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
Чтобы нарушить состояние первого кластера, остановите один из его узлов хранилища:
cd ../ && docker compose -f cluster1/docker-compose.yml stop cluster1-storage-1-msk
Теперь снова проверьте статусы кластеров:
http://localhost:8001/tcf/statuspassivehttp://localhost:8002/tcf/statusactive
Видно, что направление репликации переключилось — теперь второй кластер стал активным, а первый — пассивным.
Восстановите работу экземпляра в первом кластере:
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