Wenn Sie aufgefordert werden, einen Sentinel- und Cluster-Modus-Redis für die Entwicklungsumgebung bzw. die Testumgebung einzurichten, wie lange werden Sie dafür im Normalfall brauchen? Vielleicht brauchen Sie einen Tag? 2 Stunden? Die Wahrheit ist, es kann kürzer sein. Ja, Sie haben es erraten, die Bereitstellung mit Docker dauert tatsächlich nur ein Dutzend Minuten. 1. VorbereitungZiehen Sie das Redis-ImageFühren Sie den folgenden Befehl aus: Docker-Pull Redis Das von diesem Befehl abgerufene Bild ist das offizielle Bild. Natürlich können Sie nach anderen Bildern suchen. Hier werden wir nicht näher auf die Bildsituation eingehen: 2. Stellen Sie den Redis Sentinel Master-Slave-Modus bereitWas ist der Wächtermodus? --Bitte Baidu 1. Was ist Docker Compose?Docker Compose kann als Festigung der Art und Weise und Konfiguration zum Ausführen mehrerer Container verstanden werden! Nehmen wir das einfachste Beispiel: Wenn wir einen MySQL-Container und einen Redis-Container für unseren Anwendungscontainer vorbereiten möchten, müssen wir bei jedem Start zuerst den MySQL-Container und den Redis-Container starten und dann den Anwendungscontainer ausführen. Vergessen Sie beim Erstellen des Anwendungscontainers nicht, das Containernetzwerk mit dem MySQL-Container und dem Redis-Container zu verbinden, damit die Anwendung sich mit ihnen verbinden und Daten austauschen kann. Dies reicht jedoch nicht aus. Wenn wir verschiedene Konfigurationen für den Container vorgenommen haben, speichern wir die Befehle zum Erstellen und Konfigurieren des Containers besser, damit wir sie beim nächsten Mal direkt verwenden können. Als Reaktion auf diese Situation müssen wir die in unserer Entwicklung am häufigsten verwendete Multi-Container-Definition und -Ausführungssoftware einführen, nämlich Docker Compose. 2. Schreiben Sie Reids Master-Slave Docker-Compose.ymlVersion: '3.7' Leistungen: Master: Bild: Redis Containername: Redis-Master Neustart: immer Befehl: redis-server --requirepass redispwd --appendonly yes Häfen: -6379:6379 Bände: - ./data1:/data Sklave1: Bild: Redis Containername: Redis-Slave-1 Neustart: immer Befehl: redis-server --slaveof redis-master 6379 --requirepass redispwd --masterauth redispwd --appendonly yes Häfen: -6380:6379 Bände: - ./data2:/data Sklave2: Bild: Redis Containername: Redis-Slave-2 Neustart: immer Befehl: redis-server --slaveof redis-master 6379 --requirepass redispwd --masterauth redispwd --appendonly yes Häfen: -6381:6379 Bände: - ./data3:/data Glossar: 3. Starten Sie den Master-Slave-RedisGeben Sie das Verzeichnis von docker-compose.yml ein, das Redis entspricht, und führen Sie den Befehl aus: docker-compose up -d -d bedeutet, dass es im Hintergrund ausgeführt wird. Verwenden Sie den Befehl docker ps, um die Startergebnisse anzuzeigen: Der Screenshot wird angezeigt und zeigt den erfolgreichen Vorgang an 4. Schreiben Sie Sentinel docker-compose.ymlVersion: '3.7' Leistungen: sentinel1: Bild: Redis Containername: Redis-Sentinel-1 Neustart: immer Häfen: -26379:26379 Befehl: redis-sentinel /usr/local/etc/redis/sentinel.conf Bände: - ./sentinel1.conf:/usr/local/etc/redis/sentinel.conf sentinel2: Bild: Redis Containername: Redis-Sentinel-2 Neustart: immer Häfen: -26380:26379 Befehl: redis-sentinel /usr/local/etc/redis/sentinel.conf Bände: - ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf sentinel3: Bild: Redis Containername: Redis-Sentinel-3 Häfen: -26381:26379 Befehl: redis-sentinel /usr/local/etc/redis/sentinel.conf Bände: - ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf Netzwerke: Standard: extern: Name: redis_default 5. Schreiben Sie sentinel.conf# Passen Sie den Clusternamen an, wobei 172.19.0.3 die IP-Adresse des Redis-Masters, 6379 die Portnummer des Redis-Masters und 2 die Mindeststimmenzahl ist (da es 3 Sentinels gibt, kann sie auf 2 eingestellt werden). Port 26379 dir /tmp Sentinel-Monitor Mymaster 172.19.0.3 6379 2 Sentinel nach Millisekunden ausgefallen, Mymaster 30000 Sentinel Parallel-Syncs MyMaster 1 Sentinel Auth-Pass MyMaster Redispwd Sentinel Failover-Timeout MyMaster 180000 Sentinel verweigert die Skript-Neukonfiguration, ja Kopieren Sie die obigen Dateien in drei Kopien und benennen Sie sie sentinel1.conf, sentinel2.conf und sentinel3.conf, entsprechend den Konfigurationsdateien in docker-compose.yml, und platzieren Sie sie dann im selben Verzeichnis wie Sentinels docker-compose.yml 6. Sentinel startenGeben Sie das Verzeichnis ein, in dem sich die Sentinel-Datei docker-compose.yml befindet, und führen Sie den Befehl aus: docker-compose up -d Überprüfen Sie den Container und Sie können sehen, dass der Sentinel und das Master-Slave-Redis aktiv sind. 6.1 Sentinel-Startprotokoll Wie aus dem obigen Protokoll ersichtlich ist, überwacht Sentinel die Master- und Slave-Knoten 6.2 Den Masterknoten herunterfahren Stoppen Sie den Redis-Masterknoten über den Befehl Docker stoppt Redis-Master Aus den obigen Protokollen können wir „sdown“ und „odown“ ersehen. Was bedeuten sie? 6.3 Neustart des Masterknotens Die obigen Protokolle zeigen, dass Sentinel erkennt, dass der ursprüngliche Master neu gestartet wurde, und den ursprünglichen Masterknoten in einen Slave-Knoten des neuen Masters umwandelt. 3. Stellen Sie den Redis-Clustermodus bereit1. Verzeichnisse und Dateien erstellen├── docker-compose.yml ├── redis-6371 │ ├── conf │ │ └── redis.conf │ └── Daten ├── redis-6372 │ ├── conf │ │ └── redis.conf │ └── Daten ├── redis-6373 │ ├── conf │ │ └── redis.conf │ └── Daten ├── redis-6374 │ ├── conf │ │ └── redis.conf │ └── Daten ├── redis-6375 │ ├── conf │ │ └── redis.conf │ └── Daten └── redis-6376 ├── Konf │ └── redis.conf └── Daten 2. redis.conf-KonfigurationsdateiPort 6371 Clusterfähig ja Cluster-Konfigurationsdatei nodes-6371.conf Cluster-Knoten-Timeout 5000 nur anhängen ja geschützter Modus nein erforderlich 1234 Masterauth 1234 cluster-announce-ip 10.12.12.10 # Dies ist die Host-IP Cluster-Ankündigungs-Port 6371 Cluster-Ankündigung-Bus-Port 16371 Die Konfiguration jedes Knotens erfordert lediglich eine Änderung des Ports. 3. Docker-Compose-KonfigurationsdateiVersion: "3" # Definieren Sie Dienste. Sie können mehrere Dienste haben: redis-6371: # Dienstnameimage: redis # Beim Erstellen eines Containers erforderliches Imagecontainer_name: redis-6371 # Containernamerestart: immer # Container wird immer neu gestartetvolumes: # Datenvolume, Verzeichnis mount- ./redis-6371/conf/redis.conf:/usr/local/etc/redis/redis.conf - ./redis-6371/Daten:/Daten Häfen: -6371:6371 -16371:16371 Befehl: redis-server /usr/local/etc/redis/redis.conf redis-6372: Bild: Redis Containername: redis-6372 Bände: - ./redis-6372/conf/redis.conf:/usr/local/etc/redis/redis.conf - ./redis-6372/Daten:/Daten Häfen: -6372:6372 - 16372:16372 Befehl: redis-server /usr/local/etc/redis/redis.conf redis-6373: Bild: Redis Containername: redis-6373 Bände: - ./redis-6373/conf/redis.conf:/usr/local/etc/redis/redis.conf - ./redis-6373/Daten:/Daten Häfen: -6373:6373 -16373:16373 Befehl: redis-server /usr/local/etc/redis/redis.conf redis-6374: Bild: Redis Containername: redis-6374 Neustart: immer Bände: - ./redis-6374/conf/redis.conf:/usr/local/etc/redis/redis.conf - ./redis-6374/Daten:/Daten Häfen: -6374:6374 -16374:16374 Befehl: redis-server /usr/local/etc/redis/redis.conf redis-6375: Bild: Redis Containername: redis-6375 Bände: - ./redis-6375/conf/redis.conf:/usr/local/etc/redis/redis.conf - ./redis-6375/Daten:/Daten Häfen: -6375:6375 -16375:16375 Befehl: redis-server /usr/local/etc/redis/redis.conf redis-6376: Bild: Redis Containername: redis-6376 Bände: - ./redis-6376/conf/redis.conf:/usr/local/etc/redis/redis.conf - ./redis-6376/Daten:/Daten Häfen: -6376:6376 -16376:16376 Befehl: redis-server /usr/local/etc/redis/redis.conf Verwenden Sie nach dem Schreiben docker-compose up -d, um den Container zu starten. Der Hostmodus wird hier nicht verwendet, sondern der NAT-Modus, da der Hostmodus dazu führen kann, dass externe Clients keine Verbindung herstellen können. 4. Betreten Sie den Container und erstellen Sie einen Cluster Das Obige startet nur 6 Redis-Instanzen und erstellt keinen Cluster. # Befehl zur Clustererstellung redis-cli -a 1234 --cluster create 10.35.30.39:6371 10.35.30.39:6372 10.35.30.39:6373 10.35.30.39:6374 10.35.30.39:6375 10.35.30.39:6376 --cluster-replicas 1 # Nach der Ausführung wird die folgende Ausgabe angezeigt: Warnung: Die Verwendung eines Kennworts mit der Option „-a“ oder „-u“ in der Befehlszeilenschnittstelle ist möglicherweise nicht sicher. >>> 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 10.35.30.39:6375 zu 10.35.30.39:6371 hinzufügen Replikat 10.35.30.39:6376 zu 10.35.30.39:6372 hinzufügen Replikat 10.35.30.39:6374 zu 10.35.30.39:6373 hinzufügen >>> Versuch, die Slave-Zuweisung für Anti-Affinität zu optimieren [WARNUNG] Einige Slaves befinden sich im selben Host wie ihr Master M: e9a35d6a9d203830556de89f06a3be2e2ab4eee1 10.35.30.39:6371 Steckplätze:[0-5460] (5461 Steckplätze) Master M: 0c8755144fe6a200a46716371495b04f8ab9d4c8 10.35.30.39:6372 Steckplätze:[5461-10922] (5462 Steckplätze) Master M: fcb83b0097d2a0a87a76c0d782de12147bc86291 10.35.30.39:6373 Steckplätze:[10923-16383] (5461 Steckplätze) Master S: b9819797e98fcd49f263cec1f77563537709bcb8 10.35.30.39:6374 Replikate fcb83b0097d2a0a87a76c0d782de12147bc86291 S: f4660f264f12786d81bcf0b18bc7287947ec8a1b 10.35.30.39:6375 Replikate e9a35d6a9d203830556de89f06a3be2e2ab4eee1 S: d2b9f265ef7dbb4a612275def57a9cc24eb2fd5d 10.35.30.39:6376 Replikate 0c8755144fe6a200a46716371495b04f8ab9d4c8 Kann ich die obige Konfiguration festlegen? (Geben Sie „yes“ ein, um zu akzeptieren): yes # Geben Sie hier „yes“ ein und drücken Sie die Eingabetaste, um die Master-Slave-Identität des Knotens und die Hash-Slot-Zuweisung zu bestätigen >>> 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 10.35.30.39:6371) M: e9a35d6a9d203830556de89f06a3be2e2ab4eee1 10.35.30.39:6371 Steckplätze:[0-5460] (5461 Steckplätze) Master 1 zusätzliche Replik(en) M: 0c8755144fe6a200a46716371495b04f8ab9d4c8 10.35.30.39:6372 Steckplätze:[5461-10922] (5462 Steckplätze) Master 1 zusätzliche Replik(en) S: b9819797e98fcd49f263cec1f77563537709bcb8 10.35.30.39:6374 Steckplätze: (0 Steckplätze) Slave Replikate fcb83b0097d2a0a87a76c0d782de12147bc86291 M: fcb83b0097d2a0a87a76c0d782de12147bc86291 10.35.30.39:6373 Steckplätze:[10923-16383] (5461 Steckplätze) Master 1 zusätzliche Replik(en) S: f4660f264f12786d81bcf0b18bc7287947ec8a1b 10.35.30.39:6375 Steckplätze: (0 Steckplätze) Slave Replikate e9a35d6a9d203830556de89f06a3be2e2ab4eee1 S: d2b9f265ef7dbb4a612275def57a9cc24eb2fd5d 10.35.30.39:6376 Steckplätze: (0 Steckplätze) Slave Replikate 0c8755144fe6a200a46716371495b04f8ab9d4c8 [OK] Alle Knoten stimmen der Slot-Konfiguration zu. >>> Nach freien Plätzen suchen... >>> Slot-Abdeckung prüfen... [OK] Alle 16384 Slots abgedeckt. Wenn Sie die obige Ausgabe sehen, ist die Clusterkonfiguration abgeschlossen. Und es gibt 3 Meister und 3 Sklaven. Zusammenfassen:Das Obige ist der gesamte Prozess der Bereitstellung des Sentinel-Modus und des Cluster-Modus durch Docker Compose. Redis wird in Docker bereitgestellt, das für lokale Umgebungen, Entwicklungs-, Test- und andere Umgebungen geeignet ist. Bitte verwenden Sie es in Produktionsumgebungen mit Vorsicht, es sei denn, Sie haben eine starke Kontrolle über Docker. Dies ist das Ende dieses Artikels darüber, wie Sie mit Docker in 5 Minuten den Redis-Clustermodus und den Sentinelmodus erstellen. Weitere Informationen zum Erstellen des Redis-Clustermodus und des Sentinelmodus mit Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die folgenden verwandten Artikel weiter. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Beispiel für automatischen Stoppeffekt nach Text-Scrollen
>>: Erweiterte Erklärung der Javascript-Funktionen
Die MySQL-Datenbank verfügt nicht über einen inkr...
Nachdem die Anwendung in einen Container verpackt...
Statistik der QPS-Werte der letzten N Sekunden (i...
Die bidirektionale MySQL-Sicherung wird auch als ...
Canal ist ein Open-Source-Projekt von Alibaba, da...
Inhaltsverzeichnis MySQL Truncate-Verwendung 1. T...
Es gibt drei Hauptmethoden der MySQL-Replikation:...
1. Nehmen Sie nginx als Beispiel Nginx mit dem Be...
Inhaltsverzeichnis 1. Die Rolle des Arrays: 2. De...
Heute habe ich beim Testen des Nullwertes ein kle...
Rownum ist eine einzigartige Schreibmethode in Or...
Wenn Sie beispielsweise eine neue Tabelle erstell...
Inhaltsverzeichnis 1. Verwandte Binlog-Konfigurat...
Inhaltsverzeichnis Warum brauchen wir Docker? Bei...
Dieser Artikel erläutert anhand von Beispielen di...