HashiCorp Nomad — это распределённый оркестратор рабочих нагрузок, разработанный для планирования, развертывания и управления как контейнеризованными, так и неконтейнеризованными приложениями в различных вычислительных средах, включая облачные провайдеры, локальные дата‑центры и периферийные узлы. Проект ориентирован на простоту архитектуры, масштабируемость и поддержку множества типов задач, предоставляя единый интерфейс для управления пакетами, контейнерами и собственными двоичными приложениями. Nomad интегрируется с другими инструментами экосистемы инфраструктуры для обеспечения обнаружения сервисов, сетевой конфигурации и секретного управления.
Архитектурно Nomad строится вокруг модели сервера‑агент и клиента‑агента: серверы формируют кластер и принимают решения по планированию задач, клиенты выполняют назначенные задания на хостах. Планы задач описываются декларативно, что позволяет определять ресурсы, ограничения, политики размещения и зависимости. Nomad поддерживает различные стратегии планирования, управление очередью заданий, обновления без простоя и функциональность для организации многоарендных сред. Благодаря минимальному набору внешних зависимостей и распределённой согласованности, Nomad рассчитан на высокую доступность и горизонтальное масштабирование.
- Поддержка множества типов задач: контейнеры (Docker), исполняемые файлы, JVM‑приложения, системные процессы и специализированные драйверы.
- Декларативное описание заданий: задания описываются в конфигурационных файлах, содержащих группы, задачи, ресурсы и политики обновления.
- Распределённое планирование и размещение: серверы кластера принимают решения по оптимальному распределению задач с учётом ограничений и доступных ресурсов.
- Высокая доступность: кластер серверов реализует устойчивость к отказам и способности к автоматическому восстановлению размещений.
- Масштабируемость: поддержка больших кластеров и динамического присоединения/удаления клиентских узлов.
- Многопользовательская политика и квоты: механизмы для изоляции рабочих нагрузок и управления ресурсными квотами между командами.
- Обновления и развертывания без простоя: стратегии rolling update, canary и контроль целостности при обновлениях.
- Интеграция с инструментами экосистемы: взаимодействие с системами обнаружения сервисов, хранилищами секретов и сетевыми решениями.
- Небольшие внешние зависимости: минимальная операционная сложность и возможность использования в ограниченных средах.
- Поддержка политик безопасности и ограничений ресурсов: CPU, память, дисковые квоты, привязки к хостам и меткам.