Запуск кластера через Docker compose | Tdb
Руководство администратора Развертывание Запуск кластера через Docker compose

Запуск кластера через 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. Он выступает в роли компьютера разработчика, с которого выполняются:

  1. Настройка топологии кластера и первоначальный запуск (bootstrap) модуля шардирования vshard.

  2. Загрузка клиентского кода в кластер: описание спейсов и функций (миграции)

В примере конфигурация контейнера 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 – передача в контейнер директории с настройками кластера и пользовательской логикой, чтобы они стали доступны для скриптов.

Остановка стенда

Остановить кластер можно так:

docker compose down
Found what you were looking for?
Feedback