Was ist Redis Cluster? Redis Cluster ist eine von Redis bereitgestellte verteilte Datenbanklösung. Der Cluster teilt Daten durch Sharding und bietet Replikations- und Failover-Funktionen. Knoten Ein Redis-Cluster besteht normalerweise aus mehreren Knoten. Zu Beginn ist jeder Knoten unabhängig von den anderen. Sie befinden sich alle in einem Cluster, der nur sich selbst enthält. Um einen wirklich funktionierenden Cluster zu bilden, müssen wir die unabhängigen Knoten zu einem Cluster mit mehreren Knoten verbinden. Cluster-Konfiguration Konfigurationsdateien Laden Sie die Konfigurationsdatei herunter: https://raw.githubusercontent.com/antirez/redis/5.0/redis.conf Passen Sie die CLUSTER-Knotenkonfiguration an # Cluster aktivieren cluster-enabled yes # Cluster-Konfigurationsdatei cluster-config-file nodes-6379.conf # Clusterknoten-Timeout Clusterknoten-Timeout 15000 Docker erstellt schnell einen Redis-Cluster Redis installieren Referenzartikel: https://www.jb51.net/article/150054.htm Vorbereitung ├── Konf │ ├── redis.conf │ └── sentinel.conf ├── Redis │ ├── Daten_6379 │ ├── Daten_6380 │ ├── Daten_6381 │ ├── Daten_6382 │ ├── Daten_6383 │ └── Daten_6384 └── Skripte ├── cluster.sh ├── ausführen.sh └── sentinel.sh Skriptdatei „run.sh“ #!/usr/bin/env bash setze -e # Skript aktuelles Verzeichnis cPath=$(cd $(dirname "$0") || exit; pwd) # Stammverzeichnis dirPath=$(dirname "$cPath") # Holen Sie sich den Port port="$1" wenn [[ ! "$port" ]]; dann Port = 6379 fi # Erstellen Sie ein Datenverzeichnis mkdir -p "$dirPath"/redis/data_"$port" # Löschen Sie den gestarteten Dienst containerId=$(docker ps -a | grep "redis_$port" | awk -F' ' '{print $1}') wenn [[ "$containerId" ]]; dann docker rm -f ${containerId} > /dev/null fi # Starten Sie den Dienst containerName=redis_"$port" docker run -itd --privileged=true -p "$port":6379 --name ${containerName} \ -v="$dirPath"/conf/redis.conf:/etc/redis/redis.conf \ -v="$dirPath"/redis/data_"$port":/Daten \ redis \ redis-server /etc/redis/redis.conf > /dev/null # Holen Sie sich die Container-IP-Adresse dockerIp=$(docker inspect -f "{{.NetworkSettings.IPAddress}}" "$containerName") # Holen Sie sich den Startstatus des Containers isRunning=$(docker inspect -f "{{.State.Running}}" "$containerName") wenn [[ "$isRunning" == "true" ]]; dann echo "Container: $containerName - IP: $dockerIp - Erfolgreich gestartet" fi Skriptdatei cluster.sh #!/usr/bin/env bash setze -e # Skript aktuelles Verzeichnis cPath=$(cd $(dirname "$0") || exit; pwd) # Starten Sie den Cluster mit der Nummer num="$1" wenn [[ ! "$num" ]]; dann Zahl = 6 fi sPort=6378 für((i=1;i<=$num;i++)); machen sh ${cPath}/run.sh $(($sPort+$i)) Erledigt Starten des Dienstes Führen Sie die Skriptdatei aus und erstellen Sie standardmäßig 6 Knoten sh-Skripte/Cluster.sh Skript gibt Ergebnisse zurück
Führen Sie Docker PS aus, um zu überprüfen, ob der Start erfolgreich war. root@DESKTOP-Q13EI52:~/docker-config/redis# docker ps CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN c0601df1a456 redis "docker-entrypoint.s..." vor 27 Sekunden Aktiv 26 Sekunden 0.0.0.0:6384->6379/tcp redis_6384 6fecf70465b8 redis "docker-entrypoint.s..." vor 27 Sekunden Aktiv seit 26 Sekunden 0.0.0.0:6383->6379/tcp redis_6383 1af15e90b7a0 redis "docker-entrypoint.s..." vor 28 Sekunden Aktiv seit 27 Sekunden 0.0.0.0:6382->6379/tcp redis_6382 6c495f31a5df redis "docker-entrypoint.s..." vor 28 Sekunden Aktiv 28 Sekunden 0.0.0.0:6381->6379/tcp redis_6381 e54fd9fd0550 redis "docker-entrypoint.s..." vor 29 Sekunden Aktiv seit 28 Sekunden 0.0.0.0:6380->6379/tcp redis_6380 be92ad2f7046 redis "docker-entrypoint.s..." vor 29 Sekunden Aktiv 29 Sekunden 0.0.0.0:6379->6379/tcp redis_6379 Bisher wurden sechs unabhängige Clusterknoten erstellt, die jedoch noch nicht richtig funktionieren. Erstellen eines Clusters Diesen Teil können Sie überspringen, ich möchte nur Ärger vermeiden Holen Sie sich die IP-Adressen aller Container, die vom Container redis_ gestartet wurden docker inspect -f "{{.NetworkSettings.IPAddress}}:6379" `docker ps | grep redis_ | awk -F' ' '{print $1}'` | sort |xargs | sed ‚s/ /, /g‘ # Ergebnis zurückgeben# 172.17.0.2:6379, 172.17.0.3:6379, 172.17.0.4:6379, 172.17.0.5:6379, 172.17.0.6:6379, 172.17.0.7:6379 Erste Ausführung der Clustererstellung ./redis-cli --cluster erstellen 172.17.0.2:6379, 172.17.0.3:6379, 172.17.0.4:6379, 172.17.0.5:6379, 172.17.0.6:6379, 172.17.0.7:6379 --cluster-replicas 1 Ausgabe 1 >>> Hash-Slot-Zuweisung auf 6 Knoten wird durchgeführt … Master[0] -> Steckplätze 0 - 5460 Master[1] -> Steckplätze 5461 - 10922 Master[2] -> Plätze 10923 - 16383 Replikat 172.17.0.6:6379 zu 172.17.0.2:6379 hinzufügen Replikat 172.17.0.7:6379 zu 172.17.0.3:6379 hinzufügen Replikat 172.17.0.5:6379 zu 172.17.0.4:6379 hinzufügen M: e8da1fef656984de3ec2a677edc8d9c48d01cd95 172.17.0.2:6379 Steckplätze:[0-5460] (5461 Steckplätze) Master M: 68b925ab0fbbc1a632c1754587fb6dad3fa14c91 172.17.0.3:6379 Steckplätze:[5461-10922] (5462 Steckplätze) Master M: 0a46ab2f6d176738b55fe699c2df1c34f8200d06 172.17.0.4:6379 Steckplätze:[10923-16383] (5461 Steckplätze) Master S: bd3064ad5297dfc258e9236943455c589be8b2a3 172.17.0.5:6379 Replikate 0a46ab2f6d176738b55fe699c2df1c34f8200d06 S: f1d8c897882d29e6538b1158525493b3b782289a 172.17.0.6:6379 Replikate e8da1fef656984de3ec2a677edc8d9c48d01cd95 S: 619e1cb52f39e07b321719b77fc3631fa6293cef 172.17.0.7:6379 Replikate 68b925ab0fbbc1a632c1754587fb6dad3fa14c91 Kann ich die obige Konfiguration festlegen? (Geben Sie „Ja“ ein, um zu akzeptieren): Eingabe: ja, die Slots werden gleichmäßig verteilt >>> Knotenkonfiguration aktualisiert >>> Jedem Knoten eine andere Konfigurationsepoche zuweisen >>> Senden von CLUSTER MEET-Nachrichten zum Beitritt zum Cluster Warten auf den Beitritt zum Cluster ..... >>> Clusterprüfung durchführen (mit Knoten 172.17.0.2:6379) M: e8da1fef656984de3ec2a677edc8d9c48d01cd95 172.17.0.2:6379 Steckplätze:[0-5460] (5461 Steckplätze) Master 1 zusätzliche Replik(en) S: f1d8c897882d29e6538b1158525493b3b782289a 172.17.0.6:6379 Steckplätze: (0 Steckplätze) Slave Replikate e8da1fef656984de3ec2a677edc8d9c48d01cd95 S: bd3064ad5297dfc258e9236943455c589be8b2a3 172.17.0.5:6379 Steckplätze: (0 Steckplätze) Slave Replikate 0a46ab2f6d176738b55fe699c2df1c34f8200d06 M: 0a46ab2f6d176738b55fe699c2df1c34f8200d06 172.17.0.4:6379 Steckplätze:[10923-16383] (5461 Steckplätze) Master 1 zusätzliche Replik(en) S: 619e1cb52f39e07b321719b77fc3631fa6293cef 172.17.0.7:6379 Steckplätze: (0 Steckplätze) Slave Replikate 68b925ab0fbbc1a632c1754587fb6dad3fa14c91 M: 68b925ab0fbbc1a632c1754587fb6dad3fa14c91 172.17.0.3:6379 Steckplätze:[5461-10922] (5462 Steckplätze) Master 1 zusätzliche Replik(en) [OK] Alle Knoten stimmen der Slot-Konfiguration zu. >>> Nach freien Plätzen suchen... >>> Slot-Abdeckung prüfen... [OK] Alle 16384 Slots abgedeckt. Herstellen einer Verbindung mit einem Cluster Verbindung über Client herstellen redis-cli -c <Anschluss> Führen Sie den Befehl aus: 127.0.0.1:6379> Cluster-Informationen cluster_state: ok Zugewiesene Clusterslots: 16384 cluster_slots_ok:16384 cluster_slots_pfail:0 Fehler bei Clusterslots: 0 Bekannte Clusterknoten: 6 Clustergröße: 3 cluster_current_epoch:6 cluster_meine_Epoche:1 cluster_stats_messages_ping_sent:104 cluster_stats_messages_pong_sent:120 cluster_stats_messages_sent:224 cluster_stats_messages_ping_received:115 cluster_stats_messages_pong_received:104 cluster_stats_messages_meet_received:5 Empfangene Clusterstatistiknachrichten: 224 Wenn Sie „ Client-Konsole: 127.0.0.1:6379> Cluster-Hilfe 1) CLUSTER <Unterbefehl> arg arg ... arg. Unterbefehle sind: 2) ADDSLOTS <Slot> [Slot ...] – Dem aktuellen Knoten Slots zuweisen. 3) BUMPEPOCH – Erweitern Sie die Cluster-Konfigurationsepoche. 4) COUNT-failure-reports <node-id> – Gibt die Anzahl der Fehlerberichte für <node-id> zurück. 5) COUNTKEYSINSLOT <Slot> – Gibt die Anzahl der Schlüssel im <Slot> zurück. 6) DELSLOTS <Slot> [Slot ...] – Löscht Slot-Informationen aus dem aktuellen Knoten. 7) FAILOVER [erzwingen|übernehmen] – Den aktuellen Replikationsknoten zum Master heraufstufen. 8) FORGET <Knoten-ID> – Entfernt einen Knoten aus dem Cluster. 9) GETKEYSINSLOT <Slot> <Anzahl> – Gibt die vom aktuellen Knoten in einem Slot gespeicherten Schlüsselnamen zurück. 10) FLUSHSLOTS – Löscht die eigenen Slot-Informationen des aktuellen Knotens. 11) INFO – Gibt Informationen zum Cluster zurück. 12) KEYSLOT <Schlüssel> – Gibt den Hash-Slot für <Schlüssel> zurück. 13) MEET <ip> <port> [Bus-Port] – Verbindet Knoten zu einem funktionierenden Cluster. 14) MYID – Gibt die Knoten-ID zurück. 15) NODES – Gibt die Clusterkonfiguration zurück, die vom Knoten gesehen wird. Ausgabeformat: 16) <id> <ip:port> <flags> <master> <pings> <pongs> <epoch> <link> <slot> ... <slot> 17) REPLICATE <Knoten-ID> – Aktuellen Knoten als Replikat der <Knoten-ID> konfigurieren. 18) RESET [hard|soft] – Aktuellen Knoten zurücksetzen (Standard: soft). 19) SET-config-epoch <Epoche> – Konfigurationsepoche des aktuellen Knotens festlegen. 20) SETSLOT <Slot> (importieren|migrieren|stabil|Knoten <Knoten-ID>) – Slot-Status festlegen. 21) REPLICAS <Knoten-ID> – Gibt <Knoten-ID> Replikate zurück. 22) SAVECONFIG – Erzwingt das Speichern der Clusterkonfiguration auf der Festplatte. 23) SLOTS – Gibt Informationen zu Slot-Bereichszuordnungen zurück. Jeder Bereich besteht aus: 24) Start-, End-, Master- und Replikat-IP-Adressen, Ports und IDs Zeigen Sie die vom Client bereitgestellten Cluster-bezogenen Befehle an: Cluster Manager-Befehle: Erstellen Sie Host1:Port1 ... HostN:PortN --cluster-replicas <Argument> Host:Port prüfen --cluster-search-mehrere-Besitzer Info Host:Port Host:Port reparieren --cluster-search-mehrere-Besitzer Reshard-Host:Port --cluster-from <Argument> --cluster-to <Argument> --cluster-slots <Argument> --cluster-ja --cluster-timeout <Argument> --cluster-pipeline <arg> --cluster-replace Host:Port neu ausbalancieren --cluster-weight <Knoten1=w1...KnotenN=wN> --cluster-use-empty-masters --cluster-timeout <Argument> --cluster-simulate --cluster-pipeline <arg> --cluster-threshold <Argument> --cluster-replace Knoten hinzufügen neuer_Host: neuer_Port bestehender_Host: bestehender_Port --cluster-slave --cluster-master-id <arg> del-node Host:Port Knoten-ID Host aufrufen:Port-Befehl arg arg .. arg Setze-Timeout Host:Port Millisekunden Host importieren:Port --cluster-from <Argument> --cluster-copy --cluster-replace Dies ist das Ende dieses Artikels zum schnellen Erstellen eines Redis-Clusters mit Docker. Weitere Informationen zum Erstellen eines Redis-Clusters mit Docker 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 Diskussion der Unterschiede zwischen Schleifen in JavaScript
1. ip_hash: ip_hash verwendet einen Quelladressen...
Wenn wir den Inhalt einer archivierten oder kompr...
Die Verwendung der MySQL Master-Slave-Replikation...
Inhaltsverzeichnis 1. Verwenden Sie die UUID-Funk...
MySQL-Version: MySQL Community Server 5.7.17, ins...
Inhaltsverzeichnis JVM-Klassenlader Tomcat-Klasse...
Vor Kurzem hat das Projekt die Umgebung gewechsel...
Inhaltsverzeichnis Prozesskommunikation Bidirekti...
Das Erstellen neuer Images aus vorhandenen Images...
In diesem Artikel wird der spezifische JavaScript...
Einfache Anwendungsbereitstellung 1. Verzeichniss...
Beispielverwendung Code kopieren Der Code lautet w...
Ich habe MySQL vorher nicht sehr oft verwendet un...
Da PostgreSQL kompiliert und installiert ist, müs...
Das Anzeigen und Interpretieren von Informationen...