Implementierung eines Redis Master-Slave-Clusters basierend auf Docker

Implementierung eines Redis Master-Slave-Clusters basierend auf Docker

In letzter Zeit haben mich viele Freunde als Freund hinzugefügt, um nach dem Problem beim Einrichten eines Redis-Clusters zu fragen. Ich denke, mit dem Artikel „Einrichten eines Redis-Clusters basierend auf Docker“, den ich zuvor geschrieben habe, stimmt etwas nicht. Deshalb habe ich ein paar Minuten damit verbracht, den vorherigen Artikel durchzulesen und die folgenden Fragen zusammengefasst:

Die Anzahl der Redis ist zu gering und es werden nur 3 Instanzen erstellt. Da es nur 3 Instanzen gibt, können alle nur Masterknoten sein und die Master-Slave-Beziehung des Clusters kann nicht widergespiegelt werden. Wie erstellt man einen Master-Slave-Cluster? Wie werden Slave-Knoten zugewiesen?

Basierend auf dem vorherigen Artikel möchte ich diese Fragen kurz durchgehen. Dieser Artikel basiert auf der Version Docker + Redis 5.0.5 und erstellt im Clustermodus einen Master-Slave-Cluster mit 6 Redis-Instanzen. Natürlich wird im Artikel auf die entsprechenden Parameterbeschreibungen hingewiesen, sodass die Methode auch bei der Erstellung eines Clusters mit 9 Instanzen dieselbe ist.

1. Ziehen Sie das Redis-Image

Basierend auf Redis: Version 5.0.5, führen Sie die folgenden Anweisungen aus:

Docker-Pull Redis: 5.0.5

2. Erstellen Sie 6 Redis-Container

Erstellen Sie 6 Redis-Container:

  • redis-knoten1:6379
  • redis-knoten2:6380
  • redis-knoten3:6381
  • redis-knoten4:6382
  • redis-node5:6383
  • redis-node6:6384

Der Ausführungsbefehl lautet wie folgt:

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

docker erstellen --name redis-node4 --net host -v /data/redis-data/node4:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-4.conf --port 6382

docker erstellen --name redis-node5 --net host -v /data/redis-data/node5:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-5.conf --port 6383

docker erstellen --name redis-node6 --net host -v /data/redis-data/node6:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-6.conf --port 6384

Einige Parametererklärungen:

  • --cluster-enabled: ob der Cluster aktiviert werden soll, Wert auswählen: ja, nein
  • --cluster-config-file Konfigurationsdatei.conf: Knoteninformationen angeben, automatisch generiert
  • --cluster-node-timeout Millisekundenwert: Konfigurieren Sie das Timeout für die Knotenverbindung
  • --appendonly: ob Persistenz aktiviert werden soll, Wert auswählen: ja, nein

Screenshot des ausgeführten Befehls:

3. Starten Sie den Redis-Container

Der Ausführungsbefehl lautet wie folgt:

Docker starten Redis-Knoten1 Redis-Knoten2 Redis-Knoten3 Redis-Knoten4 Redis-Knoten5 Redis-Knoten6

Der Start-Screenshot sieht wie folgt aus:

4. Erstellen Sie einen Redis-Cluster

Geben Sie eine beliebige Redis-Instanz ein:

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

Führen Sie den Befehl des Komponentenclusters aus:

# 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 10.211.55.4:6382 10.211.55.4:6383 10.211.55.4:6384 --cluster-replicas 1

Der Screenshot des Ausführungsbefehls sieht wie folgt aus:

Überprüfen Sie nach der erfolgreichen Erstellung die Clusterknoteninformationen über Redis-CLI:

root@CentOS7:/data# redis-cli
127.0.0.1:6379> Clusterknoten

Der Screenshot des Ausführungsbefehls sieht wie folgt aus:

5. Informationen zum Aufbau eines Redis-Clusters

Kehren wir zum Befehl zum Erstellen des Clusters zurück:

redis-cli --cluster erstellen 10.211.55.4:6379~6384 --cluster-replicas 1

Bitte achten Sie besonders auf diesen Parameter --cluster-replicas 1. Die Zahl nach dem Parameter gibt das Master-Slave-Verhältnis an. Die 1 hier bedeutet beispielsweise, dass das Master-Slave-Verhältnis 1:1 beträgt. Was bedeutet das?

Das heißt, 1 Masterknoten entspricht mehreren Slaveknoten. Es gibt jetzt 6 Instanzen, daher beträgt die Master-Slave-Zuordnung 3 Masterknoten und 3 Slaveknoten.

Um die Robustheit des Clusters sicherzustellen, müssen mindestens drei Masterknoten vorhanden sein.

Was wäre wenn --cluster-replicas 2?

Dann beträgt das Master-Slave-Verhältnis 1:2, das heißt, 1 Masterknoten entspricht 2 Slaveknoten.

Das heißt: 3 (Master) + 6 (Slave) = 9 Redis-Instanzen.

Was passiert, wenn weniger als 9 Redis-Instanzen vorhanden sind, der Parameter aber als 2 angegeben ist?

Die Fehlermeldung lautet:

Die Eingabeaufforderung ist sehr klar: Der Redis-Cluster benötigt mindestens 3 Masterknoten. Dann müssen 6 Slave-Knoten vorhanden sein, sodass letztendlich mindestens 9 Knoten erforderlich sind.

OK, ich werde nicht mit der Anforderung von mindestens 3 Masterknoten fortfahren, aber ich denke, 4 Masterknoten und 2 Slaveknoten sollten ausreichen, oder?

4 Masternodes überzeugen:

# Geben Sie eine gestartete Redis-Instanz ein. Hier nehmen wir die Instanz redis-node1 als Beispiel. docker exec -it redis-node1 /bin/bash

Führen Sie den Befehl aus, um einen Cluster zu erstellen:

redis-cli --cluster erstellen 10.211.55.4:6379 10.211.55.4:6380 10.211.55.4:6381 10.211.55.4:6382 --cluster-replicas 0

Geben Sie 4 Master ohne Slaves an, sodass Sie 4 Master haben:

Was ist mit den verbleibenden zwei Slave-Knoten? Manuell hinzufügen.

Wie hinzufügen? Manuell hinzufügen!

Sehen Sie die IDs dieser Masterknoten? Weisen Sie ihnen einfach Slaves zu.

Führen Sie weiterhin die folgenden Befehle aus:

redis-cli --cluster add-node 10.211.55.4:6383 10.211.55.4:6379 --cluster-slave --cluster-master-id b0c32b1dae9e7b7f7f4b74354c59bdfcaa46f30a

redis-cli --cluster add-node 10.211.55.4:6384 10.211.55.4:6379 --cluster-slave --cluster-master-id 111de8bed5772585cef5280c4b5225ecb15a582e

Die beiden Redis-Instanzen sind an andere Masterknoten angeschlossen:

Schließlich rufen wir redis-cli auf und zeigen die Knoteninformationen über die Clusterknoten an:

Dies ist das Ende dieses Artikels über die Implementierung eines Redis-Master-Slave-Clusters basierend auf Docker. Weitere relevante Inhalte zum Docker Redis-Master-Slave-Cluster finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

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
  • Erstellen eines Redis-Clusters auf Docker
  • So stellen Sie einen Redis 6.x-Cluster über Docker bereit
  • So erstellen Sie schnell einen Redis-Cluster mit Docker-Swarm

<<:  Detaillierte Erklärung des Problems bei der Kombination von CSS-Ellipsen und -Auffüllungen

>>:  Grundkenntnisse in HTML: ein erstes Verständnis von Webseiten

Artikel empfehlen

Spezifische Verwendung interner temporärer MySQL-Tabellen

Inhaltsverzeichnis UNION Tabelleninitialisierung ...

Problemaufzeichnung bei der Verwendung des Vue+Echarts-Diagramms

Vorwort echarts ist mein am häufigsten verwendete...

Erläuterung synthetischer React-Ereignisse

Inhaltsverzeichnis Klicken Sie zunächst auf das E...

Implementierung des Nginx Intranet Standalone Reverse Proxy

Inhaltsverzeichnis 1 Nginx Installation 2 Nginx k...

So stellen Sie nginx mit Docker bereit und ändern die Konfigurationsdatei

Nginx mit Docker bereitstellen, so einfach ist da...

So lösen Sie das Problem, das Root-Passwort von Mysql auf dem Mac zu vergessen

Ich habe MySQL auf meinem Computer längere Zeit n...

Das ganz links stehende Übereinstimmungsprinzip des MySQL-Datenbankindex

Inhaltsverzeichnis 1. Gemeinsame Indexbeschreibun...

So konfigurieren Sie Benutzerrollenberechtigungen in Jenkins

Die Jenkins-Konfiguration von Benutzerrollenberec...