Запуск кластера через Docker Compose¶
В этом руководстве показано, как развернуть кластер Tarantool DB с помощью Docker Compose.
Примечание
Данный способ является вспомогательным и используется для тестирования и демонстрации в примерах документации. Для целевого развертывания используйте инсталлятор Ansible Tarantool Enterprise.
Содержание:
Пререквизиты¶
Для выполнения примера требуются:
- установленные Docker-образы Tarantool DB, Prometheus и Grafana; 
- приложение Docker Compose; 
- исходные файлы примера - up_with_docker_compose.- Примечание - Есть два способа получить исходные файлы примера: - Архив с полной документацией Tarantool DB, полученный по почте или скачанный в личном кабинете tarantool.io. Пример архива: - tarantooldb-documentation-3.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:
make start
Команда последовательно выполняет следующие шаги:
- Запускает централизованное хранилище конфигурации – кластер etcd; 
- Загружает конфигурацию кластера в централизованное хранилище; 
- Запускает кластер Tarantool DB; 
- Загружает миграции в кластер и выполняет их. 
Запущенный стенд состоит из:
- кластера Tarantool DB: - 2 роутера; 
- 2 набора реплик по 3 хранилища; 
- 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. После применения настроек кластер будет выглядеть так:

Используемые файлы¶
В руководстве используются следующие файлы примера up_with_docker_compose:
- cluster/– директория c файлами для запуска кластера Tarantool DB:- config.yml– конфигурация и топология кластера;
- docker-compose.yml– описание узлов кластера Tarantool DB;
- migrations/scenario– директория, содержащая файлы с описанием миграций;
 
- tools/– директория с файлами для запуска кластера etcd и средств мониторинга:- grafana/– директория, содержащая настройки для ведения мониторинга;
- prometheus/– директория, содержащая настройки Prometheus для сбора и передачи метрик в Grafana;
- docker-compose.yml– описание узлов кластера etcd и средств мониторинга;
- tcm.yml– конфигурация для запуска Tarantool Cluster Manager;
 
- Makefile– инструкции для утилиты- makeдля запуска и остановки всего стенда.
Конфигурация контейнера для узла Tarantool DB¶
Конфигурация контейнера для узла Tarantool DB задается в файле docker-compose.yml:
tarantool-router-msk:
  image: tarantooldb:3x-latest
  networks:
    - tarantooldb_network
  ports:
    - "3301:3301"
  environment:
    - TT_INSTANCE_NAME=router-msk
    - TT_CONFIG_ETCD_ENDPOINTS=http://etcd1:2379,http://etcd2:2379,http://etcd3:2379
    - TT_CONFIG_ETCD_PREFIX=/tdb
    - TT_CONFIG_ETCD_HTTP_REQUEST_TIMEOUT=3
Здесь:
- image– название Docker-образа, используемого для создания контейнера;
- networks– название подсети;
- ports– используемые порты;
- environment– переменные окружения для опций Tarantool:- TT_INSTANCE_NAME– имя экземпляра в кластере;
- TT_CONFIG_ETCD_ENDPOINTS– адреса централизованного хранилища конфигурации;
- TT_CONFIG_ETCD_PREFIX– адрес данных кластера Tarantool DB в централизованном хранилище конфигурации;
- TT_CONFIG_ETCD_HTTP_REQUEST_TIMEOUT– таймаут запроса для получения конфигурации.
 - Полный список опций доступен в описании Docker-образа Tarantool DB. 
Контейнер init_host¶
В файле cluster/docker-compose.yml есть специальный контейнер init_host.
С этого контейнера выполняются:
- Загрузка клиентского кода (миграций) в кластер и его применение: описание спейсов и функций. 
- Добавление кластера в веб-интерфейс.