Detaillierte Erläuterung des Master-Slave-Konfigurationstutorials von Redis unter Docker

Detaillierte Erläuterung des Master-Slave-Konfigurationstutorials von Redis unter Docker

1. Ziehen Sie das Redis-Image

docker pull redis

2. Starten Sie drei Redis-Containerdienste und verwenden Sie die Ports 6379, 6380 und 6381.

docker run --name redis-6379 -p 6379:6379 -d redis
docker run --name redis-6380 -p 6380:6379 -d redis
docker run --name redis-6381 -p 6381:6379 -dredis

3. Container ansehen

[tcy@tcy1 ~]$ docker ps -a
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
a9fa77adc598 daocloud.io/library/redis "docker-entrypoint.s vor 2 Stunden Up 2 Stunden 0.0.0.0:6381->6379/tcp redis-6381   
6ee2f2f007e6 daocloud.io/library/redis "docker-entrypoint.s vor 2 Stunden Up 2 Stunden 0.0.0.0:6380->6379/tcp redis-6380   
ab54741166e1 daocloud.io/library/redis "docker-entrypoint.s vor 3 Stunden Aktiv 3 Stunden 0.0.0.0:6379->6379/tcp redis-6379

4. Testcontainer, Erfolg

docker exec -it ab54741166e1 redis-cli: Geben Sie den Container ein [root@tcy1 tcy]# docker exec -it ab54741166e1 redis-cli
127.0.0.1:6379> setze b tcy
OK
127.0.0.1:6379> Holen Sie sich b
"tcy"
127.0.0.1:6379> beenden[root@tcy1 tcy]#

5. Starten Sie die Redis-Clusterkonfiguration

5.1. Überprüfen Sie die IP-Adresse des Container-Intranets

[root@tcy1 tcy]# docker inspect a9fa77adc598

Bildbeschreibung hier einfügen

Die Intranet-IP-Adressen der drei Redis sind:

redis-6379: 172.17.0.1:6379
redis-6380: 172.17.0.2:6379
redis-6381:172.17.0.3:6379

5.2. Rufen Sie den Docker-Container auf und überprüfen Sie die aktuelle Redis-Rolle (Master oder Slave).

[root@tcy1 tcy]# docker exec -it ab54741166e1 /bin/bash
root@ab54741166e1:/Daten# redis-cli
127.0.0.1:6379> Info-Replikation
# Replikation
Rolle: Meister
verbundene_Slaves:0
master_replid:d43d1ae8cde6cb084220e18b926aba79e0bb2504
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
zweiter_Repl_Offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379> beenden
root@ab54741166e1:/data# beenden 
Ausfahrt

Derzeit befinden sich alle drei im Master-Zustand

5.3. Verwenden Sie den Befehl redis-cli, um den Host von redis-6380 und redis-6381 auf 172.17.0.1:6379 zu ändern

[root@tcy1 tcy]# docker exec -it a9fa77adc598 /bin/bash //redis-6380
root@a9fa77adc598:/Daten# redis-cli
127.0.0.1:6379> SLAVEVON 172.17.0.1 6379
OK
127.0.0.1:6379> beenden
root@a9fa77adc598:/Daten# beenden
Ausfahrt
[root@tcy1 tcy]# docker exec -it 6ee2f2f007e6 /bin/bash //redis-6381
root@6ee2f2f007e6:/Daten# redis-cli
127.0.0.1:6379> SLAVEVON 172.17.0.1 6379
OK
127.0.0.1:6379> beenden

5.4. Überprüfen Sie, ob redis-6379 bereits 2 Slaves hat, connected_slaves: 2, ja

[root@tcy1 tcy]# docker exec -it ab54741166e1 /bin/bash
root@ab54741166e1:/Daten# redis-cli
127.0.0.1:6379> Info-Replikation
# Replikation
Rolle: Meister
verbundene_Slaves:2
Slave0:IP=172.17.0.3,Port=6379,Status=online,Offset=378,Lag=1
Slave1:IP=172.17.0.2,Port=6379,Status=online,Offset=378,Lag=0
master_replid:ce193b15cfd57f7dc3ccfbf2a4aef6156b131e6d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:378
zweiter_Repl_Offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:378
127.0.0.1:6379> beenden
root@ab54741166e1:/data# beenden
Ausfahrt

5.5. Sentinel konfigurieren

Geben Sie die drei Redis-Container zur Konfiguration ein und erstellen Sie die Datei sentinel.conf im Stammverzeichnis des Containers

Der Dateiinhalt ist: sentinel monitor mymaster 172.17.0.1 6379 1

[root@tcy1 tcy]# docker exec -it a9fa77adc598 /bin/bash
root@a9fa77adc598:/data# cd / && touch sentinel.conf 
root@a9fa77adc598:/# vim /sentinel.conf

Wenn: bash: vim: Befehl nicht gefunden

Lösung: 1. apt-get update 2. apt-get install vim

Starten Sie abschließend den Redis Sentinel:

root@a9fa77adc598:/# redis-sentinel /sentinel.conf
342:X 24 Jun 11:37:58.934 # oO0OoO0OoO0Oo Redis wird gestartet oO0OoO0OoO0Oo
342:X 24. Juni 11:37:58.957 # Redis Version=4.0.10, Bits=64, Commit=00000000, geändert=0, PID=342, gerade gestartet
342:X 24 Jun 11:37:58.958 # Konfiguration geladen
342:X 24. Juni 11:37:58.959 # Sie haben eine maximale Anzahl von Clients von 10000 angefordert, wofür mindestens 10032 Datei-Deskriptoren erforderlich sind.
342:X 24. Juni 11:37:58.959 # Der Server kann die maximale Anzahl geöffneter Dateien aufgrund eines Betriebssystemfehlers nicht auf 10032 setzen: Vorgang nicht zulässig.
342:X 24 Jun 11:37:58.960 # Die derzeit maximal geöffneten Dateien sind 4096. maxclients wurde auf 4064 reduziert, um das niedrige ulimit auszugleichen. Wenn Sie mehr maxclients benötigen, erhöhen Sie 'ulimit -n'.
        _._                         
      _.-``__ ''-._                       
   _.-`` `. `_. ''-._ Redis 4.0.10 (00000000/0) 64 Bit
 .-`` .-```. ```\/ _.,_ ''-._                  
 ( ' , .-` | `, ) Ausführung im Sentinel-Modus
 |`-._`-...-` __...-.``-._|'` _.-'| Hafen: 26379
 | `-._ `._ / _.-' |
 `-._ `-._ `-./ _.-' _.-'                  
 |`-._`-._ `-.__.-' _.-'_.-'|                 
 | `-._`-._ _.-'_.-' | http://redis.io    
 `-._ `-._`-.__.-'_.-' _.-'                  
 |`-._`-._ `-.__.-' _.-'_.-'|                 
 | `-._`-._ _.-'_.-' |                 
 `-._ `-._`-.__.-'_.-' _.-'                  
   `-._ `-.__.-' _.-'                    
     `-._ _.-'                      
       `-.__.-'                        
 
342:X 24. Juni 11:37:59.068 # WARNUNG: Die TCP-Backlog-Einstellung von 511 kann nicht erzwungen werden, da /proc/sys/net/core/somaxconn auf den niedrigeren Wert von 128 eingestellt ist.
342:X 24. Juni 11:37:59.089 # Sentinel-ID ist dfd5a5bfe1036b1df3395c4ba858329034fc5b7e
342:X 24 Jun 11:37:59.091 # +monitor master mymaster 172.17.0.1 6379 Quorum 1
342:X 24. Juni 11:37:59.110 * +slave slave 172.17.0.3:6379 172.17.0.3 6379 @ mymaster 172.17.0.1 6379
342:X 24. Juni 11:37:59.115 * +Slave Slave 172.17.0.2:6379 172.17.0.2 6379 @ mein Master 172.17.0.1 6379
 
342:X 24. Juni 11:39:27.601 * +sentinel sentinel ba9b0d0539d8273edfcbd922fe138f50daa78bbb 172.17.0.2 26379 @ mymaster 172.17.0.1 6379
342:X 24. Juni 11:41:59.144 * +sentinel sentinel f0510f8582b72c056531f219397ed8826683e665 172.17.0.1 26379 @ mymaster 172.17.0.1 6379

Öffnen Sie zur einfacheren Beobachtung mehrere Fenster.

Bildbeschreibung hier einfügen

Sentinel Sentinel-Konfiguration abgeschlossen

5.6 Testen

Meister schließen

[tcy@tcy1 ~]$ Docker-Stop ab54741166e1
ab54741166e1

Zu diesem Zeitpunkt wählen die verbleibenden beiden Slaves automatisch einen neuen Master, und hier wird 172.17.0.2 als Master gewählt.

Bildbeschreibung hier einfügen

Überprüfen Sie 172.17.0.2, es ist der Host geworden.

[root@tcy1 /]# docker exec -it 6ee2f2f007e6 /bin/bash
root@6ee2f2f007e6:/Daten# redis-cli
127.0.0.1:6379> Info-Replikation
# Replikation
Rolle: Meister
verbundene_Slaves:1
Slave0:IP=172.17.0.3,Port=6379,Status=online,Offset=66906,Lag=1
master_replid:5a7489c8181ddf0d73d418d30d6a4c8e039198ba
master_replid2:ce193b15cfd57f7dc3ccfbf2a4aef6156b131e6d
master_repl_offset:67041
zweiter_Repl_Offset:65534
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:85
repl_backlog_histlen:66957
127.0.0.1:6379>

Zusammenfassen

Oben ist die vom Herausgeber eingeführte Master-Slave-Konfiguration von Redis unter Docker. Ich hoffe, sie ist für alle hilfreich. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten!

Das könnte Sie auch interessieren:
  • Implementierung eines Redis Master-Slave-Clusters basierend auf Docker
  • Detaillierte Erläuterung der Redis-Master-Slave-Replikationspraxis mit Docker
  • So verwenden Sie Docker zum Erstellen eines Redis-Master-Slaves
  • Verwenden Sie Docker, um einen Redis-Master-Slave-Replikationscluster zu erstellen
  • CentOS 6 verwendet Docker, um ein Beispiel für den Betrieb einer Redis-Master-Slave-Datenbank bereitzustellen
  • Beispielpraxis zum Erstellen von Redis Master-Slave + Sentinel basierend auf Docker

<<:  So verwenden Sie „Explain“, um den SQL-Ausführungsplan in MySql abzufragen

>>:  So verwenden Sie vue3 zum Erstellen einer Materialbibliothek

Artikel empfehlen

Kennen Sie die Bedeutung von Sonderzeichen in URLs?

1.# # stellt eine Position auf einer Webseite dar...

Detaillierte Erklärung des Befehls mkdir beim Linux-Lernen

Inhaltsverzeichnis Vorwort 1. Grundkenntnisse zu ...

Einführung in HTML für Frontend-Entwickler

1 Einführung in HTML 1.1 Erste Erfahrungen mit Co...

Schritte zum Exportieren der Felder und zugehörigen Attribute von MySQL-Tabellen

Müssen die Felder und Eigenschaften der Tabelle i...

Perfekte Lösung für das Zeitzonenproblem des Docker Alpine-Image

Als ich kürzlich Docker zum Bereitstellen einer J...

Implementierung eines Element-Eingabefelds, das automatisch den Fokus erhält

Beim Erstellen eines Formulars in einem aktuellen...

Über React Native, das keine Verbindung zum Simulator herstellen kann

React Native kann native iOS- und Android-Apps ba...

MySQL verwendet Binlog-Protokolle zur Implementierung der Datenwiederherstellung

MySQL Binlog ist ein sehr wichtiges Protokoll in ...

Analyse der gemeinsamen Indexfunktion von MySQL und Anwendungsbeispiele

Dieser Artikel veranschaulicht anhand von Beispie...

Grundlegende Verwendung von exists, in und any in MySQL

【1】existiert Verwenden Sie eine Schleife, um die ...

Allgemeine Struktur-Tags in XHTML

Struktur Text, Kopf, HTML, Titel Text abbr, Akron...

Detaillierte Erläuterung der geplanten MySQL-Aufgaben (Ereignisereignisse)

1. Kurze Einführung in die Veranstaltung Ein Erei...