Redis Cluster ist eine Architektur, die Ihre Daten automatisch auf mehrere Knoten verteilt und hohe Verfügbarkeit bietet. Besonders für große Anwendungen ist es eine unverzichtbare Lösung. In diesem Artikel erklären wir Schritt für Schritt die Installation und Skalierung von Redis Cluster. Wenn Sie Redis derzeit auf einem einzelnen Server nutzen, bietet der Wechsel zu einem Cluster mehr Flexibilität und Fehlertoleranz.
Was ist Redis Cluster?
Redis Cluster unterteilt die Daten in 16384 Hash-Slots und verteilt diese Slots auf die Knoten. Jeder Knoten verwaltet nur seine eigenen Slots. Zum Beispiel werden bei einem 3-Knoten-Cluster die Slots ungefähr auf 5461, 5461 und 5462 verteilt. Dank dieser Verteilung werden Schlüssel automatisch an den richtigen Knoten weitergeleitet.
Vorteile des Clusters
- Hohe Leistung: Operationen werden nicht auf einen einzelnen Punkt geladen, sondern verteilt.
- Automatische Partitionierung: Sie müssen Ihre Daten nicht manuell aufteilen.
- Hohe Verfügbarkeit: Durch die Definition von Replica-Knoten (Backups) für jeden Knoten können Sie Ausfallzeiten vermeiden.
- Einfache Skalierung: Sie können Kapazität erhöhen, indem Sie Knoten hinzufügen und Slots neu verteilen.
Schritte zur Installation von Redis Cluster
1. Umgebungsvorbereitung
Ich empfehle mindestens 3 Master-Knoten und in der empfohlenen Konfiguration einen Replica pro Master, also insgesamt 6 Knoten. Reservieren Sie für jeden Knoten einen separaten Linux-Server (oder Docker-Container). Verwenden wir zum Beispiel die folgenden IPs:
- 10.0.0.1:7000 (Master1)
- 10.0.0.2:7000 (Master2)
- 10.0.0.3:7000 (Master3)
- 10.0.0.1:7001 (Replica1)
- 10.0.0.2:7001 (Replica2)
- 10.0.0.3:7001 (Replica3)
Kompilieren Sie Redis auf jedem Knoten aus dem Quellcode oder installieren Sie es mit einem Paketmanager. Erstellen Sie dann für jeden Knoten die Datei redis.conf. Fügen Sie die folgenden Einstellungen hinzu, um den Cluster-Modus zu aktivieren:
port 7000 cluster-enabled yes cluster-config-file nodes-7000.conf cluster-node-timeout 5000 appendonly yes
2. Starten der Knoten
Starten Sie den Redis-Server für jeden Knoten. Zum Beispiel:
redis-server /pfad/zu/redis-7000.confFühren Sie zur Überprüfung den Befehl redis-cli -p 7000 ping aus. Jeder Knoten sollte mit PONG antworten.
3. Erstellen des Clusters
Sie können den Cluster mit dem Tool redis-cli einrichten. Der folgende Befehl erstellt einen Cluster mit 3 Mastern und 3 Replicas:
redis-cli --cluster create 10.0.0.1:7000 10.0.0.2:7000 10.0.0.3:7000 10.0.0.1:7001 10.0.0.2:7001 10.0.0.3:7001 --cluster-replicas 1Dieser Befehl wählt die Master aus und weist jedem einen Replica zu. Während des Vorgangs werden Sie aufgefordert, die Slot-Verteilung zu bestätigen. Geben Sie „yes“ ein und drücken Sie die Eingabetaste.
4. Überprüfen des Cluster-Status
Verwenden Sie den folgenden Befehl, um die Installation zu überprüfen:
redis-cli --cluster check 10.0.0.1:7000In der Ausgabe sehen Sie den Status aller Knoten, die Slot-Verteilung und die Replica-Beziehungen. Sie können auch mit den Befehlen cluster info und cluster nodes detaillierte Informationen abrufen.
Schritte zur Skalierung
Hinzufügen eines neuen Knotens
Angenommen, Sie möchten Ihrem bestehenden Cluster einen neuen Master-Knoten hinzufügen. Bereiten Sie einen neuen Server vor (z. B. 10.0.0.4:7000) und starten Sie Redis im Cluster-Modus. Fügen Sie den Knoten dann mit folgendem Befehl zum Cluster hinzu:
redis-cli --cluster add-node 10.0.0.4:7000 10.0.0.1:7000Nach diesem Vorgang befindet sich der neue Knoten im Handshake-Status. Er hat noch keine Slots. Führen Sie den folgenden Befehl aus, um die Slots neu zu verteilen:
redis-cli --cluster rebalance 10.0.0.1:7000Wichtig: Der Rebalance-Vorgang versucht, die Slots gleichmäßig auf alle Knoten zu verteilen. Wenn Sie bestimmten Knoten mehr Slots zuweisen möchten, können Sie den Parameter --cluster-weight verwenden.
Hinzufügen eines Replica
Das Hinzufügen eines neuen Replica-Knotens erfolgt ähnlich. Starten Sie zunächst den Knoten und fügen Sie ihn dann mit folgendem Befehl hinzu:
redis-cli --cluster add-node 10.0.0.4:7001 10.0.0.1:7000 --cluster-slaveWenn der Knoten ein Replica eines bestimmten Masters sein soll, können Sie --cluster-slave durch --cluster-slave --cluster-master-id ersetzen.
Entfernen eines Knotens
Um einen Knoten aus dem Cluster zu entfernen, müssen Sie zunächst alle Slots auf diesem Knoten leeren. Der folgende Befehl verschiebt die Slots vom Quellknoten zum Zielknoten:
redis-cli --cluster reshard 10.0.0.1:7000 --cluster-from --cluster-to --cluster-slotsNachdem die Slots geleert wurden, entfernen Sie den Knoten aus dem Cluster:
redis-cli --cluster del-node 10.0.0.1:7000Leistung und wichtige Hinweise
Bei der Verwendung von Redis Cluster sollten Sie auf folgende Punkte achten:
- Client-Unterstützung: Stellen Sie sicher, dass Ihre verwendete Redis-Client-Bibliothek den Cluster-Modus unterstützt. Zum Beispiel können gängige Bibliotheken wie Jedis, StackExchange.Redis oder redis-py im Cluster-Modus arbeiten.
- Netzwerklatenz: Die Netzwerklatenz zwischen den Knoten kann die Leistung beeinträchtigen. Hosting in derselben Rechenzentrumsumgebung mit geringer Latenz wird empfohlen.
- Backup: Die Cluster-Struktur kann Backup-Vorgänge komplex gestalten. Sichern Sie Ihre Daten regelmäßig mit RDB- oder AOF-Dateien.
- Überwachung: Überwachen Sie den Zustand regelmäßig mit dem INFO-Befehl von Redis und redis-cli --cluster check.
Fazit
Die Installation und Skalierung von Redis Cluster bietet bei richtiger Vorgehensweise eine flexible, leistungsstarke und fehlertolerante Datenbankinfrastruktur. Ob Sie mit 3 Knoten beginnen oder auf 100 Knoten erweitern – Redis Cluster ist eine ideale Wahl für wachsende Anwendungen. Bei Fragen zur Konfiguration Ihres Redis Clusters können Sie sich jederzeit an uns wenden.