Beispiel für die Verwendung von Docker Compose zum Erstellen einer Consul-Clusterumgebung

Beispiel für die Verwendung von Docker Compose zum Erstellen einer Consul-Clusterumgebung

Grundbegriffe des Konsuls

Servermodus und Clientmodus
Servermodus und Clientmodus sind Typen von Konsulknoten; Client bezieht sich nicht auf den Benutzerclient.

  • Der Servermodus bietet eine Datenpersistenzfunktion.
  • Der Clientmodus bietet keine Persistenz und funktioniert tatsächlich nicht, sondern leitet lediglich die Anforderung des Benutzerclients an den Knoten im Servermodus weiter. Daher können Sie sich den Client-Modus-Knoten als LB (Load Balance) vorstellen, der nur für die Anforderungsweiterleitung verantwortlich ist.
  • Normalerweise muss die Anzahl der Servermodusknoten als Vielfaches konfiguriert werden, beispielsweise 3 oder 5. Es gibt keine Begrenzung für die Anzahl der Knoten im Client-Modus.

Kommandozeilenparameter zum Starten des Servermodus

  • -server: gibt den aktuell verwendeten Servermodus an. Wenn nicht angegeben, gibt es den Clientmodus an.
  • -node: Gibt den Namen des aktuellen Knotens im Cluster an.
  • -config-dir: Gibt den Pfad der Konfigurationsdatei zur Definition des Dienstes an. Auf alle Dateien unter diesem Pfad, die mit .json enden, wird zugegriffen. Der Standardwert lautet: /consul/config.
  • -data-dir: Das Verzeichnis, in dem Consul Daten speichert; der Standardwert ist: /consul/data.
  • -datacenter: Name des Rechenzentrums. Der Standardwert ist dc1.
  • -ui: Verwenden Sie die integrierte Web-Benutzeroberfläche von Consul.
  • -join: tritt einem vorhandenen Cluster bei.
  • -enable-script-checks: Überprüft, ob der Dienst aktiv ist, ähnlich wie beim Aktivieren von Heartbeat.
  • -bind: An die IP-Adresse des Servers binden.
  • -client: Der Client kann auf die IP-Adresse zugreifen. Der Standardwert ist: „127.0.0.1“, was bedeutet, dass nur Loopback-Verbindungen erlaubt sind.
  • -bootstrap-expect: Die erwartete Anzahl von Serverknoten in einem Rechenzentrum. Beim Start wartet Consul, bis diese Anzahl von Servern erreicht ist, bevor der gesamte Cluster gebootet wird. Der Wert dieses Parameters muss auf allen Serverknoten im selben Rechenzentrum konsistent sein.

Hier ist ein weiterer Parameter – Bootstrap – der verwendet wird, um zu steuern, ob ein Server im Bootstrap-Modus ausgeführt wird: Wenn sich ein Server im Bootstrap-Modus befindet, kann er sich selbst zum Leader wählen. Beachten Sie, dass sich in einem Rechenzentrum nur ein Server im Bootstrap-Modus befinden kann. Daher kann dieser Parameter im Allgemeinen nur in einer Entwicklungsumgebung mit nur einem Server verwendet werden. In einer Cluster-Produktionsumgebung mit mehreren Servern kann dieser Parameter nicht verwendet werden. Andernfalls treten Dateninkonsistenzen auf, wenn sich mehrere Server als Leader markieren. Darüber hinaus kann dieses Flag nicht gleichzeitig mit -bootstrap-expect angegeben werden.

Verwenden Sie Docker-Compose, um die folgende Consul-Clusterumgebung zu erstellen

  • Der Cluster enthält drei Server: node1, node2, node3
  • Der Cluster enthält einen Client: Knoten4; und stellt auf dem Client Web-UI-Zugriffsdienste bereit. .

Bearbeiten Sie die Datei docker-compose.yml

Version: '2'
Netzwerke:
  vonfn:
 
Leistungen:
  Konsul1:
    Bild: Konsul
    Containername: Knoten1
    Befehl: Agent -Server -Bootstrap-Expect=3 -Node=Node1 -Bind=0.0.0.0 -Client=0.0.0.0 -Datacenter=DC1
    Netzwerke:
      - vonfn
 
  Konsul2:
    Bild: Konsul
    Containername: Knoten2
    Befehl: Agent -Server -retry-join=Knoten1 -Knoten=Knoten2 -bind=0.0.0.0 -Client=0.0.0.0 -Datacenter=DC1
    hängt ab von:
        -Konsul1
    Netzwerke:
      - vonfn
 
  Konsul3:
    Bild: Konsul
    Containername: Knoten3
    Befehl: Agent -Server -retry-join=Knoten1 -Knoten=Knoten3 -bind=0.0.0.0 -Client=0.0.0.0 -Datacenter=DC1
    hängt ab von:
        -Konsul1
    Netzwerke:
      - vonfn
 
  Konsul4:
    Bild: Konsul
    Containername: Knoten4
    Befehl: Agent -retry-join=node1 -node=ndoe4 -bind=0.0.0.0 -client=0.0.0.0 -datacenter=dc1 -ui 
    Häfen:
      8500: 8500
    hängt ab von:
        -Konsul2
        -Konsul3
    Netzwerke:
      - vonfn

Starten des Dienstes

$ Docker-Compose nach oben
$ docker exec -t node1 Konsul-Mitglieder
Knoten Adresse Status Typ Build Protokoll DC Segment
Knoten1 172.21.0.2:8301 aktiver Server 1.4.0 2 dc1 <alle>
node2 172.21.0.4:8301 alive Server 1.4.0 2 dc1 <alle>
node3 172.21.0.3:8301 alive Server 1.4.0 2 dc1 <alle>
ndoe4 172.21.0.5:8301 aktiver Client 1.4.0 2 dc1 <Standard>

Besuchen Sie http://127.0.0.1:8500

Beispiel für das Registrierungskonfigurationscenter

Frühling:
  Anwendung:
    Name: Cloud-Zahlungsdienst
  ####Konsul-Registrierungszentrum-Adresswolke:
    Konsul:
      aktiviert: true
      Host: 127.0.0.1
      Port: 8500
      Entdeckung:
        Hostname: 127.0.0.1
        bevorzugte IP-Adresse: wahr
        Dienstname: ${spring.application.name}
        #healthCheckInterval: 15s
        Instanz-ID: ${spring.application.name}-8002
        aktiviert: true

KV-Zugangsbeispiel

$ docker exec -t node4 consul kv put foo "Hallo foo"
$ docker exec -t node4 consul kv put foo/foo1 "Hallo foo1"
$ docker exec -t node4 consul kv put foo/foo2 "Hallo foo2"
$ docker exec -t node4 consul kv put foo/foo21 "Hallo foo21"
$ docker exec -t node4 consul kv get foo
Hallo foo
$ docker exec -t node4 consul kv get -detailliert foo/foo1
Index erstellen 124
Flaggen 0
Schlüssel foo/foo1
Sperrindex 0
Index ändern 124
Sitzung -
Wert Hallo foo1
$ docker exec -t node4 consul kv get -keys -separator="" foo
foo
foo/foo1
foo/foo2
foo/foo2/foo21
$ docker exec -t node4 consul kv get kein echter Schlüssel
Fehler! Kein Schlüssel vorhanden unter: kein echter Schlüssel

Oben finden Sie Einzelheiten zur Verwendung von Docker Compose zum Erstellen einer Consul-Clusterumgebung. Weitere Informationen zur Docker Compose-Clusterumgebung finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Docker Consul-Übersicht und Schritte zum Erstellen einer Clusterumgebung (grafische Erklärung)

<<:  Weitere beliebte und kreative Beispiele für Webdesign mit dunklem Hintergrund

>>:  Lernen Sie, benutzerdefinierte Hooks in React zu erstellen

Artikel empfehlen

Beispielcode für die benutzerdefinierte Scroll-Ansicht des WeChat-Applets

Miniprogramm Benutzerdefinierte Scroll-View-Bildl...

JS 4 super praktische Tipps zur Verbesserung der Entwicklungseffizienz

Inhaltsverzeichnis 1. Kurzschlussurteil 2. Option...

Die Bedeutung des Statuscodes im HTTP-Protokoll

Ein Statuscode, der eine vorläufige Antwort anzei...

vue.js lädt Bilder entsprechend der Bild-URL herunter

Als ich kürzlich an einem Frontend-Docking-Funkti...

So verstehen Sie die JS-Funktion Anti-Shake und Funktionsdrosselung

Inhaltsverzeichnis Überblick 1. Funktion Entprell...

Vorgang zur Zeitzonenanpassung im Docker-Container

Wie kann ich überprüfen, ob die Zeitzone des Dock...

So implementieren Sie einen variablen Ausdrucksselektor in Vue

Inhaltsverzeichnis Definieren der HTML-Struktur E...

CSS3 Flexible Box Flex, um ein dreispaltiges Layout zu erreichen

Wie der Titel schon sagt: Die Höhe ist bekannt, d...

Zusammenfassung häufig verwendeter Escape-Zeichen in HTML

Die in HTML häufig verwendeten Escape-Zeichen wer...

MySQL etabliert eine effiziente Indexbeispielanalyse

Dieser Artikel beschreibt anhand von Beispielen, ...

So überwachen Sie Array-Änderungen in Vue

Inhaltsverzeichnis Vorwort Quellcode Wo beginne i...

Eine vollständige Liste gängiger Linux-Systembefehle für Anfänger

Das Erlernen von Linux-Befehlen stellt für die me...

Lösen Sie das Problem des unzureichenden Docker-Festplattenspeichers

Nachdem der Server, auf dem sich Docker befindet,...