Использование координаторов отказоустойчивости
В этом руководстве показано, как настроить работу внешних координаторов отказоустойчивости (supervised failover coordinators).
Содержание:
Для выполнения примера требуются:
-
установленные Docker-образы Tarantool DB, Prometheus и Grafana;
-
приложение Docker Compose;
-
исходные файлы примера
failover_coordinator.
Перейдите в директорию примера failover_coordinator:
cd ./docs/docs/ru/assets/examples/failover_coordinator/
Запустите кластер Tarantool DB:
make start
Команда последовательно выполняет следующие шаги:
- Запускает централизованное хранилище конфигурации — кластер etcd;
- Загружает конфигурацию кластера в централизованное хранилище;
- Запускает кластер Tarantool DB;
- Загружает миграции в кластер и выполняет их.
Запущенный стенд состоит из:
- кластера Tarantool DB:
- 2 роутера;
- 2 набора реплик по 3 хранилища;
- 2 координатора отказоустойчивости;
- 1 Tarantool Cluster Manager (TCM);
- кластера etcd из 3 узлов;
- средств мониторинга (Prometheus, Grafana).
После запуска должны работать все контейнеры, кроме init_host.
Также после запуска доступны следующие пользовательские интерфейсы:
- http://localhost:8081 — веб-интерфейс TCM;
- http://localhost:9090 — веб-интерфейс Prometheus;
- http://localhost:3000 — веб-интерфейс Grafana.
Для входа в веб-интерфейс TCM откройте в браузере адрес http://localhost:8081. Логин и пароль для входа:
- Username:
admin - Password:
secret
В TCM откройте вкладку Stateboard. После применения настроек кластер будет выглядеть так:

На вкладке Stateboard вызовите меню Actions кластера, нажав на кнопку ... справа от строки поиска. В меню выберите
пункт Supervised failover. Откроется окно, в котором на вкладке
Supervised failover отображаются все работающие координаторы
кластера. Активный координатор отмечен в этом списке зелёной галочкой.

В TCM перейдите на вкладку Stateboard.
Нажмите на набор реплик router-msk.
Выберите роутер router-msk и в открывшемся окне перейдите на вкладку Terminal.
Во вкладке Terminal введите следующую команду, чтобы добавить в спейс новый кортеж:
crud.insert_object('bands', {id = 1, band_name = 'Free Flow Flava', year = 2014})
Вывод:
---- rows:- [1, 177, 'Free Flow Flava', 2014]metadata: [{'name': 'id', 'type': 'integer'}, {'name': 'bucket_id', 'type': 'unsigned'},{'name': 'band_name', 'type': 'string'}, {'name': 'year', 'type': 'integer'}]- null...
После этого проверьте записанный кортеж с помощью операции crud.select():
crud.select('bands').rows
Вывод:
---- - [1, 177, 'Free Flow Flava', 2014]...
Теперь нужно остановить мастер-узлы. Чтобы определить мастер-узлы в наборе реплик, в TCM на вкладке Stateboard найдите в каждом наборе реплик экземпляр кластера с иконкой короны. В данном примере это узлы storage-1-brn
и storage-2-brn.
Чтобы остановить эти экземпляры кластера, вернитесь в терминал ОС и выполните следующие команды:
cd cluster/docker compose stop tarantool-<имя_первого_мастера>docker compose stop tarantool-<имя_второго_мастера>cd ..
Видно, что мастер-узлы стали недоступны, а их лидерство передано другим экземплярам.
В TCM перейдите на вкладку Stateboard.
Нажмите на набор реплик router-msk.
Выберите роутер router-msk и в открывшемся окне перейдите на вкладку Terminal.
Во вкладке Terminal введите следующую команду, чтобы добавить в спейс новый кортеж:
crud.insert_object('bands', {id = 2, band_name = 'Wax Tailor', year = 2001})
Вывод:
---- rows:- [2, 101, 'Wax Tailor', 2001]metadata: [{'name': 'id', 'type': 'integer'}, {'name': 'bucket_id', 'type': 'unsigned'},{'name': 'band_name', 'type': 'string'}, {'name': 'year', 'type': 'integer'}]- null...
Кластер доступен для записи данных. Проверить кортеж, добавленный в спейс, можно так:
crud.select('bands').rows
Вывод:
---- - [1, 177, 'Free Flow Flava', 2014]- [2, 101, 'Wax Tailor', 2001]...
Координатор позволяет не только обрабатывать аварийные ситуации, но и вручную менять лидера в наборе реплик. Например, если после фейловера мастером стал узел storage-1-msk, а вы хотите назначить лидером storage-1-spb.
- В веб-интерфейсе TCM перейдите на вкладку Stateboard.
- В меню Actions выберите пункт Supervised failover.
- В открывшемся окне перейдите на вкладку Commands и нажмите кнопку Add.
- В поле ввода укажите команду в формате YAML, определив имя нового мастера:
command: switchnew_master: storage-1-spbtimeout: 100
- Нажмите Save.
После этого в списке на вкладке Commands появится запись о выполнении операции. Статус success подтверждает, что лидерство было успешно передано указанному узлу.

Остановить стенд можно так:
make stop