What Nomad Does
- Multi-workload — Docker, raw exec, Java, Windows, QEMU
- Service discovery — Consul integration or native
- Secrets — Vault integration
- Bin packing — optimal placement algorithm
- Blue-green / canary — deploy strategies built in
- Rolling updates — with health checks
- Batch jobs — periodic, batch, system types
- Spread / affinity — placement constraints
- ACLs — fine-grained access control
- Federation — multi-region clusters
Architecture
Servers form a Raft-consensus cluster for scheduling decisions. Clients run on each node to execute tasks. Schedulers (service, batch, system, sysbatch) place workloads based on constraints and resources. Nomad is a single Go binary per role.
Self-Hosting
# server.hcl
data_dir = "/opt/nomad/data"
server {
enabled = true
bootstrap_expect = 3
}# client.hcl
data_dir = "/opt/nomad/data"
client {
enabled = true
servers = ["nomad-server-1:4647"]
}Key Features
- Multi-workload orchestration
- Single Go binary
- Simpler than Kubernetes
- Native Consul + Vault integration
- Rolling deploys, canary, blue-green
- Multi-region federation
- ACL system
- Spread and affinity placement
- CSI volume support
Comparison
| Orchestrator | Workloads | Complexity | Ecosystem |
|---|---|---|---|
| Nomad | Docker, VM, bare | Low | Smaller |
| Kubernetes | Containers | High | Huge |
| Docker Swarm | Docker | Very low | Declining |
| HashiCorp Waypoint | Containers | Low | Newer |
| Mesos + Marathon | Anything | Very high | Declining |
FAQ
Q: Nomad vs Kubernetes? A: K8s is feature-complete but complex with a steep learning curve; Nomad is a single binary, simple, and can run non-container workloads. For small and medium teams, Nomad is sufficient and cheap to operate; large teams may pick K8s for the ecosystem.
Q: What is BUSL? A: Business Source License 1.1 — converts to MPL 2.0 open source after 4 years; in the meantime, commercial use that competes with Nomad is prohibited. Self-use and non-competing commercial use are fully fine.
Q: Do I need Consul? A: Not required. Nomad v1.3+ has native service discovery. But for advanced features (service mesh, KV, distributed locks), Consul is still recommended.
Sources
- Docs: https://www.nomadproject.io/docs
- GitHub: https://github.com/hashicorp/nomad
- License: BUSL 1.1