Redis bietet Hochverfügbarkeit über Redis Sentinel verteiltes System. Sentinel hilft bei der Überwachung von Redis Instanzen, erkennt Ausfälle und führt Rollenwechsel automatisch durch, wodurch ein Redis ermöglicht wird Bereitstellung, um jegliche Art von Ausfällen zu widerstehen.
Es bietet die Überwachung von Redis Instanzen (Master und Replikate), unterstützt die Benachrichtigung anderer Dienste/Prozesse oder des Systemadministrators über ein Skript, automatisches Failover, um eine Replik auf einen Master hochzustufen, wenn der Master ausfällt, und bietet Konfiguration für Clients, um den aktuellen Master zu erkennen, der einen bestimmten Dienst anbietet .
Dieser Artikel zeigt, wie Sie Redis einrichten für Hochverfügbarkeit mit Redis Sentinel in CentOS 8 , einschließlich der Konfiguration von Sentinels, der Überprüfung des Einrichtungsstatus und dem Testen eines Sentinels Failover.
Voraussetzung:
- Einrichten der Redis-Replikation (mit deaktiviertem Cluster-Modus) in CentOS 8 – Teil 1
Einrichtung der Testumgebung
Master Server and Sentinel1: 10.42.0.247 Redis Replica1 and Sentinel2: 10.42.0.21 Redis Replica2 and Sentinel3: 10.42.0.34
Logisches Diagramm zur Einrichtung von Redis Sentinel
Laut Redis Sentinel Dokumentation benötigt man mindestens drei Sentinel Instanzen für eine robuste Bereitstellung. In Anbetracht unserer obigen Einrichtung, wenn der master schlägt fehl, Sentinels2 und Sentinel3 stimmt dem Fehler zu und kann ein Failover autorisieren, sodass der Client-Betrieb fortgesetzt werden kann.
Schritt 1:Redis Sentinel-Dienst starten und aktivieren
1. Unter CentOS 8 , der Redis-Wächter Der Dienst wird zusammen mit Redis installiert server (was wir bereits im Redis Replication Setup getan haben).
Um die Redis zu starten Sentinel-Dienst und ermöglichen Sie ihm, beim Systemstart automatisch zu starten, verwenden Sie das folgende systemctl Befehle. Bestätigen Sie außerdem, dass es betriebsbereit ist, indem Sie seinen Status überprüfen (tun Sie dies auf allen Knoten):
# systemctl start redis-sentinel # systemctl enable redis-sentinel # systemctl status redis-sentinel
Starten Sie den Redis Sentinel-Dienst
Schritt 2:Konfigurieren von Redis Sentinel auf allen Redis-Knoten
2. In diesem Abschnitt erklären wir, wie Sie Sentinel konfigurieren auf allen unseren Knoten. Der Wächter Der Dienst hat ein ähnliches Konfigurationsformat wie Redis Server. Verwenden Sie zum Konfigurieren die Datei /etc/redis-sentinel.conf selbstdokumentierte Konfigurationsdatei.
Erstellen Sie zunächst eine Sicherungskopie der Originaldatei und öffnen Sie diese zur Bearbeitung.
# cp /etc/redis-sentinel.conf /etc/redis-sentinel.conf.orig # vi /etc/redis-sentinel.conf
3. Standardmäßig überwacht Sentinel Port 26379 , überprüfen Sie dies auf allen Instanzen. Beachten Sie, dass Sie die Bindung verlassen müssen Parameter auskommentiert (oder auf 0.0.0.0 gesetzt ).
port 26379
Legen Sie Sentinel Listen Interface und Port fest
4. Sagen Sie es als Nächstes Sentinel um unseren Meister zu überwachen , und es in „Objectively Down“ zu berücksichtigen ” Geben Sie nur an, wenn mindestens 2 Kollegiumswächter zustimmen. Sie können „mymaster“ ersetzen ” mit einem benutzerdefinierten Namen.
#On Master Server and Sentinel1 sentinel monitor mymaster 127.0.0.1 6379 2 #On Replica1 and Sentinel2 sentinel monitor mymaster 10.42.0.247 6379 2 #On Replica1 and Sentinel3 sentinel monitor mymaster 10.42.0.247 6379 2
Setzen Sie Redis Master auf Monitor
Wichtig :Die Sentinel-Monitor-Anweisung MUSS vor dem Sentinel-auth-pass platziert werden -Anweisung, um den Fehler „Kein solcher Master mit dem angegebenen Namen. zu vermeiden ” beim Neustart des Sentinel-Dienstes.
5. Wenn die Redis Master zu überwachen hat ein Passwort (in unserem Fall hat der Master), geben Sie das Passwort ein, damit sich die Sentinel-Instanz bei der geschützten Instanz authentifizieren kann.
sentinel auth-pass mymaster [email protected]
Legen Sie das Master-Auth-Passwort fest
6. Legen Sie dann die Anzahl der Millisekunden fest, die der Master (oder ein angeschlossenes Replikat oder ein Wächter) unerreichbar sein soll, um dies in „Subjectively Down“ zu berücksichtigen ” Zustand.
Die folgende Konfiguration bedeutet, dass der Master als fehlerhaft betrachtet wird, sobald wir innerhalb von 5 Sekunden keine Antwort von unseren Pings erhalten (1 Sekunde entspricht 1000 Millisekunden).
sentinel down-after-milliseconds mymaster 5000
Ruhezeit für Master festlegen
7. Stellen Sie als nächstes das Failover-Timeout in Millisekunden ein, das viele Dinge definiert (lesen Sie die Dokumentation des Parameters in der Konfigurationsdatei).
sentinel failover-timeout mymaster 180000
Failover-Timeout festlegen
8. Legen Sie dann die Anzahl der Replikate fest, die neu konfiguriert werden können, um den neuen Master nach einem Failover gleichzeitig zu verwenden. Da wir zwei Replikate haben, werden wir ein Replikat festlegen, während das andere zum neuen Master befördert wird.
sentinel parallel-syncs mymaster 1
Legen Sie die Anzahl der Replikate für die parallele Synchronisierung fest
Beachten Sie, dass die Konfigurationsdateien auf Redis Replica1 und Sentinel2 und Reddis Replica1 und Sentinel2 sollte identisch sein.
9. Starten Sie als Nächstes den Sentinel neu Dienste auf allen Knoten, um die letzten Änderungen zu übernehmen.
# systemctl restart redis-sentinel
10. Öffnen Sie als Nächstes Port 26379 in der Firewall auf allen Knoten, um den Sentinel zu aktivieren Instanzen zu sprechen beginnen, Verbindungen vom anderen Sentinel erhalten Instanzen mit dem Firewall-cmd.
# firewall-cmd --zone=public --permanent --add-port=26379/tcp # firewall-cmd --reload
11. Alle Replikate werden automatisch erkannt. Wichtig, Sentinel aktualisiert die Konfiguration automatisch mit zusätzlichen Informationen zu Replikaten. Sie können dies bestätigen, indem Sie den Sentinel öffnen Konfigurationsdatei für jede Instanz und sieh sie dir an.
Wenn Sie sich beispielsweise das Ende der Konfigurationsdatei des Masters ansehen, sollten Sie die known-sentinels sehen und bekanntes Replikat Anweisungen, wie im folgenden Screenshot gezeigt.
Automatisch generierte Konfiguration im Master
Auf replica1 sollte es genauso sein und replica2 .
Automatisch generierte Konfiguration in Replica1
Automatisch generierte Konfiguration in Replica2
Beachten Sie, dass der Sentinel Die Konfiguration wird auch jedes Mal neu geschrieben/aktualisiert, wenn ein Replikat während eines Failovers zum Master-Status hochgestuft wird und jedes Mal, wenn ein neuer Sentinel im Setup entdeckt wird.
Schritt 3:Überprüfen Sie den Setup-Status von Redis Sentinel
12. Prüfen Sie nun den Sentinel Status/Informationen zum Master mit dem Info Sentinel Befehl wie folgt.
# redis-cli -p 26379 info sentinel
Aus der Ausgabe des Befehls, wie im folgenden Screenshot zu sehen, haben wir zwei Replicas/Slaves und drei Sentinels.
Überprüfen Sie die Sentinel-Informationen auf dem Master
13. Um zeigt detaillierte Informationen über den Master (genannt mymaster ), verwenden Sie den Sentinel Master Befehl.
# redis-cli -p 26379 sentinel master mymaster
Detaillierte Informationen zu Sentinel Master anzeigen
14. Um zeigt detaillierte Informationen über die Slaves und Wächter , benutze die Wächter-Sklaven Befehl und Sentinel Sentinels Befehl.
# redis-cli -p 26379 sentinel slaves mymaster # redis-cli -p 26379 sentinel sentinels mymaster
15. Fragen Sie als Nächstes die Adresse des Masters nach Namen von den Slave-Instanzen ab, indem Sie den Sentinel get-master-addr-by-name verwenden Befehl wie folgt.
Die Ausgabe sollte die IP-Adresse und der Port der aktuellen Masterinstanz sein:
# redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
Holen Sie sich die Adresse des Masters anhand des Namens auf den Slaves
Schritt 4:Sentinel-Failover testen
16. Lassen Sie uns abschließend das automatische Failover in unserem Sentinel testen aufstellen. Auf Redis/Sentinel Meister, machen Sie die Redis master (läuft auf Port 6379 ) für 60 schlafen Sekunden. Anschließend die Adresse des aktuellen Masters auf den Replikaten/Slaves wie folgt abfragen.
# redis-cli -p 6379 127.0.0.1:6379> AUTH [email protected] 127.0.0.1:6379> debug sleep 60 # redis-cli -p 26379 sentinel get-master-addr-by-name mymaster # redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
Aus der Ausgabe für die Abfrage geht hervor, dass der neue Master jetzt replica/slave2 ist mit der IP-Adresse 10.42.0.34 wie im folgenden Screenshot zu sehen.
Redis Sentinel-Failover testen
Weitere Informationen finden Sie in der Redis Sentinel-Dokumentation. Aber wenn Sie irgendwelche Gedanken teilen oder Fragen haben, ist das Feedback-Formular unten Ihr Tor zu uns.
Im nächsten und letzten Teil dieser Serie werden wir uns ansehen, wie man einen Redis-Cluster in CentOS 8 einrichtet. Es wird ein unabhängiger Artikel von den ersten beiden sein.
Sharing is Caring…Auf Facebook teilenAuf Twitter teilenAuf Linkedin teilenAuf Reddit teilen