Inhalte
Überblick
Redis ist ein Open-Source-In-Memory-Datenstrukturspeicher, der als Nachrichtenbroker, Cache und Schlüsselwertdatenbank verwendet werden kann. Es werden verschiedene Datenstrukturen unterstützt: Hashes, Listen, Mengen, sortierte Mengen, Bitmaps, Geodatenindizes, Hyperloglogs usw.
Was Redis einzigartig macht, ist, dass es sowohl als Geschäft 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 eine hohe Verfügbarkeit über Redis Sentinelund automatische Partitionierung über Redis Cluster. Darüber hinaus verfügt Redis über einen Replikationsmechanismus, mit dem Slave-Instanzen exakte Kopien von Master-Instanzen sind. Der Slave stellt jedes Mal, wenn die Verbindung unterbrochen wird, automatisch eine neue Verbindung zum Master her. Ziel ist es, eine exakte Kopie davon zu erstellen.
Da Redis Sentinel eine hohe Verfügbarkeit für Redis bietet, kann es in vielen Fällen Fehler automatisch und ohne menschliches Eingreifen behandeln, bietet aber auch andere Aufgaben wie Überwachung, Benachrichtigungen und fungiert als Konfigurationsanbieter für Clients.
Aber Was passiert, wenn Sentinel einen Redis-Server als ausgefallen erkennt? In diesem Artikel erfahren Sie, wie Sie einen vollständigen hochverfügbaren virtuellen Dienst für Redis erstellen.
Beachten Sie, dass diese Konfiguration auch durchgeführt werden kann, wenn Ihr Redis-Server Sentinel nicht zur Überwachung verwendet.
Redis Load Balancing-Umgebung
Das Szenario, das wir in diesem Artikel erreichen möchten, ist in der folgenden Abbildung 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, führt ihn jedoch regelmäßig alle paar Sekunden durch. Es kann Fälle geben, in denen Sentinel das Problem erkennt, die Realisierung des Lastenausgleichs jedoch einige Sekunden in Anspruch nehmen kann. Dies kann dazu führen, dass der Balancer Anforderungen an den falschen Master sendet, der gerade fehlgeschlagen ist, aber von Sentinel umgeschaltet wurde.
Zevenet bietet eine Möglichkeit, dieses Problem zu lösen. Die L4-Farm führt regelmäßig Überprüfungen durch. Andererseits wird auch der Flow an das Backend übergeben, der keine vorherige Prüfung enthält. Wenn der Farmwächter feststellt, dass das Backend nicht reagiert, löst er den Alarm aus und zeigt an, dass der Fluss nicht in diese Richtung gehen sollte.
Berücksichtigt man dies, haben wir zum einen die Schecks und zum anderen die Anfragen. Wenn die Prüfung fehlschlägt, wird der Fluss sofort an einen anderen Knoten gesendet. Sogar die laufenden Petitionen werden an einen anderen Online-Knoten weitergeleitet. Dies wird in der Konfiguration noch näher erläutert.
Redis Load Balancing-Konfiguration
Vor dem Einrichten der Farm benötigen wir eine virtuelle IP. Um dies zu erreichen, gehen Sie zu Netzwerk> Virtuelle Schnittstellen. Klicken Sie dann auf Aktion> Virtuelle Schnittstelle erstellen. Als nächstes wählen Sie Übergeordnete Schnittstelle, Name der virtuellen Schnittstelle und sein IP-Adresse:
Dann müssen wir für den virtuellen Redis-Server eine L4xNAT-Farm erstellen. Dafür gehen Sie zu LSLB> Bauernhöfeund klicken Sie dann auf Action und Farm erstellen.
Sobald die Anfangsparameter eingestellt sind, klicken Sie auf Erstellen. Als nächstes gehe zum Fortgeschrittene Registerkarte und stellen Sie sicher, dass der Protokolltyp TCP ist.
Als nächstes gehe zu Dienstleistungen. Hier werden Backends und Farm Guardian eingerichtet, um den Gesundheitszustand zu überprüfen. Zuerst finden Sie die Backends Abschnitt, und klicken Sie auf Aktionen> Backend hinzufügen wie es unten gezeigt wird:
Redis-Überwachung und erweiterte Gesundheitsprüfung
Schließlich müssen Sie die Farm Guardian-Überprüfungen durchführen, 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 replication\r\n' -e role:master -t 3
Wo HOST und PORT wird durch die Redis-Server-IP-Adresse und den Port jedes Backends ersetzt. Der Befehl Info-Replikation Die Informationen werden vom Redis-Server abgerufen, um zu überprüfen, welcher Master aktiv ist. Verbindungen werden nur dann zum Server umgeleitet, wenn der Rollenmaster angezeigt wird. Sobald Sentinel die Rolle ändert, erkennt der Load Balancer die Änderung und das Redis Server wird als ausgefallen markiert. Die Flagge -t Dies ist die Anzahl der Sekunden, die Farm Guardian auf eine Antwort des Redis-Servers wartet. Wenn das Zeitlimit ohne Antwort erreicht wird, wird der Redis-Server als inaktiv markiert. Auf der anderen Seite wird der Zustand des Redis-Servers nach Wiederherstellung wieder hergestellt.
Bevor Sie den Farm Guardian für diese bestimmte Farm ändern, gehen Sie zu Überwachung> Farmguardian und dann auf klicken Aktion> Farmguardian erstellen.
Wählen Sie einen aussagekräftigen Namen für Ihren neuen Redis Sentinel-Integritätsprüfer, zum Beispiel check_redis_master Wählen Sie nun wie im Beispiel check_tcp im abgelegt Farmguardian zu kopieren und klicken Sie auf Erstellen wie unten gezeigt.
Kopieren Sie abschließend den oben genannten Befehl in das Befehl Parameter und nehmen Sie die Konfiguration wie unten gezeigt vor.
Klicken Sie auf Abschicken.
Wählen Sie jetzt diesen neuen erweiterten Farm Guardian-Integritäts-Check im virtuellen Redis-Service aus. Geh zurück zu LSLB> Bauernhöfe, zu der mit Namen erstellten Farm RedisFarm, Dienstleistungen Tab. Schließlich wählen Sie die check_redis_master Befehl gerade erstellt unter Health Checks für das Backend.
Klicken Sie auf Aktualisierung die Farm und jetzt Redis wird voll verfügbar sein.
Bibliographie
https://redis.io/topics/sentinel
https://redis.io/topics/cluster-tutorial