Erstellen eines Redis-Clusters auf Docker

Erstellen eines Redis-Clusters auf Docker

Umgebung: Docker + (Redis:5.0.5 * 3)

1. Ziehen Sie das Bild

Docker-Pull Redis: 5.0.5 

2. Erstellen Sie einen Redis-Container

Erstellen Sie drei Redis-Container:

redis-knoten1:6379

redis-knoten2:6380

redis-knoten3:6381

docker erstellen --name redis-node1 -v /data/redis-data/node1:/data -p 6379:6379 redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-1.conf

docker erstellen --name redis-node2 -v /data/redis-data/node2:/data -p 6380:6379 redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-2.conf

docker erstellen --name redis-node3 -v /data/redis-data/node3:/data -p 6381:6379 redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-3.conf 

3. Starten und erstellen Sie einen Cluster, um den Container zu starten

Starten Sie zunächst drei Redis-Container mit dem Befehl docker start :

Überprüfen Sie nach der Ausführung des Run-Befehls den Start des Containers:

Wenn die obige Situation Exited (1) 3 seconds ago eintritt, können Sie sie in docker logs anzeigen:

Wie oben gezeigt handelt es sich um ein Berechtigungsproblem. Versuchen wir, die Berechtigungen zu ändern:

chmod -R 777 /Daten

Nach erfolgreichem Start wird folgendes Bild angezeigt:

Erstellen eines Clusters

Zeigen Sie die von 3 Redis zugewiesenen IP-Knoteninformationen in Docker an:

Führen Sie „docker inspect redis-node1“ aus, um die IP-Informationen von redis-node1 abzurufen: 172.17.0.4
Führen Sie „docker inspect redis-node2“ aus, um die IP-Informationen von redis-node2 abzurufen: 172.17.0.3
Führen Sie „docker inspect redis-node3“ aus, um die IP-Informationen von redis-node3 abzurufen: 172.17.0.2

Nachdem Sie die IP-Informationen erhalten haben (die IP-Informationen jeder Person können unterschiedlich sein), geben Sie einen Container ein, um einen Cluster zu erstellen:

# Hier nehmen wir als Beispiel die Eingabe von node1 docker exec -it redis-node1 /bin/bash

# Anschließend den Befehl zur Clusterbildung ausführen (bitte entsprechend der eigenen IP-Informationen spleißen)
redis-cli --cluster erstellen 172.17.0.2:6379 172.17.0.3:6379 172.17.0.4:6379 --cluster-replicas 0 

OK, jetzt ist der Cluster erstellt. Lassen Sie ihn testen.

Testcluster

Verwenden Sie den Befehl redis-cli -c um eine Verbindung zum Clusterknoten herzustellen, und legen Sie dann den Wert fest. Nach dem Festlegen des Wertes erfolgt eine automatische Umleitung zur IP-Adresse 0,2 und der anschließende Abruf über get. Die erfolgreiche Erfassung beweist, dass der Cluster gültig ist.

4. Bestehende Probleme

Obwohl der Cluster gemäß den obigen Schritten erfolgreich erstellt wurde, gibt es noch einige Probleme. Da ip地址im Clusterknoten intern vom Docket zugewiesen wird, z. B. 172.17.0.2 , kann das Projekt, das redis集群verwendet, den Cluster nicht verwenden, da er nicht zugänglich ist, wenn sich das Projekt, das den Redis-Cluster verwendet, nicht auf demselben Server wie der Cluster befindet.

Eine Lösung besteht darin , Docker den Netzwerkverbindungstyp host模式verwenden zu lassen. Der von Docker im host模式erstellte Container hat keinen eigenen unabhängigen Netzwerk-Namespace. Er teilt sich einen Netzwerkraum mit der physischen Maschine und kann dann alle Ports und IP-Adressen der physischen Maschine gemeinsam nutzen. Dadurch kann das öffentliche Netzwerk direkt auf den Container zugreifen. Obwohl diese Methode Sicherheitsrisiken birgt, wurde bisher kein anderer praktikabler Modus gefunden.

Um das bestehende Problem zu lösen, übernehmen wir host模式erneut und erstellen den Container neu:

1. Stoppen Sie den laufenden Container

Docker stoppt Redis-Knoten1 Redis-Knoten2 Redis-Knoten3

2. Löschen Sie den zuvor erstellten Container

Docker RM Redis-Knoten1 Redis-Knoten2 Redis-Knoten3

# Löschen Sie die oben erstellte Konfigurationsdatei rm -rf /data/redis-data/node*

3. Basierend auf dem Hostmodus neu erstellen

docker erstellen --name redis-node1 --net host -v /data/redis-data/node1:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-1.conf --port 6379

docker erstellen --name redis-node2 --net host -v /data/redis-data/node2:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-2.conf --port 6380

docker erstellen --name redis-node3 --net host -v /data/redis-data/node3:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-3.conf --port 6381

Im Unterschied zum vorherigen Erstellungsbefehl wird erstens der Netzwerktyp --net als host angegeben und zweitens ist in diesem Fall keine Portzuordnung erforderlich, wie etwa -p 6379:6379 , weil der Container-Port-Dienst zu diesem Zeitpunkt extern freigegeben werden muss und daher nur die freigegebenen Ports -p 6379 , -p 6380 usw. angegeben werden müssen.

4. Starten Sie den Container und bilden Sie einen Cluster

# Startbefehl docker start redis-node1 redis-node2 redis-node3

# Geben Sie einen Container ein docker exec -it redis-node1 /bin/bash

# Einen Cluster erstellen, 10.211.55.4 ist die IP-Adresse der aktuellen physischen Maschine redis-cli --cluster create 10.211.55.4:6379 10.211.55.4:6380 10.211.55.4:6381 --cluster-replicas 0 

5. Clusterinformationen anzeigen

root@CentOS7:/data# redis-cli
127.0.0.1:6379> Clusterknoten
72c291c32815194b64d1f6d0fdf771f5cc04e14a 10.211.55.4:6380@16380 Master - 0 1590905997358 2 verbunden 5461-10922
6a595b67bbff15c94e5874c2d2cd556d6a6a6c17 10.211.55.4:6381@16381 Master - 0 1590905998362 3 verbunden 10923-16383
4e3dbdc8f835dcbc38291c88f08165ee51d53d3d 10.211.55.4:6379@16379 ich selbst, Meister - 0 1590905997000 1 verbunden 0-5460
127.0.0.1:6379>

6. Testcluster

Stellen Sie mit redis-cli -c eine Verbindung zum Cluster her, set einen Wert fest und rufen Sie den Wert dann von anderen Knoten ab, um zu prüfen, ob dies erfolgreich war:

root@CentOS7:/data# redis-cli -c
127.0.0.1:6379> setze wxiaowei 123
-> Umgeleitet zum Slot [7515] bei 10.211.55.4:6380
OK
10.211.55.4:6380> hol wxiaowei
"123" 

Zu diesem Zeitpunkt wurde單副本模式des auf Docker basierenden Redis-Clusters erstellt. Die drei Redis in diesem Artikel verwenden alle den Masterknoten. Die hohe Verfügbarkeit mehrerer Kopien und die Master-Slave-Architektur werden später ergänzt.

Der gewünschte Master-Slave-Cluster: https://www.jb51.net/article/212285.htm

Dies ist das Ende dieses Artikels zum Erstellen eines Redis-Clusters auf Docker. Weitere Informationen zum Erstellen eines Docker-Redis-Clusters finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Umgebungskonstruktion von Docker zum Erstellen eines Redis-Clusters
  • Beispiel für den Aufbau eines Redis-Sentinel-Clusters basierend auf Docker
  • Methode zum Erstellen eines Redis-Clusters basierend auf Docker
  • Verwenden Sie Docker, um einen Redis-Master-Slave-Replikationscluster zu erstellen
  • Bringen Sie Ihnen bei, wie Sie in 5 Minuten den Redis-Clustermodus und den Sentinelmodus mit Docker erstellen
  • Implementierung eines Redis Master-Slave-Clusters basierend auf Docker
  • So stellen Sie einen Redis 6.x-Cluster über Docker bereit
  • So erstellen Sie schnell einen Redis-Cluster mit Docker-Swarm

<<:  CSS3 implementiert einen Fußbereich, der unten fixiert ist (immer unten, egal wie hoch die Seite ist).

>>:  So zeigen Sie ein kleines Symbol vor der Browser-URL an

Artikel empfehlen

Vue erzielt einen nahtlosen Karusselleffekt

In diesem Artikel wird der spezifische Code von V...

Prinzip und Anwendungsbeispiele des URL-Umschreibmechanismus von Nginx

Durch das Umschreiben der URL lässt sich die bevo...

Schritte zum Erstellen eines CentOS-Containers über Docker

Inhaltsverzeichnis Vorwort Erstellen Sie ein Brüc...

So ändern Sie die CentOS-Serverzeit auf die Peking-Zeit

1. Ich habe ein VPS- und CentOS-System gekauft un...

Util-Modul im node.js-Tutorial-Beispiel – detaillierte Erklärung

Inhaltsverzeichnis Ausgehend von der Typbeurteilu...

Der Unterschied zwischen ENTRYPOINT und CMD in Dockerfile

Im Lernprogramm zum Docker-System haben wir geler...

base target="" steuert den Ziel-Open-Frame des Links

<base target=_blank> ändert den Zielrahmen d...

Das Bildelement img hat in IE6 zusätzlichen Leerraum

Beim Erstellen eines DIV+CSS-Layouts einer Seite ...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.22 winx64

Das Tutorial zur Datenbankinstallation von MySQL-...

Detaillierte Erläuterung des MySQL-Trigger-Trigger-Beispiels

Inhaltsverzeichnis Was ist ein Auslöser Erstellen...

Vue implementiert Sternebewertung mit Dezimalstellen

In diesem Artikel wird der spezifische Code von V...

So installieren Sie den Kibana-Tokenizer im Docker-Container

Schritt: 1. Erstellen Sie eine neue Datei docker-...

MySql 8.0.11-Winxp64 (kostenlose Installationsversion) Konfigurations-Tutorial

1. Entpacken Sie das Zip-Paket in das Installatio...

vue cli3 implementiert die Schritte der Verpackung nach Umgebung

Das mit CLI3 erstellte Vue-Projekt wird als Nullk...