Einführung
Consul von HashiCorp ist ein vielseitiges Tool, das in modernen DevOps-Umgebungen zahlreiche Funktionen erfüllt. Es wird häufig für Service Discovery, Health Checks, Load Balancing und insbesondere als verteilter Key-Value-Speicher (KV-Speicher) eingesetzt. Der KV-Speicher in Consul eignet sich ideal zum Speichern dynamischer Konfigurationsdaten, Feature-Flags, Geheimnisse und Metadaten. Diese Daten sind in Ihrer gesamten Infrastruktur vollständig verfügbar und konsistent, sodass Dienste in einem verteilten System dynamisch darauf zugreifen können. Die Konfiguration des Consul-KV-Speichers mit Docker ermöglicht eine schnelle Bereitstellung und isolierte Umgebungen und ist somit ideal für Tests und Entwicklung.
Dieses Tutorial führt Sie durch die Einrichtung und Konfiguration eines KV-Consul-Speichers mit Docker. Am Ende verfügen Sie über eine voll funktionsfähige Docker-Konsoleninstanz mit konfigurierten und verfügbaren KV-Paaren. Diese Einrichtung ist unerlässlich für die dynamische Servicekonfiguration und das Zustandsmanagement in verteilten Systemen.
Voraussetzungen
Bevor Sie beginnen, stellen Sie bitte sicher, dass Sie Folgendes haben:
- Ein DigitalOcean Cloud-Konto.
- Ein Server, auf dem Ubuntu läuft, und ein Benutzer ohne Root-Rechte, aber mit sudo-Berechtigungen und aktivierter Firewall.
- Docker ist auf Ihrem Ubuntu-Server installiert.
- Einführung in die Linux-Befehlszeile
- Grundkenntnisse in Docker-Befehlen und Containerverwaltung.
Schritt 1 – Herunterladen des Consul-Docker-Images
Laden wir uns das offizielle Konsolen-Image von Docker Hub herunter. Dieses Image wird von HashiCorp gepflegt und enthält alles, was Sie zum Ausführen der Konsole benötigen.
Melden Sie sich an der Konsole Ihres Ubuntu Droplets an und führen Sie folgenden Befehl aus:
docker pull hashicorp/consul:latest
Output
latest: Pulling from hashicorp/consul
c8bcd218a73d: Pull complete
5f1ac8227c2a: Pull complete
c51fd79d429a: Pull complete
91eff479bde6: Pull complete
4dfcc18e51db: Pull complete
3e2a8bf39bf9: Pull complete
bd9ddc54bea9: Pull complete
2054d291fb84: Pull complete
Digest: sha256:e244c64df77ab3586f177f1692e98575086eb40343dc82a6320f5e79543490eb
Status: Downloaded newer image for hashicorp/consul:latest
docker.io/hashicorp/consul:latestSchritt 2 – Consul-Container ausführen
Nachdem das Konsolenimage geladen wurde, können Sie einen neuen Konsolencontainer starten. Dieser Container fungiert als Ihr Konsolenserver und ermöglicht Ihnen die Interaktion mit dem KV-Speicher.
Um den Container zu starten, führen Sie Folgendes aus:
docker run -d --name=consul-server -e
Output
CONSUL_BIND_INTERFACE=eth0 -p 8500:8500 -p 8600:8600/udp hashicorp/consul
c893b6707686bce8434213975a75c936b834cf25fc84d10b407a11c4fa8ca8baFolgendes bewirkt dieser Befehl:
- -d startet den Container im Hintergrundmodus.
- --name=consul-server weist dem Container einen Namen zu.
- -e CONSUL_BIND_INTERFACE=eth0 Legt die Netzwerkschnittstelle fest, an die die Konsole gebunden werden soll. Dies ist für die ordnungsgemäße Netzwerkkommunikation erforderlich.
- -p 8500:8500 ordnet die Consul-Weboberfläche und den API-Port dem Host zu.
- -p 8600:8600/udp ordnet den DNS-Dienstport für die Diensterkennung zu.
Dieser Schritt ist sehr wichtig, da er den Consul-Dienst startet, mit dem Sie den KV-Speicher konfigurieren werden.
Schritt 3 – Konsoleninstallation bestätigen
Um sicherzustellen, dass die Konsole ordnungsgemäß funktioniert, müssen Sie den Containerstatus überprüfen und auf die Konsolenschnittstelle zugreifen.
Führen Sie zunächst den Befehl docker ps aus, um alle laufenden Container aufzulisten und zu überprüfen, ob der Consul-Container ausgeführt wird.
❯ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c893b6707686 hashicorp/consul "docker-entrypoint.s…" 51 seconds ago Up 50 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp consul-serverPrüfen Sie nun, ob die Konsole verfügbar ist. Öffnen Sie dazu einen Webbrowser und rufen Sie http://localhost:8500 auf. Sie sollten die Consul-Oberfläche sehen.
Dieser Überprüfungsschritt ist wichtig, um sicherzustellen, dass Ihre Konsoleninstanz ohne Probleme läuft, bevor Sie Daten im KV-Speicher speichern (Schritt 5).
Schritt 4 – Firewall konfigurieren (optional)
Wenn Ihre Konsoleninstanz externen Zugriff benötigt (z. B. von anderen Knoten in einem Cluster), müssen Sie Ihre Firewall-Einstellungen so konfigurieren, dass der Datenverkehr auf den erforderlichen Ports zugelassen wird.
Wenn Sie beispielsweise Consul auf einer Cloud-Instanz ausführen, müssen Sie möglicherweise eingehenden Datenverkehr zu den Ports 8500 (HTTP-API) und 8600 (DNS) zulassen. Die genauen Befehle variieren je nach Ihrer Firewall-Lösung (UFW, iptables usw.).
Dieser Schritt stellt sicher, dass Ihre Konsoleninstanz von anderen Rechnern aus erreichbar ist, was für verteilte Konfigurationen unerlässlich ist.
Schritt 5 – Speichern von Schlüssel-Wert-Paaren
Sobald Consul ausgeführt wird, können Sie den KV-Speicher zum Speichern von Konfigurationsdaten verwenden. Sie können Schlüssel-Wert-Paare über die Consul-Befehlszeilenschnittstelle (CLI) oder die Weboberfläche hinzufügen.
Um ein Schlüssel-Wert-Paar über die Befehlszeile zu speichern, führen Sie folgenden Befehl aus:
docker exec -it consul-server consul kv put config/db_host
192.168.1.100
Success! Data written to: config/db_hostdocker exec -it consul-server consul kv put config/db_port 3306
Success! Data written to: config/db_portFolgendes bewirkt dieser Befehl:
- -it – Startet ein interaktives Terminal vom lokalen System zum Container.
- consul kv put – Der Befehl kv put speichert Daten unter dem angegebenen Pfad.
- config/db_host – Der Pfad, unter dem der Wert gespeichert werden soll.
- 192.168.1.100 – Wert.
Über die Weboberfläche,
- Gehen Sie zur Consul-Benutzeroberfläche (http://localhost:8500).
- Klicken Sie auf die Registerkarte “Schlüssel/Wert”.
- Erstellen Sie einen neuen Schlüssel, indem Sie auf “Erstellen” klicken.
- Geben Sie den Schlüssel (z. B. config/db_host) und den Wert (z. B. 192.168.1.100) ein.
Diese Befehle und Aktionen speichern wichtige Konfigurationsdaten, auf die Ihre Dienste zur Laufzeit dynamisch zugreifen können.
Schritt 6 – Schlüssel-Wert-Paare abrufen
Sobald Sie einige KV-Paare gespeichert haben, sollten Sie diese wiederherstellen, um sicherzustellen, dass sie korrekt gespeichert wurden.
Über die Befehlszeilenschnittstelle (CLI) können Sie mit folgendem Befehl einen Wert abrufen:
docker exec -it consul-server consul kv get config/db_host
192.168.1.100Über die Weboberfläche,
- Wechseln Sie in der Consul-Benutzeroberfläche zum Tab «Schlüssel/Wert».
- Suchen Sie den von Ihnen erstellten Schlüssel und klicken Sie darauf, um den gespeicherten Wert anzuzeigen.
Die Wiederherstellung von KV-Paaren ist ein unerlässlicher Schritt, um zu überprüfen, ob Ihre Daten ordnungsgemäß gespeichert und zugänglich sind.
Schritt 7 – Persistente Daten mithilfe von Docker-Volumes
Docker-Container sind standardmäßig ephemer, d. h. alle darin gespeicherten Daten gehen verloren, wenn der Container gelöscht wird. Um Ihre Consul-KV-Daten dauerhaft zu speichern, müssen Sie Docker-Volumes verwenden.
Den aktuellen Konsolencontainer beenden und schließen:
docker stop consul-server
docker rm consul-server Schauen Sie sich nun die Behälter an, und Sie werden feststellen, dass der Concealer nicht mehr funktioniert.
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESBinden Sie einen neuen Konsolencontainer an das Docker-Volume an:
docker run -d --name=consul-server -e
Output
CONSUL_BIND_INTERFACE=eth0 -p 8500:8500 -p 8600:8600/udp -v consul_data:/consul/data hashicorp/consul
2d2a7d3ff1911c2283e70506d68391a5cbf9c935a2ae447bfb8fa21481989ef1docker ps
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2d2a7d3ff191 hashicorp/consul "docker-entrypoint.s…" 5 seconds ago Up 4 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp consul-serverDie Option -v consul_data:/consul/data bindet ein Docker-Volume in den Container ein und stellt sicher, dass Ihr KV-Speicher im gesamten Container neu gestartet wird.
Schritt 8 – Konsole automatisch starten (optional)
Für Produktionsumgebungen empfiehlt sich die Automatisierung der Bereitstellung Ihres Consul-Containers mithilfe von Docker Compose. Docker Compose vereinfacht Docker-Anwendungen mit mehreren Containern und erleichtert die Verwaltung von Diensten.
Erstellen Sie eine docker-compose.yml-Datei mit folgendem Inhalt:
services:
consul:
image: hashicorp/consul:latest
environment:
- CONSUL_BIND_INTERFACE=eth0
volumes:
- consul_data:/consul/data
ports:
- "8500:8500"
- "8600:8600/udp"
restart: always
volumes:
consul_data:Dann führen Sie Folgendes aus:
docker-compose up -d
Output
[+] Running 2/2
✔ Network work_default Created 0.0s
✔ Container consul-server Started 0.1s docker ps
Output
WARN[0000] /Users/anandhkumar/work/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
work-consul-1 hashicorp/consul:latest "docker-entrypoint.s…" consul 40 seconds ago Up 11 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udpDieser Befehl startet Consul automatisch und stellt sicher, dass es im Fehlerfall neu gestartet wird, wodurch es robuster für den Produktiveinsatz ist.
Schritt 9 – Reinigung
Nachdem Sie Ihre Konsoleninstanz beendet haben, müssen Sie Ihre Docker-Umgebung bereinigen, um Ressourcen freizugeben.
Wir halten an und entfernen den Konsolencontainer:
docker stop consul-server
docker rm consul-server
docker psoutput
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESWenn Sie die Konsole nicht mehr benötigen, können Sie auch das Docker-Image entfernen:
docker rmi hashicorp/consul
output
hashicorp/consul@sha256:e244c64df77ab3586f177f1692e98575086eb40343dc82a6320f5e79543490eb
Deleted: sha256:eff8ccb509560987755a70df8d6c0b9410538d503d99498ae1ea9f48066b0439
Deleted: sha256:b5e6402bbb78eb061d538505a30300ef7f612104eaf0f11b17839a9b29bc5603
Deleted: sha256:1c61ada2ad8074615120d13bd805260d766ae8424cafbda4bded529d6a204d6f
Deleted: sha256:9b36da670e2a59f1d81c6e3c9d55906c576b384df51272977e5a9caea7131e74
Deleted: sha256:8c6e52c441c246f60ca146b71204b7d6511df75fa87a0dc0a0f91141964e8fd9
Deleted: sha256:1fce18208235de2be3c419764ec1d469229af5387447d21649c841632c653cef
Deleted: sha256:68e0a114c9c35b9aa8cac31fa32b27f886361bc85fcc63f34e882e9128f33a14
Deleted: sha256:3da5b888208a9b19694bfeaf8c74a432b50f44542d717c9e1f3ab273e505855a
Deleted: sha256:dea73e9287e6e2f3b7f9fcac4f20767d7badeefa24e52f990f1674e98abfa1a3
Deleted: sha256:201fa22d1f4c7d6e7ec43135c63b2260f303f4864f5eb43569faaa1731628799Durch das Aufräumen bleibt die Entwicklungsumgebung übersichtlich und es wird sichergestellt, dass Docker-Ressourcen nicht unnötig verbraucht werden.
Ergebnis
In diesem Tutorial haben Sie gelernt, wie Sie den KV-Speicher von Consul mithilfe von Docker einrichten und konfigurieren. Sie haben die Installation von Docker, das Ausführen des Consul-Containers, die Konfiguration des KV-Speichers, das Speichern von Daten mit Docker-Volumes und das Bereinigen Ihrer Umgebung behandelt. Mit diesen Schritten können Sie Consul nun verwenden, um Konfigurationsdaten in Ihren verteilten Systemen dynamisch zu verwalten und dabei die Vorteile von Docker für eine einfache Bereitstellung und Verwaltung zu nutzen.










