Запуск кластера без централизованной конфигурации¶
В этом руководстве показано, как развернуть кластер Tarantool DB без централизованной конфигурации с помощью Docker Compose. Если использовать этот способ, веб-интерфейс Tarantool Cluster Manager будет недоступен.
Примечание
Запуск с помощью Docker Compose является вспомогательным и используется для тестирования и демонстрации в примерах документации. Для целевого развертывания используйте инсталлятор Ansible Tarantool Enterprise.
Содержание:
Пререквизиты¶
Для выполнения примера требуются:
установленные Docker-образы Tarantool DB, Prometheus и Grafana;
приложение Docker Compose;
исходные файлы примера
up_without_etcd
.Примечание
Есть два способа получить исходные файлы примера:
Архив с полной документацией Tarantool DB, полученный по почте или скачанный в личном кабинете tarantool.io. Пример архива:
tarantooldb-documentation-2.0.0.tar.gz
. Примерup_without_etcd
расположен в таком архиве в директории./doc/examples/up_without_etcd/
.Отдельный архив up_without_etcd.tar.gz, скачанный c сайта Tarantool.
Запуск стенда¶
Перейдите в директорию примера up_without_etcd
:
cd ./doc/examples/up_without_etcd/
Запустите стенд:
docker compose up -d
Запущенный стенд состоит из:
кластера Tarantool DB (2 роутера, 2 набора реплик по 3 хранилища);
средств мониторинга (Prometheus, Grafana).
Используемые файлы¶
В руководстве используются следующие файлы примера up_without_etcd
:
config.yml
– конфигурация и топология кластера;docker-compose.yml
– описание узлов стенда;grafana
– директория, содержащая настройки для ведения мониторинга;prometheus
– директория, содержащая настройки Prometheus для сбора и передачи метрик в Grafana.
Миграции¶
Создать необходимые объекты (спейсы и индексы) в этом примере можно двумя способами:
В этом примере для создания объектов используется tt CLI:
Подключитесь к узлу
storage-1-msk
– лидеру набора репликstorage-1
:tt connect admin:secret-cluster-cookie@0.0.0.0:3303
Выполните на узле
storage-1-msk
следующий код:function migrate() local sharding_space = box.schema.space.create('_ddl_sharding_key', { format = { {name = 'space_name', type = 'string', is_nullable = false}, {name = 'sharding_key', type = 'array', is_nullable = false}, }, if_not_exists = true, }) sharding_space:create_index('space_name', { type = 'TREE', unique = true, parts = {{'space_name', 'string', is_nullable = false}}, if_not_exists = true, }) local s = box.schema.space.create('space_for_crud', { if_not_exists = true, format = { { name = 'id', type = 'integer' }, { name = 'bucket_id', type = 'unsigned' }, { name = 'data', type = 'any' }, }, }) s:create_index('pk', { parts = {'id'}, if_not_exists = true}) s:create_index('bucket_id', { parts = {'bucket_id'}, unique = false, if_not_exists = true}) box.space._ddl_sharding_key:replace{s.name, {'id'}} end migrate()
Этот код создаст спейс
space_for_crud
, с которым можно взаимодействовать через модуль crud.Выйдите из консоли:
\quit
Теперь подключитесь к узлу
storage-2-msk
– лидеру набора репликstorage-2
:tt connect admin:secret-cluster-cookie@0.0.0.0:3306
Выполните код миграций из п.2 на узле
storage-2-msk
, а затем выйдите из консоли.Подключитесь к роутеру
router-msk-1
:tt connect admin:secret-cluster-cookie@0.0.0.0:3301
Добавьте запись в спейс:
crud.replace('space_for_crud', {1, nil, 'Data'})
Теперь выполните чтение из спейса:
crud.get('space_for_crud', {1})