Redis (Remote Dictionary Server ) ist ein sehr beliebter und weit verbreiteter, schneller, verteilter und effizienter Open-Source-Schlüsselwertdatenbank-/Datenstrukturserver.
Es bietet eine Vielzahl von Funktionen, die es für eine Vielzahl von Anwendungsfällen effektiv machen:als Datenbank, Caching-Layer, Nachrichtenbroker oder Warteschlange; anwendbar in Webanwendungen, Chat- und Messaging-Anwendungen, Spielen, Echtzeit-Datenanalysen und vielem mehr.
Es unterstützt flexible Datenstrukturen, asynchrone Master-Slave-Replikation zum Skalieren der Leseleistung und zum Schutz vor Datenverlust, clientseitiges Sharding zum Skalieren 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 Failover für die Hochverfügbarkeitsbereitstellung über Redis Sentinel , Lua-Skripting , Transaktionen , und viele mehr.
Ein NO SQL sein oder nicht relationale Datenbank, Redis bietet gegenüber herkömmlichen Datenbanksystemen (wie MySQL/MariaDB) einige Leistungsvorteile , PostgreSQL , usw.), da alle Daten im Arbeitsspeicher gespeichert oder gespeichert sind, sodass sie für eine Anwendung leicht zugänglich sind, während herkömmliche Datenbanken alle Daten auf eine Festplatte oder eine externe Quelle schreiben oder von ihr lesen müssen.
Redis ist zu einer zunehmend vorherrschenden Wahl für das Caching geworden, das die Wiederverwendung von zwischengespeicherten Daten (die im Hauptspeicherbereich 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 Datenbankverwaltungssysteme ), um letztendlich die Anwendungsleistung zu verbessern.
In diesem dreiteiligen Redis Tutorial-Reihe behandeln wir die Einrichtung und Verwendung einiger der wichtigsten Funktionen von Redis, darunter Replikation und Hochverfügbarkeit mit Redis Sentinel und Redis-Cluster , die Artikel sind:
Teil 1 :Einrichten der Redis-Replikation (mit deaktiviertem Cluster-Modus) in CentOS 8 Teil 2 :Einrichten von Redis für Hochverfügbarkeit mit Sentinel in CentOS 8 Teil 3 :So richten Sie einen Redis-Cluster (mit aktiviertem Cluster-Modus) in CentOS 8 einDiese Anleitung zeigt, wie Sie Redis-Replikation einrichten (mit Cluster-Modus deaktiviert ) in CentOS 8 Linux, einschließlich der Installation von Redis, der Konfiguration des Masters und der Replikate und des Testens der Replikation.
Wichtig :Ein Redis-Cluster (d. h. ein Replikationscluster ) mit deaktiviertem Clustermodus hat eine einzelne Knotengruppe (z. B. einen Master und ein oder zwei Replikate), wobei ein Redis-Cluster mit aktiviertem Cluster-Modus aus zwei oder mehr Knotengruppen bestehen kann (z. B. drei Master mit jeweils Slaves oder zwei).
Voraussetzungen:
- Server mit CentOS 8-Installation
Einrichtung der Testumgebung
Redis Master Server: 10.42.0.247 Redis Replica1/Slave1: 10.42.0.21 Redis Replica2/Slave2: 10.42.0.34
Logische Darstellung des Redis-Replikationsdiagramms
Mit dem obigen Setup (das einen einzelnen Primär-/Master-Knoten mit Lese-/Schreibzugriff und 2 Replikat-Knoten mit Lesezugriff 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 erste Kopie der vollständigen Datenbank und alle zuvor auf dem Slave vorhandenen Daten werden verworfen.
Außerdem kann ein Client nur auf den Master schreiben, aber von jedem Knoten im Cluster lesen. Und während Schreibvorgänge auf dem Master durchgeführt werden, werden sie an alle verbundenen Slaves weitergegeben, um die Slave-Datensätze in Echtzeit zu aktualisieren.
Schritt 1:Installieren von Redis auf CentOS 8
1. Melden Sie sich zunächst bei allen CentOS 8 an Nodes über SSH, dann installieren Sie Redis Paket auf allen Knoten (Master und Replikate) mithilfe des DNF-Paketmanagers wie gezeigt.
# dnf install @redis
2. Nach Abschluss der Redis Paketinstallation starten Sie das Redis aktivieren, aktivieren Sie ihn so, dass er bei jedem Systemstart automatisch gestartet wird, und überprüfen Sie wie folgt, ob er betriebsbereit ist.
# systemctl start redis # systemctl enable redis # systemctl status redis
3. Sie können auch bestätigen, dass die Redis Server betriebsbereit ist, indem Sie mit dem Befehl ss wie folgt die Listening-Ports überprüfen.
# ss -ltpn | grep redis-server
Redis-Server-Ports bestätigen
Schritt 2:Konfigurieren des Redis-Masterservers
4. Redis wird mit /etc/redis.conf konfiguriert Konfigurationsdatei, eine selbstdokumentierte Beispielkonfigurationsdatei. Erstellen Sie zunächst eine Sicherungskopie der Originaldatei und öffnen Sie sie dann zur Bearbeitung mit einem Befehlszeilen-Editor Ihrer Wahl.
# cp /etc/redis.conf /etc/redis.conf.org # vi /etc/redis.conf
5. Standardmäßig ist ein Redis -Instanz ist so konfiguriert, dass sie Verbindungen auf dem Loopback abhört und akzeptiert Schnittstelle mit der Bind-Direktive. Um mit den Replikaten zu kommunizieren, sollte der Master so konfiguriert werden, dass er auf IPv4 lauscht Loopback-Adresse und seine LAN-IP-Adresse, z. B. 10.42.0.247 .
bind 127.0.0.1 10.42.0.247
6. Setzen Sie als Nächstes den Protected-Mode-Parameter auf no
um die Kommunikation mit den Repliken wie gezeigt zu ermöglichen.
protected-mode no
Außerdem lauscht Redis auf Port 6379 die über den port
gesetzt wird Richtlinie. Dies ist der Datenport für die Kommunikation mit Anwendungs-APIs oder CLI-Clients.
port 6379
Konfigurieren des Redis-Masterservers
7. Um optional das Master-Replikat zu sichern Kommunikation können wir den Master mit requirepass schützen Anweisung, sodass die Clients/Replikate ein Authentifizierungskennwort ausgeben müssen, bevor sie Befehle ausführen oder einen Replikationssynchronisierungsprozess starten, andernfalls lehnt der Master die Client-/Replikatanforderung ab (denken Sie daran, ein sicheres Kennwort festzulegen).
Wir werden die folgende Option zu Demonstrationszwecken verwenden, um zu zeigen, wie sie funktioniert.
requirepass [email protected]
Authentifizierungspasswort festlegen
8. Außerdem werden Redis-Protokolle in /var/log/redis/redis.log gespeichert Datei, diese wird über das Logfile gesetzt Direktive und die standardmäßige Ausführlichkeitsstufe des Servers ist notice , definiert mit dem Loglevel Parameter.
loglevel notice logfile /var/log/redis/redis.log
Legen Sie die Redis-Protokolldatei und die Protokollebene fest
9. Da systemd ist der standardmäßige System- und Dienstmanager in CentOS 8 , können Sie Redis konfigurieren um mit dem systemd zu interagieren Supervision-Baum, indem Sie supervised festlegen Parameter zu systemd .
supervised systemd
Setzen Sie Redis Supervisor auf Systemd
10. Nachdem Sie alle erforderlichen Konfigurationen vorgenommen haben, speichern Sie die Datei und schließen Sie sie. Starten Sie dann das Redis neu Dienst, um die neuen Änderungen zu übernehmen.
# systemctl daemon-reload # systemctl restart redis
11. Für den Zugriff auf Redis server, müssen wir die redis-cli verwenden (eine Befehlszeilenschnittstelle zum Redis-Server). Standardmäßig verbindet es sich mit dem Server auf dem localhost (unter 127.0.0.1 Port 6379 ). Beachten Sie, dass das Ausführen eines Befehls vor der Authentifizierung fehlschlagen sollte, da der Server mit einem Kennwort vor Clients geschützt ist.
Verwenden Sie die Authentifizierung 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 [email protected] 127.0.0.1:6379> client list
Greifen Sie über die Redis-CLI auf den Redis-Server zu
12. Um eine Verbindung zu einem Replikat herzustellen (nachdem Sie sie wie im nächsten Abschnitt beschrieben konfiguriert haben), verwenden Sie den -h
und -p
Optionen zum Angeben der replizierten IP-Adresse/des Hostnamens bzw. des Ports (nicht dieser Port 6379 muss in der Firewall des Replikats geöffnet sein).
# redis-cli -h 10.42.0.21 -p 6379
13. Öffnen Sie als Nächstes das Redis Server-Datenport in der Firewall, um eingehende Verbindungen zum Master zuzulassen, und laden Sie anschließend die Firewall-Regeln mit dem Befehl firewall-cmd wie gezeigt neu.
# firewall-cmd --zone=public --permanent --add-port=6379/tcp # firewall-cmd --reload
Schritt 3:Redis Replica/Slave-Server konfigurieren
14. Um schnell ein Redis zu setzen Instanz als Replikat im laufenden Betrieb verwenden Sie das redis-cli und rufen Sie REPLICAOF auf Befehl wie gezeigt.
# redis-cli replicaof 10.42.0.247 6379 OR # redis-cli 127.0.0.1:6379> REPLICAOF 10.42.0.247 6379
Mit einer Master-Redis-Instanz verbinden
15. Um eine Replikationsverbindung dauerhaft zu machen, müssen Sie die folgenden Änderungen in der Konfigurationsdatei vornehmen. Beginnen Sie damit, die Originaldatei zu sichern, und öffnen Sie sie dann zur Bearbeitung.
# cp /etc/redis.conf /etc/redis.conf.org # vi /etc/redis.conf
16. Damit Clients sich mit dem Replikat verbinden können, um Daten zu lesen, fügen Sie die IP-Adresse des Replikats der Bindedirektive hinzu.
# replica1 bind 127.0.0.1 10.42.0.21 # replica2 bind 127.0.0.1 10.42.0.34
Festlegen einer Redis-Instanz als Replikat
17. So konfigurieren Sie eine Redis-Instanz als Replikat , verwenden Sie die replicaof Parameter und legen Sie die IP-Adresse (oder den Hostnamen) und den Port des Master-Knotens als Werte fest.
replicaof 10.42.0.247 6379
Replikat so einstellen, dass es sich beim Master authentifiziert
18. Da unsere Masterinstanz mit einem Passwort geschützt ist, müssen wir als Nächstes das Passwort in der Replikatkonfiguration festlegen, damit sie sich mit masterauth beim Master authentifizieren kann Parameter.
masterauth [email protected]
19. Wenn ein Replikat die Verbindung zum Master verliert oder die Replikation im Gange ist, wird das Replikat außerdem so konfiguriert, dass es auf Clientanfragen antwortet, möglicherweise mit „veraltet " Daten. Aber wenn es die erste Synchronisation ist, dann kann der Datensatz einfach leer sein. Dieses Verhalten wird durch replica-serve-stale-data gesteuert Parameter.
Und seit Redis 2.6 Standardmäßig sind Replikate schreibgeschützt, dies wird durch replica-read-only gesteuert Parameter. Sie können weitere Anpassungen an der Replikatkonfiguration vornehmen, um sie an Ihre Anwendungsanforderungen anzupassen.
20. Nachdem Sie alle erforderlichen Änderungen vorgenommen haben, starten Sie den Redis-Dienst auf allen Replikaten neu.
# systemctl restart redis
21. Öffnen Sie außerdem Port 6379 in der Firewall, um Verbindungen vom Master und den 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:Replikationsstatus des Master-Replikats prüfen
22. Einmal die Master-Replik Replikationskonfiguration abgeschlossen ist, können wir wie folgt überprüfen, ob die Einrichtung einwandfrei funktioniert.
Führen Sie auf dem Master die folgenden Befehle aus.
# redis-cli 127.0.0.1:6379> AUTH [email protected] 127.0.0.1:6379> info replication
Überprüfen Sie die Redis-Umzugsinformationen auf dem Master
23. Überprüfen Sie außerdem den Replikationsstatus auf den Replikaten/Slaves wie folgt.
# redis-cli 127.0.0.1:6379> info replication
Überprüfen Sie die Redis-Replikationsinformationen auf Redis Replica 1
Überprüfen Sie die Redis-Replikationsinformationen auf Redis Replica 2
23. Lassen Sie uns nun die Replikation testen, indem Sie einen Schlüsselwert festlegen in der Masterinstanz und überprüfen Sie, ob die Daten mit den Replikaten synchronisiert werden.
Gehen Sie auf dem Master wie folgt vor:
# redis-cli 127.0.0.1:6379> AUTH [email protected] 127.0.0.1:6379> set domain 'www.tecmint.com'
Schlüsselwert in Master-Instanz festlegen
24. Überprüfen Sie dann, ob die Daten wie gezeigt mit den Replikaten synchronisiert wurden.
# redis-cli 127.0.0.1:6379> get domain
Überprüfen Sie den Datensynchronisierungsstatus auf Replikaten
Schutz der Master-Instanz vor dem Risiko, einige Schreibvorgänge zu verlieren
25. Redis verfügt über eine Funktion, mit der eine Masterinstanz das Risiko des Verlusts einiger Schreibvorgänge auf eine bestimmte Anzahl von Sekunden begrenzen kann, falls nicht genügend Replikate verfügbar sind.
Dies bedeutet, dass ein Master die Annahme von Schreibvorgängen beenden kann, wenn weniger als N vorhanden sind verbundene Replikate mit einer Verzögerung kleiner oder gleich M Sekunden, wie von min-replicas-to-write gesteuert und min-replicas-max-lag Optionen.
Um sie festzulegen, kommentieren Sie sie aus und legen Sie die Werte gemäß Ihren Setup-Anforderungen in /etc/redis.conf fest , wie im folgenden Screenshot gezeigt. Diese Konfiguration bedeutet, dass nach dem letzten Ping an Replikate nach 10 Sekunden der Master keine Schreibvorgänge mehr akzeptiert, wenn weniger als 2 Replikate online sind.
min-replicas-to-write 2 min-replicas-max-lag 10
Schützen des Redis-Masters vor Schreibverlust
Weitere Optionen finden Sie im Rest der /etc/redis.conf Konfigurationsdatei und lesen Sie für weitere Details über die Replikation in der Redis-Dokumentation.
Im nächsten Artikel behandeln wir, wie Sie Redis für Hochverfügbarkeit mit Sentinel in CentOS 8 einrichten . Bleiben Sie bis dahin gesperrt und denken Sie daran, Ihre Gedanken und Fragen über unser unten stehendes Kommentarformular zu teilen, damit Sie uns erreichen können.
Sharing is Caring…Auf Facebook teilenAuf Twitter teilenAuf Linkedin teilenAuf Reddit teilen