Запуск кластера через Docker compose¶
В этом руководстве показано, как развернуть Tarantool DB с помощью Docker compose.
Примечание
Данный способ является вспомогательным и используется для тестирования и демонстрации в примерах документации. Для целевого развертывания используйте инсталлятор Ansible Tarantool Enterprise.
Содержание:
Пререквизиты¶
Для выполнения примера требуются:
установленный Docker-образ Tarantool DB;
приложение Docker compose;
исходные файлы примера
up_with_docker_compose
.Примечание
Есть два способа получить исходные файлы примера:
Архив с полной документацией Tarantool DB, полученный по почте или скачанный в личном кабинете tarantool.io. Пример архива:
tarantooldb-documentation-1.0.0.tar.gz
. Примерup_with_docker_compose
расположен в таком архиве в директории./doc/examples/up_with_docker_compose/
.Отдельный архив up_with_docker_compose.tar.gz, скачанный c сайта Tarantool.
Запуск стенда¶
Перейдите в директорию примера up_with_docker_compose
:
cd ./doc/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¶
Конфигурация контейнера для узла Tarantool DB задается в файле docker-compose.yml
:
tarantool-router-msk:
image: tarantooldb:1x-latest
networks:
- tarantooldb_network
ports:
- "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.
Контейнер user-host¶
В файле docker-compose.yml
есть специальный контейнер user-host
.
Он выступает в роли компьютера разработчика, с которого выполняются:
Настройка топологии кластера и первоначальный запуск (bootstrap) модуля шардирования vshard.
Загрузка клиентского кода в кластер: описание спейсов и функций (миграции)
В примере конфигурация контейнера user-host
выглядит так:
user-host:
image: tarantooldb:1x-latest
networks:
- tarantooldb_network
environment:
- TARANTOOLDB_TARGET_URI=tarantool-router-msk:8081
- BOOTSTRAP_FAILOVER=1
- TARANTOOLDB_BOOTSTRAP_TIMEOUT=60
working_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
- etcd3
volumes:
- ./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
– передача в контейнер директории с настройками кластера и пользовательской логикой, чтобы они стали доступны для скриптов.