Окружение и структура приложения
В этом разделе приведен общий обзор подготовки приложения Tarantool к развертыванию и описано, как может выглядеть окружение и структура приложения. Эта информация полезна для понимания того, как управлять экземплярами Tarantool с помощью утилиты tt CLI в средах разработки и эксплуатации.
Основные шаги по созданию и подготовке приложения к развертыванию:
В качестве примера в разделе используется приложение sharded_cluster_crud. Такой кластер включает 5 экземпляров: один роутер и 4 хранилища, которые составляют два набора реплик.

Перед созданием приложения необходимо настроить локальное окружение для работы tt:
-
Создайте домашний каталог для окружения.
-
Выполните
tt initв этом каталоге:~/myapp$ tt init• Environment config is written to 'tt.yaml'
Эта команда создает файл конфигурации tt по умолчанию (tt.yaml) для локального окружения, а также каталоги для приложений,
управляющих сокетов, журналов и других артефактов:
~/myapp$ lsbin distfiles include instances.enabled modules templates tt.yaml
Подробная информация о параметрах конфигурации tt и режимах
запуска – на странице конфигурации tt.
Приложение можно создать двумя способами:
- Вручную, подготовив структуру в каталоге внутри
instances_enabled. Имя каталога используется в качестве идентификатора приложения. - Из шаблона с помощью команды tt create.
В этом примере структура приложения подготовлена вручную и выглядит следующим образом.
~/myapp$ tree.├── bin├── distfiles├── include├── instances.enabled│ └── sharded_cluster_crud│ ├── config.yaml│ ├── instances.yaml│ ├── router.lua│ ├── sharded_cluster_crud-scm-1.rockspec│ └── storage.lua├── modules├── templates└── tt.yaml
Каталог sharded_cluster_crud содержит следующие файлы:
config.yaml: содержит конфигурацию кластера. Этот файл может включать всю топологию кластера или задавать параметры подключения к централизованному хранилищу конфигурации.instances.yaml: определяет экземпляры для запуска в текущем окружении. Например, на машине разработчика этот файл может включать все экземпляры, определенные в конфигурации кластера. В рабочем окружении этот файл содержит экземпляры для запуска на конкретной машине.router.lua: содержит код, специфичный для роутера.sharded_cluster_crud-scm-1.rockspec: определяет требуемые внешние зависимости (например,vshardиcrud).storage.lua: содержит код, специфичный для хранилищ. Полный пример доступен в описании sharded_cluster_crud.
Для упаковки готового приложения используйте команду tt pack.
Эта команда может создать устанавливаемый DEB/RPM-пакет или сгенерировать архив .tgz.
Структура ниже отражает содержимое упакованного архива .tgz для приложения
sharded_cluster_crud:
~/myapp$ tree -a.├── bin│ ├── tarantool│ └── tt├── instances.enabled│ └── sharded_cluster_crud -> ../sharded_cluster_crud├── sharded_cluster_crud│ ├── .rocks│ │ └── share│ │ └── ...│ ├── config.yaml│ ├── instances.yaml│ ├── router.lua│ └── storage.lua└── tt.yaml
Структура приложения аналогична той, что определена при разработке приложения, с некоторыми отличиями:
bin: содержит исполняемые файлыtarantoolиtt, упакованные вместе с приложением.instances.enabled: содержит символическую ссылку на упакованное приложениеsharded_cluster_crud.sharded_cluster_crud: упакованное приложение. Помимо файлов, созданных при разработке приложения, включает каталог.rocksс зависимостями приложения (например,vshardиcrud).tt.yaml: файл конфигурацииtt.
При развертывании распределенного кластерного приложения из архива .tar.gz можно определить экземпляры для запуска на каждой
машине, изменив содержимое файла instances.yaml.
-
На машине разработчика этот файл может включать все экземпляры, определенные в конфигурации кластера.

instances.yaml:storage-a-001:storage-a-002:storage-b-001:storage-b-002:router-a-001: -
В рабочем окружении этот файл содержит экземпляры для запуска на конкретной машине.

instances.yaml(Server-001):router-a-001:instances.yaml(Server-002):storage-a-001:storage-b-001:instances.yaml(Server-003):storage-a-002:storage-b-002:
В разделе Запуск и остановка экземпляров описано, как запускать и останавливать экземпляры Tarantool.
Приложения Tarantool, установленные из DEB и RPM пакетов, созданных командой tt pack,
могут работать как службы systemd. Они запускаются от имени системного пользователя tarantool. Этот
пользователь создается автоматически при установке пакета.
По умолчанию артефакты приложения размещаются в следующих каталогах:
/var/lib/tarantool/sys_env– данные приложения;/var/log/tarantool/sys_env– журналы;/var/run/tarantool/sys_env– рабочие артефакты.
Если требуется изменить эти каталоги, убедитесь, что у пользователя tarantool достаточно прав на используемые каталоги.