GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So richten Sie einen Redis-Cluster in CentOS 8 ein – Teil 3

Redis-Cluster ist ein eingebautes Redis Funktion, die automatisches Sharding, Replikation und Hochverfügbarkeit unterstützt, die zuvor mit Sentinels implementiert wurde . Es ist für zwei Hauptzwecke konzipiert:Zum einen soll Ihr Dataset automatisch auf mehrere Instanzen aufgeteilt werden und zum anderen ein gewisses Maß an Verfügbarkeit während der Partitionierung bereitgestellt werden, um den Betrieb fortzusetzen, wenn einige Instanzen (insbesondere Master) ausfallen oder nicht in der Lage sind, mit den meisten zu kommunizieren Knoten im Cluster.

Bei größeren Ausfällen (z. B. wenn die Mehrheit der Masterinstanzen nicht verfügbar ist) stoppt der Cluster jedoch den Betrieb. Wenn ein Master und ein Slave gleichzeitig ausfallen, kann der Cluster den normalen Betrieb nicht fortsetzen (obwohl die Problemumgehung darin besteht, weitere Knoten hinzuzufügen oder eine Asymmetrie im Cluster zu erzeugen, um das Cluster-Layout automatisch zu ändern).

Laut Redis Cluster-Dokumentation, dem „minimal cluster “, das wie erwartet funktioniert, muss mindestens 3 Master-Knoten enthalten. Aber das am besten geeignete Setup für Hochverfügbarkeit sollte mindestens 6 Knoten mit drei Mastern und drei Slaves haben, wobei jeder Master einen Slave hat.

Wichtig :Redis Cluster hat auch einige Einschränkungen, die fehlende Unterstützung für NATted sind Umgebungen sowie solche, in denen IP-Adressen oder TCP-Ports neu zugeordnet werden, beispielsweise unter Docker . Außerdem wird es nicht von jeder Client-Bibliothek unterstützt.

Dieser Artikel zeigt, wie Sie einen Redis-Cluster einrichten (mit Cluster-Modus deaktiviert ) in CentOS 8 . Es umfasst die Installation von Redis, die Konfiguration der Cluster-Knoten, die Erstellung eines Clusters und das Testen des Cluster-Failovers.

Hinweis :Für diese Anleitung verwenden wir frische/leere Redis-Instanzen, um den Cluster-Modus auszuführen. Der Cluster-Modus funktioniert nicht mit einigen Konfigurationen, die in den ersten beiden Anleitungen unserer Redis-Serie vorgenommen wurden, insbesondere nicht, wenn die Replik des Parameters verwendet wird.

Voraussetzungen:

  1. Server mit CentOS 8-Installation

Einrichtung der Testumgebung

Redis Master1: 10.42.0.247
Redis Master2: 10.42.0.197
Redis Master3: 10.42.0.132

Redis Slave1: 10.42.0.200
Redis Slave2: 10.42.0.21
Redis Slave3: 10.42.0.34

Logisches Diagramm des Redis-Clusters

Unser Setup verfügt über 3 Master-Knoten mit Lese-/Schreibzugriff und 3 Replikat-Knoten mit Lesezugriff, wobei jeder Master über ein Replikat verfügt, sodass drei Shards alle Daten des Clusters in jedem Knoten enthalten. Eine Anwendungs-API oder CLI Der Client kann nur auf die Master-Knoten schreiben, aber von jedem Knoten im Cluster lesen.

Schritt 1:Redis auf allen Knoten installieren

1. Melden Sie sich über SSH bei allen Instanzen an , und führen Sie dann den folgenden Befehl aus, um Redis zu installieren Modul mit dem DNF-Paketmanager wie gezeigt.

# dnf module install redis

2. Als nächstes starten Sie Redis Dienst, aktivieren Sie ihn so, dass er beim Systemstart automatisch startet, und überprüfen Sie seinen Status, um sicherzustellen, dass er ausgeführt wird (überprüfen Sie den Dienst auf allen 6 Instanzen):

# systemctl start redis
# systemctl enable redis
# systemctl status redis

Schritt 2:Redis-Instanzen auf allen Knoten konfigurieren

3. In diesem Abschnitt wird beschrieben, wie Sie die Redis-Clusterknoten konfigurieren. Denken Sie daran, die Konfigurationen hier auf allen Knoten durchzuführen.

Verwenden Sie die /etc/redis.conf Konfigurationsdatei zum Konfigurieren von Redis Server. Als empfohlene Vorgehensweise erstellen Sie eine Sicherungskopie der Originaldatei, bevor Sie sie mit einem Befehlszeilen-Texteditor Ihrer Wahl bearbeiten.

# cp /etc/redis.conf /etc/redis.conf.orig
# vi /etc/redis.conf

4. Suchen Sie als Nächstes die folgenden Konfigurationsparameter und bearbeiten Sie ihre Werte wie gezeigt. Die Bindung Parameter setzt, auf der die Schnittstelle des Redis-Servers lauscht, setzen Sie seinen Wert auf die Instanz-LAN-IP. Entfernen Sie 127.0.0.1 weil wir erkannt haben, dass das Belassen dort den Prozess der Clusterbildung verlangsamt, insbesondere die Phase des Beitritts zum Cluster.

bind  10.42.0.247

Stellen Sie dann den geschützten Modus ein auf no um Verbindungen von den anderen Instanzen im Cluster zuzulassen.

protected-mode no

Der Port-Parameter definiert den Port, den der Redis-Server auf Verbindungen überwacht, der Standardwert ist 6379 . Dies ist der Datenport für die Kommunikation mit Clients.

port 6379

Stellen Sie Redis Listen Interface und Port ein

5. Der nächste Parametersatz aktiviert den Cluster-Modus und stellt einige seiner nützlichen Funktionen ein. Die clusterfähige Parameter, wenn auf yes gesetzt , aktiviert den Clustermodus.

cluster-enabled yes

Als nächstes die cluster-config-file Parameter legt den Namen der Cluster-Konfigurationsdatei eines Cluster-Knotens fest (z. B. nodes-6379.conf ). Die Datei wird im Arbeitsverzeichnis erstellt (Standard ist /var/lib/redis definiert mit dir Parameter) und kann nicht vom Benutzer bearbeitet werden.

cluster-config-file nodes-6379.conf

Die nächste nützliche Cluster-Option ist cluster-node-timeout , wird es verwendet, um die maximale Zeit in Millisekunden festzulegen, die eine Instanz nicht verfügbar sein kann, damit sie als fehlerhaft angesehen wird. Ein Wert von 15000 entspricht 15 Sekunden.

cluster-node-timeout 15000

Zeitüberschreitung für Cluster-Knoten festlegen

6. Wir müssen auch die Redis-Persistenz auf der Festplatte aktivieren. Wir können einen der Persistenzmodi verwenden, das ist Append Only File (AOF ):Es protokolliert (in der Datei appendonly.aof unter dem Arbeitsverzeichnis erstellt) jede Schreiboperation, die erfolgreich vom Server empfangen wurde. Die Daten werden während des Serverstarts abgespielt, um den ursprünglichen Datensatz zu rekonstruieren.

Um es zu aktivieren, setzen Sie appendonly Parameter auf yes .

appendonly yes

Persistenzoptionen festlegen

7. Nachdem Sie alle Änderungen vorgenommen haben, starten Sie Redis neu Dienst auf allen Knoten, um die letzten Änderungen zu übernehmen.

# systemctl restart redis

8. An diesem Punkt sollte nun jeder Cluster-Knoten eine ID haben . Sie können dies in der Protokolldatei unter /var/log/redis/redis.log überprüfen .

# cat /var/log/redis/redis.log

Protokolldatei des Cluster-Knotens prüfen

9. Öffnen Sie als Nächstes Port 6397 und 16379 auf allen Instanzen. Der spätere Port wird für den Clusterbus verwendet (ein Knoten-zu-Knoten Kommunikationskanal unter Verwendung eines binären Protokolls). Dies ist eine Grundvoraussetzung für die TCP-Verbindungen des Redis-Clusters.

# firewall-cmd --zone=public --permanent --add-port=6379/tcp 
# firewall-cmd --zone=public --permanent --add-port=16379/tcp 
# firewall-cmd --reload

Schritt 3:Erstellen des Redis-Clusters

10. Verwenden Sie zum Erstellen des Clusters die redis-cli-Befehlszeile Kunde wie folgt. Die --cluster create aktiviert die Clustererstellung und --cluster-replicas 1 bedeutet ein Replikat pro Master erstellen.

Für unser Setup mit 6 Knoten haben wir 3 Master und 3 Slaves.

Beachten Sie, dass die ersten 6 Knoten als Master betrachtet werden (M) und die nächsten drei werden als Sklaven betrachtet (S) . Der erste Slave, also 10.42.0.200:6379 repliziert den ersten Master, d. h. 10.42.0.247:6379 , repliziert der zweite Slave den zweiten Master in dieser Reihenfolge.

Der folgende Befehl ist so formatiert, dass das Ergebnis unseren obigen logischen Aufbau darstellt.

# redis-cli --cluster create 10.42.0.247:6379 10.42.0.197:6379 10.42.0.132:6379 10.42.0.200:6379 10.42.0.21:6379 10.42.0.34:6379 --cluster-replicas 1

Redis-Cluster erstellen

11. Führen Sie nach erfolgreicher Clustererstellung den folgenden Befehl auf einem beliebigen Host aus (geben Sie seine IP-Adresse mit dem -h an Flag), um alle Cluster-Knoten aufzulisten.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes

Sie sollten alle Cluster-Knoten sehen können, wobei die Slaves ihre Master angeben, wie im folgenden Screenshot gezeigt.

Alle Cluster-Knoten auf jedem Knoten prüfen

Die verschiedenen Felder sind in dieser Reihenfolge:Knoten-ID, IP-Adresse:Port, Flags, letzter Ping gesendet, letzter Pong empfangen, Konfigurationsepoche, Link-Status, Slots (für Master).

Schritt 4:Redis-Cluster-Failover testen

12. In diesem Abschnitt zeigen wir, wie ein Cluster-Failover getestet wird. Nehmen wir zuerst die Meister zur Kenntnis.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

Redis-Cluster-Master auflisten

Beachten Sie auch die Redis-Slaves.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

Alle Redis-Cluster-Slaves auflisten

13. Als nächstes stoppen wir den Redis-Dienst auf einem der Master-Knoten, z. B. 10.42.0.197 und überprüfen Sie alle Master-Knoten im Cluster.

# systemctl stop redis
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master

Auf dem folgenden Screenshot können Sie sehen, dass der Knoten 10.42.0.197:6367 befindet sich im Fehlerzustand und sein Slave 10.42.0.21:6379 wurde zum Master-Status befördert.

Überprüfen Sie den Cluster-Failover-Status

14. Starten wir nun die Redis Dienst noch einmal auf dem ausgefallenen Knoten und überprüfen Sie alle Master im Cluster.

# systemctl start redis
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

Überprüfen Sie den Status des gesamten Redis-Cluster-Masters

Überprüfen Sie außerdem die Cluster-Slaves, um zu bestätigen, dass der ausgefallene Master jetzt ein Slave ist.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

Alle Redis-Cluster-Slaves prüfen

Schritt 5:Testen der Datenreplikation im gesamten Redis-Cluster

15. In diesem letzten Abschnitt wird erläutert, wie Sie die Cluster-Datenreplikation überprüfen. Wir erstellen einen Schlüssel und einen Wert auf einem der Master und versuchen dann, ihn wie folgt von allen Cluster-Knoten zu lesen. Verwenden Sie das -c Schalten Sie um, um die Cluster-Unterstützung unter dem Dienstprogramm redis-cli zu aktivieren und greifen Sie im Cluster-Modus auf Daten zu.

# redis-cli -c -h 10.42.0.247 -p 6379 set name 'TecMint.com'
# redis-cli -c -h 10.42.0.247 -p 6379 get name
# redis-cli -c -h 10.42.0.21 -p 6379 get name
# redis-cli -c -h 10.42.0.132 -p 6379 get name
# redis-cli -c -h 10.42.0.200 -p 6379 get name
# redis-cli -c -h 10.42.0.197 -p 6379 get name
# redis-cli -c -h 10.42.0.34 -p 6379 get name

Überprüfen Sie die Datenreplikation des Redis-Clusters

Das Endergebnis ist der Redis-Cluster ist die bevorzugte Methode für automatisches Sharding, Replikation und Hochverfügbarkeit. Es gibt viele andere gut dokumentierte Konfigurationsparameter im Rest der /etc/redis.conf Datei finden Sie weitere Informationen in der offiziellen Dokumentation:Redis-Cluster-Tutorial und Redis-Cluster-Spezifikation.

Damit sind wir am Ende der dreiteiligen Redis-Tutorial-Reihe angelangt. Das Feedback-Formular unten kann verwendet werden, um Fragen oder Kommentare zu posten.

Sharing is Caring…
Auf Facebook teilenAuf Twitter teilenAuf Linkedin teilenAuf Reddit teilen
Cent OS
  1. So installieren und konfigurieren Sie Redis unter CentOS 7

  2. So installieren und konfigurieren Sie Redis unter CentOS 8

  3. So installieren Sie Redis Server auf CentOS 8 / RHEL 8

  4. So richten Sie SSH-Schlüssel unter CentOS 8 ein

  5. So installieren Sie Redis unter CentOS 7

So installieren Sie Redis unter CentOS 7

So installieren Sie phpRedisAdmin unter CentOS 7

So installieren Sie PhpRedmin unter CentOS 7

So installieren Sie Redis unter CentOS 8

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

So richten Sie Redis für Hochverfügbarkeit mit Sentinel in CentOS 8 ein – Teil 2