Warum wir bei Intersys auf Nomad setzen
Docker hat die Softwareentwicklung revolutioniert, indem es eine einfache Möglichkeit bietet, Anwendungen als leichtgewichtige, isolierte Container zu verpacken und auszuführen. Doch in modernen, verteilten Architekturen mit Microservices wird schnell klar, dass Docker allein nicht ausreicht. Hier kommen Orchestrierungstools wie Kubernetes, Docker Swarm oder Nomad ins Spiel, die für eine automatische Verwaltung und Skalierung der Container sorgen. Während Kubernetes sich als der Branchenstandard etabliert hat, haben wir uns bei Intersys bewusst für HashiCorp Nomad entschieden. Warum? Weil Nomad für unsere Anforderungen eine schlankere, flexiblere und effizientere Alternative darstellt. In diesem Beitrag erklären wir die Vorteile von Nomad und seine Architektur im Detail.
Grundprinzipien von Nomad
1. Einfachheit – Nomad zeichnet sich durch eine minimalistische Architektur aus:
- Ein einzelnes, in Go geschriebenes Binary, das leicht zu installieren ist.
- Unterstützt alle gängigen Betriebssysteme (Windows, macOS, Linux).
- Kann on-premises oder in der Cloud betrieben werden.
- Leichtgewichtige Konfiguration, oft unter 100 Zeilen.
- Ressourcenschonend: Selbst kleine Setups benötigen nur wenige CPUs und RAM.
- Bedienbar über REST API, CLI oder ein Web-Interface.
2. Flexibilität für verschiedene Workloads – Nomad kann weit mehr als nur Container orchestrieren:
- Unterstützung für Binärdateien, Java-Anwendungen, virtuelle Maschinen und Batch-Jobs.
Besonders nützlich für hybride Architekturen, die nicht ausschliesslich auf Containern basieren.
3. Konsistentes Management
- Deklarative Job-Spezifikationen definieren, wie Workloads ausgeführt werden.
- Jobs lassen sich leicht skalieren, updaten und verwalten.
4. Hohe Verfügbarkeit und Skalierbarkeit
- Automatische Neustart-Strategien bei Node-Ausfällen.
- Nomad skaliert bis zu 10.000 Knoten und bewältigte in der «Two Million Container Challenge» 2 Millionen Docker-Container auf 6.100 Hosts in 23 Minuten.
Architektur von Nomad
Nomad-Cluster
Ein Nomad-Cluster besteht aus zwei Hauptknotentypen:
- Server Nodes: Übernehmen das Cluster-Management und Scheduling.
- Client Nodes: Führen die geplanten Workloads aus und melden Ressourcenstatus.
- Mindestens drei Server Nodes sorgen für Konsistenz und Ausfallsicherheit.
Job-Spezifikation
Workloads werden über HCL (HashiCorp Configuration Language) definiert und bestehen aus:
- Jobs: Ein Nomad-Job ist die oberste Einheit einer Workload-Definition und beschreibt die gesamte Spezifikation einer Anwendung, einschließlich ihrer Gruppen und Tasks.
- Gruppen: Eine Gruppe innerhalb eines Jobs fasst mehrere Tasks zusammen, die auf demselben Node ausgeführt werden sollen und Ressourcen sowie Netzwerk-Konfigurationen teilen können.
- Tasks: Ein Task ist die kleinste Ausführungseinheit in Nomad und definiert einen einzelnen Prozess, der innerhalb einer Gruppe läuft, z. B. ein Docker-Container oder ein Skript.
Scheduling
Nomad nutzt bin-packing, um Workloads optimal auf Ressourcen zu verteilen. Unterstützt werden:
- Batch-Scheduling für einmalige Jobs.
- Service-Scheduling für langlaufende Anwendungen.
Konsistenz und Verfügbarkeit
- Server-Nodes kommunizieren über den Raft-Konsensalgorithmus.
- Cluster-Zustände und Job-Spezifikationen werden in einem verteilten Key-Value-Speicher repliziert.
Netzwerk und Integration
- Einfache Netzwerkverwaltung mit eingebauten Service-Discovery-Funktionen (seit Version 1.3).
- Integration mit HashiCorp Consul für erweitertes Service-Mesh.
- Sichere Verwaltung von Secrets mit HashiCorp Vault oder seit Version 1.4 auch direkt in Nomad möglich.
- Erweiterbar durch Plugins, um spezifische Anforderungen zu erfüllen.

Doch nun genug der Theorie, schauen wir uns Nomad anhand eines einfachen Beispiels an.
Erste Schritte mit Nomad
Es gibt mehrere Arten wie Nomad installiert werden kann. Für eine kurze Demo geht es am einfachsten per Download

Anschliessend kann das GUI unter folgender URL aufgerufen werden:


Unter “Run a New Job” kann in weniger als 10 Zeilen ein NGINX-Webserver gestartet werden.

Damit der Web-Server über den Port 25000 erreichbar ist, müssen wir die Konfiguration wie folgt erweitern:

Gründe für den Einsatz
Als erster Orchestrator haben wir bei Intersys seit Ende 2018 Apache Mesos eingesetzt. Doch als sich Anfang 2021 abzeichnete, dass Apache Mesos nicht mehr aktiv weiterentwickelt wird, begaben wir uns auf die Suche nach einer Alternative. In diesem Zuge evaluierten wir Kubernetes (Plain-Vanilla-Setup), OpenShift und HashiCorp Nomad. Als familiäres KMU mit weniger als 40 Mitarbeitenden, das sich auf Softwareentwicklung spezialisiert, waren wir auf der Suche nach einer einfach erlernbaren und nicht übermäßig komplexen Lösung. Die Einstellung von dedizierten DevOps-Engineers, die ausschließlich das Setup und die Wartung einer containerbasierten Lösung übernehmen, war für uns keine Option. Nach gründlicher Abwägung entschieden wir uns für den Einsatz von HashiCorp Nomad. Rückblickend war dies die richtige Entscheidung. Nomad bringt folgende Vorteile mit:
1. Schnelle Implementierung
Innerhalb weniger Tage konnten wir Nomad produktiv einsetzen – mit Kubernetes oder OpenShift war das nicht möglich.
2. Geringer Wartungsaufwand
Vier Cluster (DEV, TEST, PREPROD, PROD) mit 34 VMs laufen mit minimalem Wartungsaufwand. Updates in DEV- und TEST-Umgebungen sind automatisiert.
3. Stabile Performance
Seit drei Jahren kein einziger Nomad-bedingter Ausfall. Dank Failover-Mechanismen werden fehlerhafte VMs automatisch ersetzt.
Punkte die gegen Nomad sprechen
- Kubernetes ist Marktführer mit grösserer Community und mehr Tools.
- Abhängigkeit von HashiCorp, besonders nach der Übernahme durch IBM 2024.
ISRG und Nomad
Auch die Internet Security Research Group (ISRG) nutzt Nomad seit 2023. Ihr bekanntestes Projekt, „Let’s Encrypt“, hat bis 2024 über 500 Millionen Domains abgesichert.
Last but not least
Mit dem Einsatz von Nomad befinden wir uns in prominenter Gesellschaft. Eine bekannte Organisation, die seit 2023 ebenfalls auf den Einsatz von Nomad setzt, ist die Internet Security Research Group (ISRG). Ihre Mission ist es, Internetnutzer zu schützen, indem finanzielle, technologische und informationelle Hürden für ein sichereres und die Privatsphäre respektierendes Internet abgebaut werden.
Das wohl bekannteste Produkt der Internet Security Search Group ist “Let’s Encrypt”, ein Dienst, der kostenlose SSL-Zertifikate für Webseiten bereitstellt. Bis Ende 2024 hat Let’s Encrypt Zertifikate für über 500 Millionen Domains ausgestellt – das entspricht etwa 60 % aller Webseiten weltweit.
Im Jahr 2023 hat die ISRG ihre Infrastruktur auf Nomad umgestellt. Dazu heisst es im Annual Report:
The Let’s Encrypt Site Reliability Engineering (SRE) team spent a large part of 2023 on a major transition in how we run our microservices. Boulder, the software behind Let’s Encrypt, relies on many small, separate, interlinked programs. Previously, each of these microservices ran as a process in its own virtual machine (VM). For example, if we needed more Web Front Ends, we needed to build a new VM; even with some automation in place, this added a lot of structure and management overhead. The team moved to a system called Nomad which automates and orchestrates running each microservice wherever there’s room to do so. It also handles all of the network links between them. Overall this major transition improves the quality of life for our SRE team and improves the resiliency and agility of Let’s Encrypt.
Fazit
Für uns als KMU überwiegen Nomads Vorteile: einfache Handhabung, geringe Wartung, hohe Stabilität. Trotz Kubernetes-Dominanz ist Nomad die richtige Wahl für unsere Anforderungen.
Projekte, die mit Nomad erfolgreich umgesetzt wurden:
Kontakt

Frank Wettstein
Head Technology