Docker
Konsul in Docker 1.12 Schwarm laufen lassen
Suche…
Führen Sie Konsul in einem Docker 1.12-Schwarm aus
Dies setzt voraus, dass das offizielle Konsul-Docker-Image den Konsul im Cluster-Modus in einem Docker-Schwarm mit dem neuen Schwarm-Modus in Docker 1.12 ausführt. Dieses Beispiel basiert auf http://qnib.org/2016/08/11/consul-service/ . Kurz gesagt besteht die Idee darin, zwei Docker-Schwarmdienste zu verwenden, die miteinander kommunizieren. Dadurch wird das Problem gelöst, dass Sie die IPS der einzelnen Konsulcontainer nicht im Voraus kennen können und Sie sich auf die Docking-Swarm-Dockingstationen verlassen können.
Dies setzt voraus, dass Sie bereits über einen Docker 1.12-Schwarmcluster mit mindestens drei Knoten verfügen.
Sie können einen Protokolltreiber auf Ihren Docker-Daemons konfigurieren, damit Sie sehen können, was passiert. Ich habe den syslog-Treiber dafür verwendet: setze die Option --log-driver=syslog
auf dockerd.
Erstellen Sie zunächst ein Overlay-Netzwerk für Konsul:
docker network create consul-net -d overlay
Booten Sie jetzt den Cluster mit nur einem Knoten (der Standardwert --replicas ist 1):
docker service create --name consul-seed \
-p 8301:8300 \
--network consul-net \
-e 'CONSUL_BIND_INTERFACE=eth0' \
consul agent -server -bootstrap-expect=3 -retry-join=consul-seed:8301 -retry-join=consul-cluster:8300
Sie sollten jetzt einen 1-Knoten-Cluster haben. Rufen Sie jetzt den zweiten Dienst auf:
docker service create --name consul-cluster \
-p 8300:8300 \
--network consul-net \
--replicas 3 \
-e 'CONSUL_BIND_INTERFACE=eth0' \
consul agent -server -retry-join=consul-seed:8301 -retry-join=consul-cluster:8300
Sie sollten jetzt einen Konsul-Cluster mit vier Knoten haben. Sie können dies überprüfen, indem Sie einen der Docker-Container ausführen:
docker exec <containerid> consul members