Website-Suche

So richten Sie die Redis-Replikation (mit deaktiviertem Cluster-Modus) in CentOS 8 ein – Teil 1


Redis (Remote Dictionary Server) ist ein sehr beliebter und weit verbreiteter Open-Source-, schneller, verteilter und effizienter In-Memory-Schlüsselwert-Datenbank-/Datenstrukturserver.

Es bietet zahlreiche Funktionen, die es für eine Vielzahl von Anwendungsfällen effektiv machen: als Datenbank, Caching-Schicht, 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 zur Skalierung der Leseleistung und Schutz vor Datenverlust, clientseitiges 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 außerdem automatische Failovers für die Hochverfügbarkeitsbereitstellung über Redis Sentinel, Lua-Skripting, Transaktionen und vieles mehr.

Da es sich um eine NO SQL- oder nicht relationale Datenbank handelt, bietet Redis einige Leistungsvorteile gegenüber herkömmlichen Datenbanksystemen (wie MySQL/MariaDB, PostgreSQL usw.), da sich alle seine Daten im Speicher befinden oder dort gespeichert sind und so für eine Anwendung leicht zugänglich sind, während herkömmliche Datenbanken alle Daten auf die Festplatte oder eine externe Quelle schreiben oder von dieser lesen müssen.

Redis ist eine zunehmend verbreitete Wahl für Caching, das die Wiederverwendung von zwischengespeicherten Daten (im Hauptspeicher einer Anwendung gespeichert) ermöglicht, anstatt ständig eine Datenbank nach häufig verwendeten Daten abzufragen. Daher ist es ein fantastischer Begleiter von RDMS (Relational Database Management Systems), um letztendlich die Anwendungsleistung zu verbessern.

In dieser dreiteiligen Redis-Tutorialreihe behandeln wir die Einrichtung und Verwendung einiger der wichtigsten Funktionen von Redis, nämlich Replikation, Hochverfügbarkeit mit Redis Sentinel und Redis Cluster, die Artikel sind:

Diese Anleitung zeigt, wie Sie die Redis-Replikation (mit deaktiviertem Cluster-Modus) in CentOS 8 Linux einrichten, einschließlich der Installation von Redis und der Konfiguration des Masters und Replikate und testen Sie die Replikation.

Wichtig: Ein Redis-Cluster (d. h. ein Replikationscluster) mit deaktiviertem Cluster-Modus hat eine einzelne Knotengruppe ( (z. B. ein 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 zwei Slaves).

Voraussetzungen:

  1. 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

Mit dem obigen Setup (das über einen einzelnen Primär-/Masterknoten mit Lese-/Schreibzugriff und zwei schreibgeschützten Replikatknoten verfügt) haben wir eine einzelne Knotengruppe, die alle Daten des Clusters in jedem Knoten enthält. Sobald ein Slave eine Verbindung zu einem Master herstellt, erhält er eine erste 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 wenn Schreibvorgänge auf dem Master ausgeführt werden, werden sie an alle angeschlossenen Slaves weitergegeben, um die Slave-Datensätze in Echtzeit zu aktualisieren.

Schritt 1: Redis unter CentOS 8 installieren

1. Melden Sie sich zunächst über SSH bei allen CentOS 8-Knoten an und installieren Sie dann das Redis-Paket auf allen Knoten (Master und Replikate). ) mit dem DNF-Paketmanager wie gezeigt.


dnf install @redis

2. Starten Sie nach Abschluss der Installation des Redis-Pakets den Redis-Dienst, aktivieren Sie ihn für den automatischen Start bei jedem Systemstart und prüfen Sie, ob dies der Fall ist wie folgt in Betrieb genommen.

systemctl start redis
systemctl enable redis
systemctl status redis

3. Sie können auch bestätigen, dass der Redis-Server aktiv ist und läuft, indem Sie die Überwachungsports mit dem Befehl ss wie folgt überprüfen.

ss -ltpn | grep redis-server

Schritt 2: Konfigurieren des Redis-Masterservers

4. Redis wird mithilfe der Konfigurationsdatei /etc/redis.conf konfiguriert, einer selbstdokumentierten Beispielkonfigurationsdatei. Erstellen Sie zunächst eine Sicherungskopie der Originaldatei und öffnen Sie sie dann zur Bearbeitung mit dem Befehlszeileneditor 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 mithilfe der Bind-Direktive Verbindungen auf der Loopback-Schnittstelle überwacht und akzeptiert. Um mit den Replikaten zu kommunizieren, sollte der Master so konfiguriert sein, dass er die IPv4-Loopback-Adresse und seine LAN-IP-Adresse, d. h. 10.42.0.247, überwacht.

bind 127.0.0.1 10.42.0.247

6. Als nächstes setzen Sie den Protected-Mode-Parameter auf no, um die Kommunikation mit den Replikaten wie gezeigt zu ermöglichen.

protected-mode no

Außerdem überwacht Redis den Port 6379, der mithilfe der port-Direktive festgelegt wird. Dies ist der Datenport für die Kommunikation mit Anwendungs-APIs oder CLI-Clients.

port 6379

7. Um die Master-Replica-Kommunikation optional zu sichern, können wir den Master mithilfe der requirepass-Direktive schützen, so dass die Clients/Replicas dies tun müssen Geben Sie ein Authentifizierungskennwort ein, bevor Sie Befehle ausführen oder einen Replikationssynchronisierungsprozess starten. Andernfalls lehnt der Master die Client-/Replikatanfrage ab (denken Sie daran, ein sicheres Kennwort festzulegen).

Wir werden die folgende Option zu Demonstrationszwecken verwenden, um zu zeigen, wie es funktioniert.

requirepass  Securep@55Here

8. Außerdem werden Redis-Protokolle in der Datei /var/log/redis/redis.log gespeichert. Dies wird mithilfe der logfile-Direktive festgelegt und die standardmäßige Ausführlichkeitsstufe des Servers ist notice, definiert mit dem Parameter loglevel.

loglevel  notice
logfile  /var/log/redis/redis.log

9. Da systemd der Standardsystem- und Dienstmanager in CentOS 8 ist, können Sie Redis für die Interaktion konfigurieren den systemd-Überwachungsbaum, indem Sie den supervised-Parameter auf systemd setzen.

supervised systemd

10. Nachdem Sie alle erforderlichen Konfigurationen vorgenommen haben, speichern Sie die Datei und schließen Sie sie. Starten Sie dann den Redis-Dienst neu, um die neuen Änderungen zu übernehmen.

systemctl daemon-reload
systemctl restart redis

11. Um auf den Redis-Server zuzugreifen, müssen wir redis-cli (eine Befehlszeilenschnittstelle zum Redis-Server) verwenden. Standardmäßig wird eine Verbindung zum Server auf dem localhost (am 127.0.0.1-Port 6379) hergestellt. Beachten Sie, dass die Ausführung eines Befehls vor der Authentifizierung fehlschlagen sollte, da der Server durch ein Kennwort vor Clients geschützt ist.

Verwenden Sie den Befehl auth, um das Authentifizierungskennwort anzugeben, wie im folgenden Screenshot gezeigt.

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 Verbindung zu einem Replikat herzustellen (nachdem Sie es wie im nächsten Abschnitt beschrieben konfiguriert haben), verwenden Sie -h und -p -Optionen, um die IP-Adresse/den Hostnamen bzw. den Port des Replikats anzugeben (nicht, dass Port 6379 in der Firewall des Replikats geöffnet sein muss).

redis-cli -h 10.42.0.21 -p 6379

13. Öffnen Sie als Nächstes den Datenport des Redis-Servers 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: Konfigurieren von Redis Replica/Slave-Servern

14. Um eine Redis-Instanz im laufenden Betrieb schnell als Replikat festzulegen, verwenden Sie das Dienstprogramm 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

15. Um eine Replikationsverbindung dauerhaft zu machen, müssen Sie die folgenden Änderungen in der Konfigurationsdatei vornehmen. Sichern Sie zunächst die Originaldatei und öffnen Sie sie dann zur Bearbeitung.

cp /etc/redis.conf /etc/redis.conf.org
vi /etc/redis.conf

16. Damit Clients eine Verbindung zum Replikat herstellen können, um Daten zu lesen, fügen Sie die Replikat-IP-Adresse zur Bindungsanweisung 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. Um eine Redis-Instanz als Replica zu konfigurieren, verwenden Sie den Parameter replicaof und legen Sie die IP-Adresse (oder den Hostnamen) und den Port des Masterknotens fest Werte.

replicaof 10.42.0.247 6379

Replikat auf Authentifizierung beim Master einstellen

18. Da unsere Master-Instanz durch ein Passwort geschützt ist, müssen wir als Nächstes das Passwort in der Replikatkonfiguration festlegen, damit sie sich mithilfe von masterauth beim Master authentifizieren kann Parameter.

masterauth Securep@55Here

19. Wenn ein Replikat außerdem die Verbindung zum Master verliert oder die Replikation läuft, ist das Replikat so konfiguriert, dass es auf Client-Anfragen antwortet, möglicherweise mit „veraltet > ”Daten. Wenn es sich jedoch um die erste Synchronisierung handelt, ist der Datensatz möglicherweise einfach leer. Dieses Verhalten wird durch den Parameter replica-serve-stale-data gesteuert.

Und da Replikate in Redis 2.6 standardmäßig schreibgeschützt sind, wird dies durch den Parameter replica-read-only gesteuert. Sie können weitere Anpassungen der Replikatkonfiguration vornehmen, um sie an Ihre Anwendungsanforderungen anzupassen.

20. Sobald 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: Überprüfen Sie den Replikationsstatus des Master-Replikats

22. Sobald die Replikationskonfiguration master-replica abgeschlossen ist, können wir wie folgt überprüfen, ob die Einrichtung ordnungsgemäß funktioniert.

Führen Sie auf dem Master 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 außerdem 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üsselwert in der Master-Instanz festlegen und prüfen, ob die Daten mit den Replikaten synchronisiert sind.

Gehen Sie auf dem Master wie folgt vor:

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> set domain 'linux-console.net'

24. Überprüfen Sie dann, ob die Daten wie gezeigt mit den Replikaten synchronisiert wurden.

redis-cli
127.0.0.1:6379> get domain

Schutz der Master-Instanz vor dem Risiko, einige Schreibvorgänge zu verlieren

25. Redis verfügt über eine Funktion, die es einer Master-Instanz ermöglicht, das Risiko des Verlusts einiger Schreibvorgänge auf eine bestimmte Anzahl von Sekunden zu begrenzen, falls nicht genügend Replikate verfügbar sind.

Dies bedeutet, dass ein Master die Annahme von Schreibvorgängen beenden kann, wenn weniger als N Replikate verbunden sind und eine Verzögerung von weniger oder gleich M Sekunden auftritt, wie durch min -replicas-to-write- und min-replicas-max-lag-Optionen.

Um sie festzulegen, entkommentieren Sie sie und legen Sie die Werte entsprechend Ihren Setup-Anforderungen in /etc/redis.conf fest, wie im folgenden Screenshot gezeigt. Diese Konfiguration bedeutet, dass der Master ab dem letzten Ping an Replikate nach 10 Sekunden keine Schreibvorgänge mehr akzeptiert, wenn weniger als zwei Replikate online sind.

min-replicas-to-write 2
min-replicas-max-lag 10

Weitere Optionen finden Sie im Rest der Konfigurationsdatei /etc/redis.conf. Weitere Einzelheiten zur Replikation finden Sie in der Redis-Dokumentation.

Im nächsten Artikel erfahren Sie, wie Sie Redis für Hochverfügbarkeit mit Sentinel in CentOS 8 einrichten. Bis dahin bleiben Sie verschlossen und denken Sie daran, Ihre Gedanken und Fragen über unser Kommentarformular unten mitzuteilen, damit Sie uns erreichen können.