Scalable Nomad Architecture Evolution (Multi-Client / Global Ready)
Nomad Server: 1
Nomad Clients: 3
Use Case: Service discovery + load balancing with automatic failover
┌────────────┐
│ Client │
└─────┬──────┘
│
┌──────────▼──────────┐
│ External LB (CNAME) │
└──────────┬──────────┘
│
┌────────────┼────────────┐
│ │ │
┌─▼─┐ ┌─▼─┐ ┌─▼─┐
│C1 │ │C2 │ │C3 │
│T+C│ │T+C│ │T+C│
│N │ │N │ │N │
│API│ │API│ │API│
└───┘ └───┘ └───┘
T = Traefik, C = Consul, N = Nomad
go-api.nomad running on 3 clients
After Failover (e.g., C1 Disk Full)
C1 dies or gets drained
▼
API task is rescheduled to C4
┌────────────┐
│ Client │
└─────┬──────┘
│
┌──────────▼──────────┐
│ External LB (CNAME) │
└──────────┬──────────┘
│
┌────────────┼────────────┐
│ │ │
┌─▼─┐ ┌─▼─┐ ┌─▼─┐
│C2 │ │C3 │ │C4 │
│T+C│ │T+C│ │T+C│
│N │ │N │ │N │
│API│ │API│ │API│ (migrated)
└───┘ └───┘ └───┘
Consul updates service address
Traefik reloads config dynamically
No downtime
Nomad Server: 3+ (HA)
Nomad Clients: 10+
Regions: US-East, EU-West
External DNS LB (e.g., Route53, Cloudflare)
Traefik + Consul Connect optional for secure mesh