Implementierung von Redis mit einem Master, zwei Slaves und drei Sentinels basierend auf Docker

Implementierung von Redis mit einem Master, zwei Slaves und drei Sentinels basierend auf Docker

Ich lerne derzeit etwas über Redis und Container und möchte daher Docker verwenden, um ein Redis-Master-Slave-System zu erstellen und mein Verständnis zu vertiefen. Um diesen Artikel zu lesen, benötigen Sie möglicherweise gewisse Grundlagenkenntnisse in Docker sowie ein gewisses Verständnis der Master-Slave- und Sentinel-Mechanismen von Redis.

Für dieses Experiment wurden drei Cloud-Hosts vorbereitet. Das System war Debian und die IP-Adressen waren:

35.236.172.131 ,
35.201.200.251,
34.80.172.42.

Installieren Sie zunächst Docker auf diesen drei Hosts, starten Sie dann auf jedem Host einen Redis-Container und führen Sie den Redis-Server-Dienst aus, wobei 35.236.172.131 der Master und die beiden anderen Maschinen die Slaves sind. Starten Sie abschließend auf jedem der drei Hosts einen Redis-Container und führen Sie Redis-Sentinel aus. Warum ist es immer noch ein Redis-Container? Denn Sentinel ist eigentlich ein Redis-Server, wird aber im Sentinel-Modus ausgeführt und kann nur einige von Sentinel benötigte Befehle verarbeiten.

Docker installieren

Es gibt viele Möglichkeiten, Docker zu installieren, die hier nicht vorgestellt werden. Dieses Mal verwenden wir das Skript, um Docker zu installieren. Die Installation des Debian-Systemskripts erfolgt wie folgt. Für andere Systeme können Sie die Installationsmethode auf der offiziellen Docker-Website nachlesen:

https://docs.docker.com/install/linux/docker-ce/debian/

Der folgende Befehl ändert jedoch die Bildquelle basierend auf dem Befehl der offiziellen Website in Alibaba Cloud, da inländische Bilder häufig schneller sind.

Docker für Skriptinstallation

Führen Sie den folgenden Befehl auf dem physischen Host oder dem virtuellen Cloud-Host aus, um die Docker-Installation abzuschließen. Natürlich verwende ich das Debian-System. Für andere Systeme beachten Sie bitte die Methoden auf der offiziellen Website.

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun

Starten Sie Docker CE

Docker läuft in einem Client- und Servermodell, daher müssen Sie zuerst den Docker-Server ausführen. Der Server läuft als Daemon. Docker CE ist die Community-Version von Docker.

$ sudo systemctl Docker aktivieren
$ sudo systemctl Docker starten

Überprüfen Sie, ob Docker erfolgreich installiert wurde

Der folgende Befehl ruft ein Image mit dem Namen „Hello-World“ aus dem offiziellen Docker-Repository ab und startet einen Container mit diesem Image.

$ Docker-Ausführung Hallo-Welt

Wenn das Ausführungsergebnis wie folgt lautet, wird „Hello from Docker!“ angezeigt, was bedeutet, dass Docker erfolgreich installiert wurde.

$ Docker-Ausführung Hallo-Welt
Bild „hello-world:latest“ kann lokal nicht gefunden werden
neueste: Aus Bibliothek/Hallo Welt ziehen
1b930d010525: Ziehen abgeschlossen 
Zusammenfassung: sha256:6540fc08ee6e6b7b63468dc3317e3303aae178cb8a45ed3123180328bcc1d20f
Status: Neueres Image für „Hello-World:latest“ heruntergeladen
 
Hallo von Docker!
Diese Meldung zeigt, dass Ihre Installation scheinbar ordnungsgemäß funktioniert.
 
Um diese Nachricht zu generieren, hat Docker die folgenden Schritte ausgeführt:
 1. Der Docker-Client hat den Docker-Daemon kontaktiert.
 2. Der Docker-Daemon hat das „Hallo-Welt“-Image vom Docker-Hub abgerufen.
  (amd64)
 3. Der Docker-Daemon erstellt aus diesem Image einen neuen Container, der den
  ausführbare Datei, die die Ausgabe erzeugt, die Sie aktuell lesen.
 4. Der Docker-Daemon hat die Ausgabe an den Docker-Client gestreamt, der sie dann
  zu Ihrem Terminal.
 
Wenn Sie etwas Anspruchsvolleres ausprobieren möchten, können Sie einen Ubuntu-Container mit Folgendem ausführen:
 $ Docker ausführen -it Ubuntu Bash
 
Geben Sie Bilder frei, automatisieren Sie Workflows und mehr mit einer kostenlosen Docker-ID:
 https://hub.docker.com/
 
Weitere Beispiele und Ideen finden Sie unter:
 https://docs.docker.com/get-started/

Starten Sie den Container, um Master und Slave zu erstellen

Nachdem Docker erfolgreich installiert wurde, können Sie mit der Bereitstellung des Redis-Dienstes beginnen. Ziehen Sie zuerst das Redis-Image aus dem offiziellen öffentlichen Docker-Repository, ändern Sie dann die Konfigurationsdatei des Redis-Dienstes und starten Sie schließlich den Container und den Redis-Server. Führen Sie Redis-Server auf mehreren Maschinen aus und stellen Sie eine Master-Slave-Beziehung her.

Die Master-Slave-Struktur von Redis ist die Grundlage für die Realisierung der hohen Verfügbarkeit von Redis-Cluster und Redis-Sentinel. Die Master-Slave-Struktur von Redis ermöglicht es dem Slave, die Daten auf dem Master zu replizieren. Wenn das Netzwerk zwischen dem Slave und dem Master getrennt wird, stellt der Slave automatisch die Verbindung zum Master wieder her.

Holen Sie sich das Redis-Image

Der folgende Befehl ruft die neueste offizielle Version des Redis-Images ab

$ Docker zieht Redis

Spiegel anzeigen

$ Docker-Image ls
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
redis latest bb0ab8a99fe6 vor 7 Tagen 95MB
hallo-welt neueste fce289e99eb9 vor 6 Monaten 1,84 kB

Abrufen und Ändern der Redis-Konfigurationsdatei

Redis stellt offiziell eine Beispielkonfigurationsdatei bereit, die mit dem Tool wget heruntergeladen werden kann. Ich habe den Root-Benutzer verwendet und es direkt in das /root-Verzeichnis heruntergeladen.

$ wget http://download.redis.io/redis-stable/redis.conf

Nach dem Öffnen der heruntergeladenen Datei können Sie sehen, dass es viele Konfigurationen gibt. Ich habe den Dienst nur zum Testen eingerichtet und daher nur die notwendigen Elemente geändert. Bei einer Online-Anwendung müssen sämtliche Konfigurationen entsprechend angepasst werden.

Die von den Master- und Slave-Rollen des Redis-Servers verwendeten Konfigurationsdateien unterscheiden sich geringfügig und werden im Folgenden erläutert.

Für den Master ändert die Konfigurationsdatei die folgenden Elemente

# Kommentieren Sie diese Zeile, um anzugeben, dass Redis Verbindungen von jeder IP-Adresse akzeptieren kann. # bind 127.0.0.1 
 
# Schutzmodus deaktivieren protected-mode no 
 
# Lassen Sie den Redis-Dienst im Hintergrund laufen, daemonize yes 
 
# Passwort festlegen (optional. Wenn die Passwortanforderung hier aktiviert ist, muss das Passwort der Slave-Konfiguration hinzugefügt werden. Dies ist nur eine Übungskonfiguration, daher wird keine Passwortauthentifizierung verwendet)
# requirepass Masterpasswort 
 
# Konfigurieren Sie den Protokollpfad. Um die Fehlerbehebung zu erleichtern, geben Sie das Redis-Protokolldateiverzeichnis logfile "/var/log/redis/redis.log" an.

Ändern Sie für den Slave die folgenden Elemente in der Konfigurationsdatei:

# Kommentieren Sie diese Zeile, um anzugeben, dass Redis Verbindungen von jeder IP-Adresse akzeptieren kann. # bind 127.0.0.1 
 
# Schutzmodus deaktivieren protected-mode no 
 
# Lassen Sie den Redis-Dienst im Hintergrund laufen, daemonize yes 
 
# Passwort festlegen (optional. Wenn die Passwortanforderung hier aktiviert ist, muss das Passwort der Slave-Konfiguration hinzugefügt werden)
requirepass Hauptkennwort 
 
# Legen Sie das Passwort der Master-Datenbank zur Authentifizierung fest. Wenn die Option requirepass für die Master-Datenbank aktiviert ist, müssen Sie das entsprechende Passwort masterauth <master-password> eingeben.
 
# Stellen Sie die IP-Adresse und Portnummer des Masters ein. Die Standardportnummer in der Redis-Konfigurationsdatei ist 6379
# In früheren Versionen von Redis wird dies „slaveof“ sein, was dasselbe bedeutet. Da „slave“ ein sensibles Wort ist, wird das Konzept „slave“ in späteren Versionen von Redis nicht mehr verwendet. Stattdessen wird es durch „replica“ ersetzt.
# Legen Sie 35.236.172.131 als Master und die anderen beiden Maschinen als Slaves fest. Die IP- und Portnummer sollten je nach Maschine und Konfiguration geändert werden.
Replik von 35.236.172.131 6379
 
# Konfigurieren Sie den Protokollpfad. Um die Fehlerbehebung zu erleichtern, geben Sie das Redis-Protokolldateiverzeichnis logfile "/var/log/redis/redis.log" an.

Starten des Containers

Erstellen Sie die Konfigurationsdateien auf dem Host- und Slave-Rechner entsprechend der oben beschriebenen Methode und starten Sie den Container, nachdem Sie überprüft haben, dass sie korrekt sind.

Wir geben die Containeraliase auf den drei Maschinen jeweils als redis-1, redis-2 und redis-3 an, was die Unterscheidung und Erklärung erleichtert. Docker verwendet den Parameter --name, um den Containeralias anzugeben. redis-1 ist der Alias ​​des Containers auf dem Master und redis-2 und redis-3 sind die Aliase auf den beiden Slaves.

Im Folgenden wird der Startvorgang des Containers am Beispiel des Redis-3-Containers veranschaulicht. Die Vorgänge der Container Redis-1 und Redis-2 auf den beiden anderen Maschinen sind dieselben, beachten Sie jedoch, dass die Konfigurationsdateien von Master und Slave unterschiedlich sind. Aber zuerst müssen Sie den Hauptserver starten, der der Redis-1-Container ist. Starten Sie dann Redis-2 und Redis-3.

# Führen Sie den Container zuerst im Hintergrundmodus aus. $ docker run -it --name redis-3 -v /root/redis.conf:/usr/local/etc/redis/redis.conf -d -p 6379:6379 redis /bin/bash
# Nachdem der Container erfolgreich gestartet wurde, wird eine lange Zeichenfolge mit Container-IDs gedruckt
a3952342094dfd5a56838cb6becb5faa7a34f1dbafb7e8c506e9bd7bb1c2951b
# Überprüfen Sie den Status des Containers mit dem Befehl ps. Sie können sehen, dass redis-3 gestartet wurde. $ docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
a3952342094d redis "docker-entrypoint.s..." vor 8 Minuten Vor 8 Minuten 0.0.0.0:6379->6379/tcp redis-3

Der Container wurde oben gestartet. Rufen Sie als Nächstes den Container auf und starten Sie den Redis-Server.

# Geben Sie den Container redis-3 im interaktiven Modus ein
$ docker exec -it redis-3 bash
 
# Erstellen Sie ein Protokolldateiverzeichnis $ mkdir /var/log/redis/
$ berühren /var/log/redis/redis.log
 
# Starten Sie den Redis-Server. Wenn keine Ausgabe erfolgt, ist der Server erfolgreich. $ redis-server /usr/local/etc/redis/redis.conf
 
# Starten Sie einen Redis-Client im Container $ redis-cli 
 
# Führen Sie den Info-Befehl aus, um den Serverstatus 127.0.0.1:6379> info anzuzeigen
...
# Wenn es ein Master ist, ist der Rollenwert hier „Master“, wenn es ein Slave ist, ist der Rollenwert hier „Slave“.
Rolle: Sklave
# Überprüfen Sie für den Slave auch den Attributwert master_link_status. Wenn der Wert dieses Attributs auf dem Slave aktiv ist, bedeutet dies, dass die Master-Slave-Replikation in Ordnung ist, andernfalls liegt ein Problem vor. Wenn der Slave-Status nicht aktiv ist, überprüfen Sie zuerst, ob der Host-Port eingeschränkt ist, und überprüfen Sie dann das Redis-Protokoll, um die Ursache für master_link_status: up zu finden.
...
 
# Zum Schluss den Container verlassen $ exit

Überprüfen der Master-Slave-Replikation

Nachdem der Master-Slave erfolgreich erstellt wurde, können Sie überprüfen, ob die Master-Slave-Synchronisierung erfolgreich war, indem Sie einen Schlüsselwert auf den Master schreiben, um zu sehen, ob er mit dem Slave synchronisiert wird.

# Rufen Sie den Container redis-1 im interaktiven Modus auf $ docker exec -it redis-1 bash

Führen Sie ein Redis-CLI aus und schreiben Sie einen Wert in test_key

$ redis-cli
127.0.0.1:6379> setze Testschlüssel Hallo Welt
OK

Geben Sie den Container auf einer beliebigen Slave-Maschine ein und führen Sie ein Redis-CLI aus, um den Wert dieses Schlüssels abzufragen. Wenn dieser Wert abgefragt werden kann und mit dem Wert auf dem Host übereinstimmt, bedeutet dies, dass die Master-Slave-Synchronisierung erfolgreich war. Nach dem Test war die aktive Synchronisierung erfolgreich.

127.0.0.1:6379> Testschlüssel abrufen 
"Hallo Welt"

Sentinel hinzufügen

Die Master-Slave-Struktur wird erfolgreich aufgebaut und die Systemverfügbarkeit wird höher, aber wenn der Master ausfällt, ist es notwendig, den Slave manuell auf den Master umzustellen. Diese Umschaltarbeit verschwendet nicht nur Personalressourcen, sondern hat auch die schwerwiegendere Auswirkung, dass Redis während der Master-Slave-Umschaltphase keine externen Dienste bereitstellen kann. Aus diesem Grund wurde das Sentinel-System entwickelt. Nach einem Master-Ausfall kann der Sentinel automatisch ein Failover durchführen, einen der Slaves zum Upgrade auf den Master auswählen und den ursprünglichen Master weiterhin überwachen. Wenn der ursprüngliche Master wiederhergestellt ist, wird er als Slave des neuen Masters verwendet.

Der Sentinel überwacht zunächst den Master, ruft die Informationen des Slaves ab, indem er den Info-Befehl an den Master sendet, und überwacht dann auch den Slave. Darüber hinaus abonnieren die Sentinels wie der Master __sentinel__:hello . Wenn ein neuer Sentinel beitritt, sendet er eine Nachricht an diesen Kanal. Diese Nachricht enthält die IP- und Portinformationen des Sentinels. Dann erhalten andere Sentinels, die den Kanal abonniert haben, diese Nachricht und wissen, dass ein neuer Sentinel beigetreten ist.

Diese Wächter stellen Verbindungen zu den neu hinzugekommenen Wächtern her und die Anführerwahl muss über diese Verbindung erfolgen. Diese Beziehung kann durch das folgende Diagramm beschrieben werden:

Abrufen und Ändern der Sentinel-Konfigurationsdatei

Holen Sie sich die Sentinel-Konfigurationsdatei über den Befehl wget

wget http://download.redis.io/redis-stable/sentinel.conf

Ändern Sie die folgenden Konfigurationsdateien

# Lassen Sie den Sentinel-Dienst im Hintergrund laufen daemonize yes 
 
# Ändern Sie den Protokolldateipfad logfile "/var/log/redis/sentinel.log"
 
# Ändern Sie den überwachten Haupt-Redis-Server# Die letzten 2 bedeuten, dass ein Failover durchgeführt wird, nachdem die beiden Maschinen festgestellt haben, dass der aktive und der passive Server offline sind.
Sentinel-Monitor Mymaster 35.236.172.131 6379 2

Starten des Containers

Ähnlich wie beim Starten des Redis-Containers starten Sie einen Container mit dem Alias ​​Sentinel

$ docker run -it --name sentinel -p 26379:26379 -v /root/sentinel.conf:/usr/local/etc/redis/sentinel.conf -d redis /bin/bash

Sentinel ausführen

# Geben Sie den Container ein$ docker exec -it sentinel bash
 
# Protokollverzeichnis und Dateien erstellen $ mkdir /var/log/redis
$ berühren /var/log/redis/sentinel.log
 
# Starten Sie Sentinel redis-sentinel /usr/local/etc/redis/sentinel.conf 
 
# Überprüfen Sie die Protokolle, der Sentinel hat erfolgreich einen Master und zwei Slaves überwacht 18:X 11 Jul 2019 13:25:55.416 # +monitor master mymaster 35.236.172.131 6379 quorum 2
18:X 11. Juli 2019 13:25:55.418 * +slave slave 35.201.200.251:6379 35.201.200.251 6379 @ mymaster 35.236.172.131 6379
18:X 11. Juli 2019 13:25:55.421 * +slave slave 34.80.172.42:6379 34.80.172.42 6379 @ mymaster 35.236.172.131 6379

Führen Sie Sentinel auf den anderen beiden Computern auf die gleiche Weise in einem Container aus. Sentinel verwendet dieselbe Konfigurationsdatei.

Überprüfen des Failovers

Um die automatische Master-Slave-Umschaltung im Rahmen des Sentinel-Mechanismus zu überprüfen, beenden wir den Redis-Prozess auf dem Master.

Nach einigen Sekunden wird ein weiterer Slave zum Master aktualisiert. Im Experiment wird die dritte Maschine, Redis-3, zum Master aktualisiert. Sie können den Befehl „info“ verwenden, um abzufragen und zu sehen, dass die Rolle des Redis-3-Servers zum Master geworden ist. Dies zeigt an, dass der automatische Master-Slave-Wechsel erfolgreich war.

127.0.0.1:6379>Informationen
...
# Replikation
Rolle: Meister
...

Starten Sie dann den zuvor beendeten Master-Server neu. Überprüfen Sie nach dem Neustart mit dem Befehl „info“, dass er nun ein Slave-Server von Redis-3 ist.

Das folgende Protokoll beschreibt, wie 35.236.172.131 als Master startet, einen Master-Sentinel für das Failover wählt, das Failover durchführt und eine neue Master-Slave-Beziehung herstellt.

root@4355ca3260c5:/var/log/redis# cat sentinel.log 
17:X 11. Juli 2019 13:25:55.395 # oO0OoO0OoO0Oo Redis wird gestartet oO0OoO0OoO0Oo
17:X 11. Juli 2019 13:25:55.395 # Redis-Version=5.0.5, Bits=64, Commit=00000000, geändert=0, PID=17, gerade gestartet
17:X 11 Jul 2019 13:25:55.395 # Konfiguration geladen
18:X 11. Juli 2019 13:25:55.398 * Ausführungsmodus=Sentinel, Port=26379.
18:X 11. Juli 2019 13:25:55.398 # 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.
18:X 11. Juli 2019 13:25:55.416 # Sentinel-ID ist 7d9a7877d4cffb6fec5877f605b975e00e7953c1
18:X 11. Juli 2019 13:25:55.416 # +monitor master mymaster 35.236.172.131 6379 Quorum 2
18:X 11. Juli 2019 13:25:55.418 * +slave slave 35.201.200.251:6379 35.201.200.251 6379 @ mymaster 35.236.172.131 6379
18:X 11. Juli 2019 13:25:55.421 * +slave slave 34.80.172.42:6379 34.80.172.42 6379 @ mymaster 35.236.172.131 6379
18:X 11. Juli 2019 13:26:25.460 # +sdown Slave 35.201.200.251:6379 35.201.200.251 6379 @ mymaster 35.236.172.131 6379
18:X 11. Juli 2019 14:04:23.390 * +sentinel sentinel 09aa7d2098ad2dc52e6e07d7bc6670f00f5ff3e3 172.17.0.3 26379 @ mymaster 35.236.172.131 6379
18:X 11. Juli 2019 14:04:25.418 * +sentinel-invalid-addr sentinel 09aa7d2098ad2dc52e6e07d7bc6670f00f5ff3e3 172.17.0.3 26379 @ mymaster 35.236.172.131 6379
18:X 11. Juli 2019 14:04:25.418 * +sentinel sentinel 7d9a7877d4cffb6fec5877f605b975e00e7953c1 172.17.0.3 26379 @ mymaster 35.236.172.131 6379
18:X 11. Juli 2019 14:04:25.456 * +sentinel-address-switch master mymaster 35.236.172.131 6379 IP 172.17.0.3 Port 26379 für 09aa7d2098ad2dc52e6e07d7bc6670f00f5ff3e3
18:X 11. Juli 2019 14:08:34.338 * +sentinel-invalid-addr sentinel 09aa7d2098ad2dc52e6e07d7bc6670f00f5ff3e3 172.17.0.3 26379 @ mymaster 35.236.172.131 6379
18:X 11. Juli 2019 14:08:34.338 * +sentinel sentinel 28d3c0e636fa29ac9fb5c3cc2be00432c1b0ead9 172.17.0.3 26379 @ mymaster 35.236.172.131 6379
18:X 11. Juli 2019 14:08:36.236 * +sentinel-address-switch master mymaster 35.236.172.131 6379 IP 172.17.0.3 Port 26379 für 09aa7d2098ad2dc52e6e07d7bc6670f00f5ff3e3
18:X 11. Juli 2019 14:11:12.151 # +sdown master mymaster 35.236.172.131 6379
18:X 11. Juli 2019 14:11:12.214 # +odown master mymaster 35.236.172.131 6379 #Quorum 4/2
18:X 11. Juli 2019 14:11:12.214 # +neue-Epoche 1
18:X 11. Juli 2019 14:11:12.214 # +try-failover master mymaster 35.236.172.131 6379
18:X 11 Jul 2019 14:11:12.235 # +vote-for-leader 7d9a7877d4cffb6fec5877f605b975e00e7953c1 1
18:X 11 Jul 2019 14:11:12.235 # 7d9a7877d4cffb6fec5877f605b975e00e7953c1 hat für 7d9a7877d4cffb6fec5877f605b975e00e7953c1 gestimmt 1
18:X 11 Jul 2019 14:11:12.235 # 28d3c0e636fa29ac9fb5c3cc2be00432c1b0ead9 hat für 7d9a7877d4cffb6fec5877f605b975e00e7953c1 gestimmt 1
18:X 11 Jul 2019 14:11:12.235 # 09aa7d2098ad2dc52e6e07d7bc6670f00f5ff3e3 hat für 7d9a7877d4cffb6fec5877f605b975e00e7953c1 gestimmt 1
18:X 11 Jul 2019 14:11:12.294 # +gewählter-Leader Master Mymaster 35.236.172.131 6379
18:X 11. Juli 2019 14:11:12.294 # +failover-state-select-slave master mymaster 35.236.172.131 6379
18:X 11. Juli 2019 14:11:12.394 # -failover-abort-no-good-slave master mymaster 35.236.172.131 6379
18:X 11 Jul 2019 14:11:12.453 # Nächste Failover-Verzögerung: Ich werde kein Failover vor Do Jul 11 ​​​​14:17:12 2019 starten
18:X 11. Juli 2019 14:11:13.050 # +config-update-from sentinel 28d3c0e636fa29ac9fb5c3cc2be00432c1b0ead9 172.17.0.3 26379 @ mymaster 35.236.172.131 6379
18:X 11. Juli 2019 14:11:13.050 # +switch-master mymaster 35.236.172.131 6379 34.80.172.42 6379
18:X 11. Juli 2019 14:11:13.050 * +slave slave 35.201.200.251:6379 35.201.200.251 6379 @ mymaster 34.80.172.42 6379
18:X 11. Juli 2019 14:11:13.050 * +slave slave 35.236.172.131:6379 35.236.172.131 6379 @ mymaster 34.80.172.42 6379
18:X 11. Juli 2019 14:11:43.077 # +sdown Slave 35.236.172.131:6379 35.236.172.131 6379 @ mymaster 34.80.172.42 6379
18:X 11. Juli 2019 14:11:43.077 # +sdown Slave 35.201.200.251:6379 35.201.200.251 6379 @ mymaster 34.80.172.42 6379
18:X 12. Juli 2019 01:54:05.142 # -sdown Slave 35.236.172.131:6379 35.236.172.131 6379 @ mymaster 34.80.172.42 6379
18:X 12. Juli 2019 01:54:15.087 * +in Slave umwandeln Slave 35.236.172.131:6379 35.236.172.131 6379 @ mymaster 34.80.172.42 6379

Zusammenfassen

Redis erreicht eine hohe Verfügbarkeit durch Master-Slave-Replikation, aber wenn ein Fehler auftritt, ist ein manuelles Master-Slave-Umschalten erforderlich, was ineffizient ist. Der Sentinel-Mechanismus realisiert das automatische Umschalten zwischen Redis-Master und -Slave, verbessert die Verfügbarkeit des Redis-Clusters und verbessert die Failover-Effizienz des Redis-Clusters.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • So erstellen Sie einen Redis-Cluster mit Docker
  • Implementierung eines Redis Master-Slave-Clusters basierend auf Docker
  • Erstellen eines Redis-Clusters auf Docker
  • So stellen Sie eigenständigen Pulsar und geclustertes Redis mit Docker bereit (Entwicklungsartefakt)
  • Verwenden Sie Docker, um einen Redis-Master-Slave-Replikationscluster zu erstellen
  • Beispiel für den schnellen Aufbau eines Redis-Clusters mit Docker
  • Implementierung der Clusterkonstruktion im Docker Redis5.0-Cluster
  • So konfigurieren Sie den Redis-Sentinel-Modus in Docker (auf mehreren Servern)
  • Bringen Sie Ihnen bei, wie Sie in 5 Minuten den Redis-Clustermodus und den Sentinelmodus mit Docker erstellen

<<:  Vue implementiert Beispielcode für Links- und Rechtsgleiteffekte

>>:  Detaillierte Erläuterung zur Verwendung von grep zum Abrufen von MySQL-Fehlerprotokollinformationen

Artikel    

Artikel empfehlen

Implementierung des Wasserfall-Layouts im Uni-App-Projekt

GitHub-Adresse, Sie können es mit einem Stern mar...

Sechs Methoden zur Nginx-Optimierung

1. Optimieren Sie die Nginx-Parallelität [root@pr...

Tipps zur Verwendung von DIV-Containern mit fester Höhe in IE6 und IE7

Es gibt viele Unterschiede zwischen IE6 und IE7 in...

Beispielcode zur Realisierung eines Buchseitenumblättereffekts mit CSS3

Wichtige Erkenntnisse: 1. Beherrschung der CSS3-3...

Tutorial zum Deaktivieren und Aktivieren von Triggern in MySQL [Empfohlen]

Bei der Verwendung von MySQL werden häufig Trigge...

Verwendung regulärer Ausdrücke in CSS-Selektoren

Ja, CSS hat auch reguläre Ausdrücke (Amen) Zwei l...

So implementieren Sie Element-Floating und Clear-Floating mit CSS

Grundlegende Einführung in das Floating Im Standa...

5 MySQL-GUI-Tools, die Ihnen bei der Datenbankverwaltung empfohlen werden

Es gibt viele Datenbankverwaltungstools für MySQL...

Natives JS zur Implementierung des Spiels 2048

2048 Minispiel, zu Ihrer Information, der spezifi...

CSS-Vererbungsmethode

Gegeben sei ein Div mit folgendem Hintergrundbild...

Der gesamte Prozessbericht der Vue-Exportfunktion für Excel

Inhaltsverzeichnis 1. Front-End-Führungsprozess: ...

Mehrere gängige Methoden zum Festlegen der Ankerpositionierung in HTML

Mir sind mehrere Möglichkeiten bekannt, die Ankerp...