Tarantool Cartridge — это модульное расширение и фреймворк для развёртывания, управления и масштабирования распределённых приложений на базе СУБД Tarantool. Проект предназначен для упрощения создания кластеров, оркестрации экземпляров, обеспечения высокой доступности и автоматизации задач администрирования. Cartridge сочетает средства конфигурирования, жизненного цикла приложений и управления состоянием кластеров, предоставляя разработчикам и операторам единый набор инструментов для работы с распределёнными базами данных и микросервисами в среде Tarantool.
Изначально Cartridge был разработан как ответ на потребность в стандартизированном способе сборки отказоустойчивых кластеров Tarantool с минимальным объёмом ручного управления. Фреймворк реализует паттерны автоматического обнаружения узлов, репликации данных и управления состояниями (lifecycle hooks), а также предоставляет API и CLI для деплоя и мониторинга. Cartridge ориентирован на сценарии, где требуются горизонтальное масштабирование, быстрое переключение ролей и согласованность реплик при минимальных задержках.
- Оркестрация кластера: автоматическое обнаружение и регистрация узлов, управление членством кластера и распределением ролей.
- Высокая доступность: поддержка репликации, автоматического failover и переключения лидера для обеспечения непрерывности сервиса.
- Управление состоянием приложения: lifecycle hooks для инициализации, обновления и корректного завершения работы сервисов на узлах.
- Шаблоны и конфигурация: возможность описать структуру приложения и шаблоны конфигурации, применяемые к узлам при деплое.
- Масштабирование: инструменты для добавления и удаления экземпляров, перераспределения нагрузки и данных между репликами.
- CLI и API: интерфейсы командной строки и программные API для управления жизненным циклом и мониторинга состояния кластера.
- Интеграция с приложениями на Lua: тесная интеграция с экосистемой Tarantool и поддержка написания логики расширений на Lua.
- Мульти-сервисы: поддержка развертывания нескольких независимых сервисов и роутинга запросов внутри кластера.
- Мониторинг состояния: сбор и предоставление метрик, информации о состоянии узлов и логов, необходимых для администрирования.
- Обновления и миграции: механизмы для плавного обновления кода и миграции схемы данных с минимальным простоем.