Запуск кластеров Tarantool DB с TCF и настройка репликатора | Tdb
Руководство администратора Использование Tarantool Clusters Federation Запуск кластеров Tarantool DB с TCF и настройка репликатора

Запуск кластеров 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. Для этого:

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

  2. Перейдите на вкладку Stateboard.

  3. Нажмите на набор реплик router-msk.

  4. Выберите узел 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. Для этого:

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

  2. Перейдите на вкладку Stateboard.

  3. Нажмите на набор реплик router-msk.

  4. Выберите узел 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
Нашли ответ на свой вопрос?
Обратная связь