Запуск кластера без централизованной конфигурации
В этом руководстве показано, как развернуть кластер Tarantool DB без централизованной конфигурации с помощью Docker Compose. Если использовать этот способ, веб-интерфейс Tarantool Cluster Manager будет недоступен.
Содержание:
Для выполнения примера требуются:
-
установленные Docker-образы Tarantool DB, Prometheus и Grafana;
-
приложение Docker Compose;
-
исходные файлы примера
up_without_etcd.
Перейдите в директорию примера up_without_etcd:
cd ./docs/docs/ru/assets/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'}}endmigrate()Этот код создаст спейс
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})
Остановить стенд можно так:
docker compose down