Redis (Remote Dictionary Server) ist ein sehr beliebter und weit verbreiteter Open-Source-, schneller, verteilter und effizienter In-Memory-Key-Value-Datenbank-/Datenstrukturserver.
Es bietet eine Vielzahl von Funktionen, die es für eine Vielzahl von Anwendungsfällen effektiv machen: als Datenbank, Zwischenspeicherschicht, Nachrichtenbroker oder Warteschlange; anwendbar in Webanwendungen, Chat- und Messaging-Anwendungen, Spielen, Echtzeit-Datenanalyse und vielem mehr.
Es unterstützt flexible Datenstrukturen, Master-Slave-asynchrone Replikation zur Skalierung der Leseleistung und zum Schutz vor Datenverlust, Client-seitiges Sharding zur Skalierung der Schreibleistung, zwei Formen der Persistenz zum Schreiben von In-Memory-Daten auf die Festplatte in einem kompakten Format, Clustering und Partitionierung. Es bietet auch automatische Failovers für den Einsatz mit hoher Verfügbarkeit über Redis Sentinel, Lua-Skripting, Transaktionen und vieles mehr.
Als NO SQL– oder nicht-relationale Datenbank bietet Redis einige Leistungsvorteile gegenüber traditionellen Datenbanksystemen (wie MySQL/MariaDB, PostgreSQL, etc.), da alle seine Daten im Speicher liegen oder dort gespeichert sind, was sie für eine Anwendung leicht zugänglich macht, während traditionelle Datenbanken alle Daten auf die Festplatte schreiben oder von dort lesen müssen.
Redis ist zu einer zunehmend verbreiteten Wahl für das Zwischenspeichern geworden, was die Wiederverwendung von zwischengespeicherten Daten (die im Hauptspeicher einer Anwendung gespeichert sind) ermöglicht, anstatt immer eine Datenbank nach häufig verwendeten Daten abzufragen. Es ist also ein fantastischer Begleiter von RDMS (Relationale Datenbankmanagementsysteme), um letztendlich die Anwendungsleistung zu verbessern.
In dieser dreiteiligen Redis-Tutorialserie werden wir behandeln, wie man einige der Schlüsselfunktionen von Redis einrichtet und verwendet, darunter Replikation, hohe Verfügbarkeit mit Redis Sentinel und Redis Cluster. Die Artikel sind:
Dieser Leitfaden zeigt, wie man die Redis-Replikation (mit Cluster-Modus deaktiviert) in CentOS 8 Linux einrichtet, einschließlich der Installation von Redis, der Konfiguration des Masters und der Replikanten sowie des Tests der Replikation.
Wichtig: Ein Redis-Cluster (d.h. ein Replikationscluster) mit deaktiviertem Cluster-Modus hat eine einzelne Knotengruppe (z.B. einen Master und ein oder zwei Replikanten), während ein Redis-Cluster mit aktiviertem Cluster-Modus aus zwei oder mehr Knotengruppen bestehen kann (z.B. drei Master, von denen jeder Sklaven hat, oder zwei).
Voraussetzungen:
Testumgebung einrichten
Redis Master Server: 10.42.0.247 Redis Replica1/Slave1: 10.42.0.21 Redis Replica2/Slave2: 10.42.0.34

Mit dem oben genannten Setup (das einen einzelnen Lese-/Schreib-Primär-/Masterknoten und 2 schreibgeschützte Replikaknoten hat) haben wir eine einzelne Knotengruppe, die alle Daten des Clusters in jedem Knoten enthält. Sobald sich ein Slave mit einem Master verbindet, erhält er eine initiale Kopie der vollständigen Datenbank, und alle Daten, die zuvor auf dem Slave vorhanden waren, werden verworfen.
Außerdem kann ein Client nur auf den Master schreiben, aber von jedem Knoten im Cluster lesen. Und da Schreibvorgänge auf dem Master durchgeführt werden, werden sie in Echtzeit an alle verbundenen Slaves weitergeleitet, um die Datensätze der Slaves zu aktualisieren.
Schritt 1: Installation von Redis auf CentOS 8
1. Beginnen Sie damit, sich über SSH bei allen CentOS 8-Knoten anzumelden, installieren Sie dann das Redis-Paket auf allen Knoten (Master und Replikate) mit dem DNF-Paketmanager wie gezeigt.
# dnf install @redis
2. Nach Abschluss der Installation des Redis-Pakets starten Sie den Redis-Dienst, aktivieren Sie ihn, um bei jedem Systemstart automatisch zu starten, und überprüfen Sie, ob er läuft, wie folgt.
# systemctl start redis # systemctl enable redis # systemctl status redis
3. Sie können auch bestätigen, dass der Redis-Server läuft, indem Sie die lauschenden Ports mit dem ss-Befehl überprüfen, wie folgt.
# ss -ltpn | grep redis-server

Schritt 2: Konfiguration des Redis-Master-Servers
4. Redis wird mithilfe der Konfigurationsdatei /etc/redis.conf konfiguriert, einer selbst dokumentierten Beispielkonfigurationsdatei. Erstellen Sie zunächst eine Sicherungskopie der Originaldatei und öffnen Sie sie dann zur Bearbeitung mit Ihrem Befehlszeilen-Editor Ihrer Wahl.
# cp /etc/redis.conf /etc/redis.conf.org # vi /etc/redis.conf
5. Standardmäßig ist eine Redis-Instanz so konfiguriert, dass sie Verbindungen über die Loopback-Schnittstelle empfängt und darauf lauscht, indem sie die Bind-Anweisung verwendet. Um mit den Replikaten zu kommunizieren, sollte der Master so konfiguriert sein, dass er auf der IPv4-Loopback-Adresse und seiner LAN-IP-Adresse, d.h. 10.42.0.247, lauscht.
bind 127.0.0.1 10.42.0.247
6. Setzen Sie als Nächstes den Parameter protected-mode auf no
, um die Kommunikation mit den Replikaten zu ermöglichen, wie unten gezeigt.
protected-mode no
Außerdem lauscht Redis auf Port 6379, der mithilfe der Anweisung port
festgelegt wird. Dies ist der Datenport zur Kommunikation mit Anwendungs-APIs oder CLI-Clients.
port 6379

7. Um die Master-Replika-Kommunikation optional abzusichern, können wir den Master mithilfe der Anweisung requirepass schützen, sodass die Clients/Replikate vor dem Ausführen von Befehlen oder dem Starten eines Replikationssynchronisierungsprozesses ein Authentifizierungspasswort angeben müssen, andernfalls wird der Master die Anfrage des Clients/Replikats ablehnen (denken Sie daran, ein sicheres Passwort festzulegen).
Wir werden die folgende Option zu Demonstrationszwecken verwenden, um zu zeigen, wie es funktioniert.
requirepass Securep@55Here

8. Die Redis-Protokolle werden in der Datei /var/log/redis/redis.log gespeichert. Dies wird mit der Direktive logfile festgelegt, und das Standardserverprotokollniveau ist notice, das mit dem Parameter loglevel definiert ist.
loglevel notice logfile /var/log/redis/redis.log

9. Da systemd der Standard-System- und Dienstmanager in CentOS 8 ist, können Sie Redis konfigurieren, um mit dem Überwachungsbaum von systemd zu interagieren, indem Sie den Parameter supervised auf systemd setzen.
supervised systemd

10. Nachdem alle erforderlichen Konfigurationen vorgenommen wurden, speichern Sie die Datei und schließen Sie sie. Starten Sie dann den Redis-Dienst neu, um die neuen Änderungen anzuwenden.
# systemctl daemon-reload # systemctl restart redis
11. Um auf den Redis-Server zuzugreifen, müssen wir redis-cli verwenden (eine Befehlszeilenschnittstelle für den redis-server). Standardmäßig verbindet es sich mit dem Server auf localhost (unter 127.0.0.1 Port 6379). Beachten Sie, dass, da der Server vor Clients mit einem Passwort geschützt ist, das Ausführen eines Befehls vor der Authentifizierung fehlschlagen sollte.
Verwenden Sie den auth-Befehl, um das Authentifizierungspasswort wie im folgenden Screenshot gezeigt anzugeben.
# redis-cli 127.0.0.1:6379> client list 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> client list

12. Um eine Replik zu verbinden (nachdem sie wie im nächsten Abschnitt beschrieben konfiguriert wurde), verwenden Sie die Optionen -h
und -p
, um die IP-Adresse/den Hostnamen der Replik und den Port anzugeben (beachten Sie, dass Port 6379 in der Firewall der Replik geöffnet sein muss).
# redis-cli -h 10.42.0.21 -p 6379
13. Als nächstes öffnen Sie den Datenport des Redis-Servers in der Firewall, um eingehende Verbindungen zum Master zuzulassen, und laden anschließend die Firewall-Regeln mit dem Befehl firewall-cmd neu, wie gezeigt.
# firewall-cmd --zone=public --permanent --add-port=6379/tcp # firewall-cmd --reload
Schritt 3: Konfigurieren von Redis Replikations-/Slave-Servern
14. Um schnell eine Redis-Instanz als Replikat im Handumdrehen einzurichten, verwenden Sie das Dienstprogramm redis-cli und rufen Sie den Befehl REPLICAOF wie gezeigt auf.
# redis-cli replicaof 10.42.0.247 6379 OR # redis-cli 127.0.0.1:6379> REPLICAOF 10.42.0.247 6379

15. Um eine Replikationsverbindung dauerhaft herzustellen, müssen Sie die folgenden Änderungen in der Konfigurationsdatei vornehmen. Beginnen Sie damit, die Originaldatei zu sichern, und öffnen Sie sie dann zum Bearbeiten.
# cp /etc/redis.conf /etc/redis.conf.org # vi /etc/redis.conf
16. Um es Clients zu ermöglichen, sich mit dem Replikat zu verbinden, um Daten zu lesen, fügen Sie die IP-Adresse des Replikats der Bind-Direktive hinzu.
# replica1 bind 127.0.0.1 10.42.0.21 # replica2 bind 127.0.0.1 10.42.0.34
Einrichten einer Redis-Instanz als Replikat
17. Verwenden Sie zum Konfigurieren einer Redis-Instanz als Replikat den Parameter replicaof und setzen Sie die IP-Adresse (oder den Hostnamen) und den Port des Masterknotens als Werte.
replicaof 10.42.0.247 6379
Replikat so einstellen, dass es sich beim Master authentifiziert
18. Da unser Master-Instanz durch ein Passwort geschützt ist, müssen wir das Passwort in der Replikatkonfiguration festlegen, um es zu ermöglichen, sich beim Master zu authentifizieren, unter Verwendung des Parameters masterauth.
masterauth Securep@55Here
19. Darüber hinaus, wenn eine Replik ihre Verbindung zum Master verliert oder wenn die Replikation im Gange ist, ist die Replik so konfiguriert, dass sie möglicherweise auf Clientanfragen antwortet, möglicherweise mit „veraltet“ Daten. Aber wenn es sich um die erste Synchronisierung handelt, kann der Datensatz einfach leer sein. Dieses Verhalten wird durch den Parameter replica-serve-stale-data gesteuert.
Und seit Redis 2.6 sind Replikate standardmäßig schreibgeschützt, dies wird durch den Parameter replica-read-only gesteuert. Sie können andere Replikatkonfigurationsanpassungen vornehmen, um den Anforderungen Ihrer Anwendung gerecht zu werden.
20. Sobald Sie alle notwendigen Änderungen vorgenommen haben, starten Sie den Redis-Dienst auf allen Replikaten neu.
# systemctl restart redis
21. Öffnen Sie außerdem den Port 6379 in der Firewall, um Verbindungen vom Master und von Clients zu den Replikaten zuzulassen, und laden Sie die Firewall-Regeln neu.
# firewall-cmd --zone=public --permanenent --add-port=6379/tcp # firewall-cmd --reload
Schritt 4: Überprüfen des Master-Replikat-Replikationsstatus
22. Sobald die Konfiguration der Master-Replikat-Replikation abgeschlossen ist, können wir überprüfen, ob das Setup wie folgt funktioniert.
Auf dem Master führen Sie die folgenden Befehle aus.
# redis-cli 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> info replication

23. Überprüfen Sie auch den Replikationsstatus auf den Replikaten/Slaves wie folgt.
# redis-cli 127.0.0.1:6379> info replication


23. Jetzt testen wir die Replikation, indem wir einen Schlüssel-Wert im Master-Instanz setzen und überprüfen, ob die Daten auf den Replikaten synchronisiert sind.
Auf dem Master tun Sie dies:
# redis-cli 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> set domain 'www.tecmint.com'

24. Überprüfen Sie dann, ob die Daten wie gezeigt auf den Replikaten synchronisiert wurden.
# redis-cli 127.0.0.1:6379> get domain

Schutz der Master-Instanz vor dem Risiko des Verlusts einiger Schreibvorgänge
25. Redis verfügt über eine Funktion, die es einer Master-Instanz ermöglicht, das Risiko des Verlusts einiger Schreibvorgänge zu begrenzen, falls nicht genügend Replikate verfügbar sind, auf eine bestimmte Anzahl von Sekunden.
Dies bedeutet, dass ein Master das Schreiben stoppen kann, wenn weniger als N Replikate verbunden sind, die eine Verzögerung von weniger oder gleich M Sekunden aufweisen, gesteuert durch die Optionen min-replicas-to-write und min-replicas-max-lag.
Um sie einzustellen, sollten Sie sie in /etc/redis.conf auskommentieren und die Werte gemäß Ihren Einrichtungsanforderungen festlegen, wie im folgenden Screenshot gezeigt. Diese Konfiguration bedeutet, dass vom letzten Ping zu den Replikaten nach 10 Sekunden, wenn weniger als 2 Replikate online sind, der Master das Schreiben stoppen wird.
min-replicas-to-write 2 min-replicas-max-lag 10

Sie finden weitere Optionen in der restlichen /etc/redis.conf Konfigurationsdatei und für weitere Details lesen Sie über die Replikation in der Redis-Dokumentation.
Im nächsten Artikel werden wir behandeln, wie man Redis für hohe Verfügbarkeit mit Sentinel in CentOS 8 einrichtet. Bis dahin, bleiben Sie gesperrt und denken Sie daran, Ihre Gedanken und Fragen mit unserem Kommentarformular unten zu teilen, um uns zu erreichen.
Source:
https://www.tecmint.com/setup-redis-replication-in-centos-8/