Übersicht #
Redis ist ein Open-Source-Datenspeicher für In-Memory-Datenstrukturen, der als Message Broker, Cache und Key-Value-Datenbank eingesetzt werden kann. Er unterstützt verschiedene Datenstrukturen: Hashes, Listen, Mengen, sortierte Mengen, Bitmaps, Geodatenindizes, HyperLogLogs usw.
Das Besondere an Redis ist, dass es sowohl als Speicher als auch als Cache betrachtet werden kann. Es ist so konzipiert, dass Daten geändert und/oder aus dem Hauptspeicher des Computers gelesen werden.
Redis bietet unter anderem Hochverfügbarkeit durch Redis Sentinel und automatische Partitionierung durch Redis Cluster . Darüber hinaus verfügt Redis über einen Replikationsmechanismus, der es ermöglicht, dass Slave-Instanzen exakte Kopien von Master-Instanzen sind. Der Slave verbindet sich automatisch wieder mit dem Master, sobald die Verbindung abbricht, und hat zum Ziel, eine exakte Kopie davon zu sein.
Da Redis Sentinel eine hohe Verfügbarkeit für Redis bereitstellt, kann es Fehler in vielen Fällen automatisch und ohne menschliches Eingreifen beheben, bietet aber auch andere Aufgaben wie Überwachung und Benachrichtigungen und fungiert als Konfigurationsanbieter für Clients.
Was passiert aber, wenn Sentinel einen ausgefallenen Redis-Server erkennt? In diesem Artikel erfahren Sie, wie Sie einen vollständig hochverfügbaren virtuellen Dienst für Redis erstellen.
Bitte beachten Sie, dass diese Konfiguration auch dann durchgeführt werden kann, wenn Ihr Redis-Server Sentinel nicht zur Überwachung verwendet.
Redis-Lastausgleichsumgebung #
Das Szenario, das wir in diesem Artikel erreichen möchten, ist im folgenden Diagramm dargestellt.
Redis Sentinel überprüft den Status aller Redis-Knoten und ändert die Rolle des Redis-Servers, sobald ein Fehler erkannt wird.
Der Load Balancer überprüft den Status ebenfalls, allerdings alle paar Sekunden. Es kann vorkommen, dass Sentinel das Problem erkennt, der Load Balancer jedoch einige Sekunden braucht, um es zu realisieren. Dies kann dazu führen, dass der Balancer Anfragen an den falschen Master sendet, der gerade ausgefallen ist, aber von Sentinel umgeschaltet wurde.
RELIANOID bietet eine Möglichkeit, dieses Problem zu lösen. Die L4-Farm führt regelmäßig Prüfungen durch. Andererseits gibt es auch den an das Backend weitergeleiteten Fluss, der keine vorherige Prüfung enthält. Wenn der Farm Guardian feststellt, dass das Backend nicht reagiert, löst er einen Alarm aus und weist darauf hin, dass der Fluss nicht so verlaufen sollte.
Unter Berücksichtigung dessen haben wir auf der einen Seite die Prüfungen und auf der anderen Seite die Anfragen. Wenn die Prüfung fehlschlägt, wird der Flow sofort an einen anderen Knoten gesendet. Auch die laufenden Anfragen werden an einen anderen Online-Knoten umgeleitet. Dies wird in der Konfiguration genauer erläutert.
Redis-Lastausgleichskonfiguration #
Bevor wir die Farm einrichten, benötigen wir eine virtuelle IP-Adresse. Gehen Sie dazu auf Netzwerk > Virtuelle Schnittstellen . Klicken Sie anschließend auf Aktion > Virtuelle Schnittstelle erstellen . Wählen Sie als Nächstes die übergeordnete Schnittstelle , den Namen der virtuellen Schnittstelle und deren IP-Adresse aus.
Für den virtuellen Redis-Server muss eine L4xNAT-Farm erstellt werden. Gehen Sie dazu auf LSLB > Farms und klicken Sie anschließend auf Aktion und Farm erstellen.
Sobald die anfänglichen Parameter festgelegt sind, klicken Sie auf „Erstellen“ . Gehen Sie anschließend zur Registerkarte „Erweitert“ und stellen Sie sicher, dass als Protokolltyp TCP ausgewählt ist.
Gehen Sie als Nächstes zu „Dienste“ . Backends und Farm Guardian werden hier für die erweiterte Systemzustandsprüfung eingerichtet. Suchen Sie zunächst den Abschnitt „Backends“ und klicken Sie auf „Aktionen“ > „Backend hinzufügen“, wie unten dargestellt:
Redis-Überwachung und erweiterte Integritätsprüfung #
Schließlich sind die Farm Guardian-Prüfungen erforderlich, um sicherzustellen, dass wir immer den Online-Knoten verwenden, wie im vorherigen Fall erläutert. Dazu müssen wir Folgendes als Farm Guardian-Befehl konfigurieren:
check_tcp -E -H HOST -p PORT -s 'info Replikation\r\n' -e Rolle:Master -t 3
Hierbei werden HOST und PORT durch die IP-Adresse und den Port des jeweiligen Redis-Servers im Backend ersetzt. Der Befehl `info replication` ruft die Informationen vom Redis-Server ab, um zu überprüfen, welcher Master aktiv ist. Verbindungen werden nur dann an den Server weitergeleitet, wenn dieser die Master-Rolle hat. Sobald Sentinel die Rolle ändert, erkennt der Load Balancer die Änderung und markiert den Redis-Server als ausgefallen. Der Parameter ` -t` gibt die Anzahl der Sekunden an, die Farm Guardian auf eine Antwort des Redis-Servers wartet. Erfolgt innerhalb dieses Zeitraums keine Antwort, wird der Redis-Server ebenfalls als ausgefallen markiert. Sobald der Redis-Server wieder erreichbar ist, wird er wieder als aktiv angezeigt.
Bevor Sie jedoch den Farm Guardian für diese spezielle Farm ändern, gehen Sie zu Überwachung > Farmguardian und klicken Sie dann auf Aktion > Farmguardian erstellen.
Wählen Sie einen aussagekräftigen Namen für Ihren neuen Redis Sentinel Health Checker, z. B. check_redis_master wie im Beispiel. Wählen Sie nun check_tcp im Feld Farmguardian zum Kopieren aus und klicken Sie auf Erstellen , wie unten gezeigt.
Kopieren Sie abschließend den oben genannten Befehl in den Parameter "Command" und führen Sie die Konfiguration wie unten gezeigt durch.
Klicken Sie auf Absenden.
Wählen Sie nun die neue erweiterte Integritätsprüfung „Farm Guardian“ im virtuellen Redis-Dienst aus. Gehen Sie zurück zu LSLB > Farms und wählen Sie die Farm mit dem Namen „RedisFarm “ auf der Registerkarte „ Dienste“ aus . Wählen Sie abschließend den soeben erstellten Befehl „check_redis_master“ unter „Integritätsprüfungen für Backend“ aus.
Klicken Sie auf „Farm aktualisieren “, und Redis ist nun vollständig hochverfügbar.
Referenzen #
https://redis.io/topics/sentinel
https://redis.io/topics/cluster-tutorial






