Запуск кластера через Docker Compose
В этом руководстве показано, как развернуть Tarantool DB с помощью Docker compose.
Содержание:
- Пререквизиты
- Запуск стенда
- Используемые файлы
- Конфигурация контейнера для узла Tarantool DB
- Контейнер user-host
- Остановка стенда
Для выполнения примера требуются:
-
установленный Docker-образ Tarantool DB;
-
приложение Docker compose;
-
исходные файлы примера
up_with_docker_compose.
Перейдите в директорию примера up_with_docker_compose:
cd ./docs/docs/ru/assets/examples/up_with_docker_compose/
Запустите кластер Tarantool DB:
docker compose up -d --build
В руководстве используются следующие файлы примера up_with_docker_compose:
docker-compose.yml— описание узлов кластера;bootstrap/topology.json— топология кластера;./tools/client/bootstrap.sh— скрипт, применяющий топологию кластера;bootstrap/config.yml— конфигурация кластера;bootstrap/migrations/source— директория, содержащая файлы с описанием миграций;./tools/client/migrate.sh— скрипт, применяющий миграции.
Конфигурация контейнера для узла Tarantool DB задается в файле docker-compose.yml:
tarantool-router-msk:image: tarantooldb:1x-latestnetworks:- tarantooldb_networkports:- "8081:8081"- "3301:3301"environment:- TARANTOOL_ADVERTISE_URI=tarantool-router-msk:3301- TARANTOOL_ALIAS=router-msk
Здесь:
-
image— название Docker-образа, используемого для создания контейнера; -
networks— название подсети; -
ports— используемые порты; -
environment— переменные окружения для опций Tarantool и Cartridge:TARANTOOL_ADVERTISE_URI— адрес и порт, на котором узел доступен в кластере;TARANTOOL_ALIAS— название узла кластера.
Полный список опций доступен в документации к модулю cartridge.argparse и в описании Docker-образа Tarantool DB.
В файле docker-compose.yml есть специальный контейнер user-host.
Он выступает в роли компьютера разработчика, с которого выполняются:
- Настройка топологии кластера и первоначальный запуск (bootstrap) модуля шардирования vshard.
- Загрузка клиентского кода в кластер: описание спейсов и функций (миграции)
В примере конфигурация контейнера user-host выглядит так:
user-host:image: tarantooldb:1x-latestnetworks:- tarantooldb_networkenvironment:- TARANTOOLDB_TARGET_URI=tarantool-router-msk:8081- BOOTSTRAP_FAILOVER=1- TARANTOOLDB_BOOTSTRAP_TIMEOUT=60working_dir: /usr/share/tarantool/tarantooldb/tools/client/command: /bin/sh -c "./bootstrap.sh && ./health_check.sh && ./migrate.sh"depends_on:- tarantool-router-msk- tarantool-router-spb- tarantool-storage-1-msk- tarantool-storage-1-spb- tarantool-storage-2-msk- tarantool-storage-2-spb- etcd1- etcd2- etcd3volumes:- ./bootstrap/:/bootstrap/
Здесь:
image— название Docker-образа, используемого для создания контейнера; Используется как источник скриптовbootstrap.sh,health_check.shиmigrate.sh. Предполагается, что в реальных условиях скрипты будут загружены на компьютер разработчика из личного кабинета tarantool.io.networks— название подсети;environment— переменные окружения:TARANTOOLDB_TARGET_URI— адрес, по которому доступны API-команды кластера. Используется скриптамиbootstrap.sh,health_check.shиmigrate.sh;BOOTSTRAP_FAILOVER— первоначальный запуск механизма восстановления после сбоев (failover);TARANTOOLDB_BOOTSTRAP_TIMEOUT— время ожидания первоначального запуска (bootstrap);
working_dir— директория, в которой лежат скрипты;command— запуск скриптовbootstrap.sh,health_check.shиmigrate.sh;depends_on— секция определяет, что контейнерuser-hostзапускается только после запуска всех остальных узлов кластера;volumes— передача в контейнер директории с настройками кластера и пользовательской логикой, чтобы они стали доступны для скриптов.
Остановить кластер можно так:
docker compose down