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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow