Redis Cluster ist eine beliebte Lösung für die Skalierung von Redis -Bereitstellungen, um eine höhere Verfügbarkeit, Fehlertoleranz und Daten zu erzielen, die über mehrere Knoten hinweg sind. Die ordnungsgemäße Konfiguration von Redis -Cluster beinhaltet mehrere Best Practices, die eine optimale Leistung, Zuverlässigkeit und Verwaltbarkeit gewährleisten.
Clusterarchitektur und Knotenkonfiguration
Redis -Cluster benötigt mindestens drei Master -Knoten, um zuverlässig zu arbeiten. Im Idealfall sollte ein Produktionscluster mindestens sechs Knoten enthalten, wobei jeder Meister eine oder mehrere Repliken hat. Dieses Setup sorgt für eine hohe Verfügbarkeit und ermöglicht ein automatisches Failover, falls ein Masterknoten fehlschlägt. Jeder Knoten wird im Clustermodus ausgeführt und muss bestimmte Konfigurationen aktivieren, einschließlich:
- `cluster-fähiges Ja", um den Cluster-Modus für jede Redis-Instanz zu aktivieren.
-`cluster-config-file` Angabe der Datei, in der der Clusterknotenstatus gespeichert wird (z. B.` nodes.conf`).
-`Cluster-Knoten-Timeout` Definieren der maximalen Zeit, die ein Knoten nicht erreichbar sein kann, bevor er in Betracht gezogen wird (üblicherweise auf 5000 bis 15000 Millisekunden eingestellt).
Das "Cluster-Config-File" wird von Redis automatisch verwaltet und darf nicht manuell bearbeitet werden, da es kritische Zustandsinformationen wie Knoten-IDs, Zuordnungen und Slot-Besitzer beibehält. Jeder Knoten weist sich bei Startup eine eindeutige Knoten -ID zu, die über seine Lebensdauer bleibt, auch wenn sich IP oder Port ändert.
Hardware- und Netzwerk -Setup
Knoten sollten auf separaten physischen oder virtuellen Maschinen eingesetzt werden, um einzelne Fehlerpunkte zu vermeiden. Die Netzwerkkonnektivität zwischen Knoten muss sowohl die Client -Kommunikationsports (in der Regel TCP 6379 oder den verwendeten Serviceport) als auch der Cluster -Busanschluss (ein zweiter Port -Port typischerweise TCP -Serviceport + 10000, z. B. 16379) für die CLUSTER -Internode -Kommunikation ermöglichen.
Konfigurieren Sie sorgfältige Netzwerkoberflächen und Firewalls, um diesen Datenverkehr zwischen Knoten und optional zwischen Clients und Clusterknoten zu ermöglichen. Das Festlegen der "Bind" -Richtlinie auf bestimmte private IPs, anstatt an alle Schnittstellen zu binden, verbessert die Sicherheit.
Persistenz und Datendauer
Aktivieren Sie Persistenzmechanismen wie RDB-Snapshots oder AOF (nur Datei anhängen) abhängig von den erforderlichen Datendauer- und Leistungsabfällen. AOF bietet eine bessere Haltbarkeit, indem sie jede Schreibvor Operation angemeldet hat, kann jedoch Latenz und IO -Overhead hinzufügen. Die Kombination von RDB -Schnappschüssen mit AOF kann dazu beitragen, Leistung und Haltbarkeit auszugleichen.
Die Anweisung "Anhang Ja" ermöglicht den AOF -Modus. Diese Einstellungen sollten sorgfältig nach Workload -Mustern und akzeptablen Datenverlustfenstern abgestimmt werden.
Speicherverwaltung und Räumungsrichtlinien
Konfigurieren Sie die Einstellung "MaxMemory", um sicherzustellen, dass Redis in den verfügbaren Speicher auf dem Knoten passt. Wählen Sie eine geeignete Räumungsrichtlinie mit `maxMemory-policy` wie" Allkeys-lru "aus, um einen kürzlich verwendeten Algorithmus über alle Tasten zu verwenden, wenn Speichergrenzwerte erreicht sind. Die konsistente Überwachung der Speicherverwendung und des Hit/Miss -Verhältnisses ist von entscheidender Bedeutung.
Redis Cluster funktioniert am besten, wenn der Datensatz auf jedem Knoten vollständig in den Speicher passt. Vermeiden Sie übermäßige Tausch- oder Speicherüberbekämpfung.
Slot -Management und Datenverteilung
Der Cluster unterteilt den Schlüsselraum in 16.384 Hash -Slots, die über alle Master -Knoten verteilt sind. Stellen Sie beim Erstellen des Cluster sicher, dass alle Slots von einem Masterknoten abgedeckt werden. Clients müssen sich bewusst sein, um Abfragen an den richtigen Knoten basierend auf der Hash-Slot-Berechnung weiterzuleiten.
Vermeiden Sie Operationen mit mehreren Tasten, die auf unterschiedliche Slots zugeordnet sind, da diese Cross-Slot-Befehle erfordern, die begrenzt oder weniger effizient sind.
Verwenden Sie Tools wie `Redis-cli-Cluster create", um Cluster mit ordnungsgemäßer Slot-Allokation und Replikatzuweisung automatisch zu starten.
Client -Konfiguration für das Clusterbewusstsein
Konfigurieren Sie Client -Bibliotheken so, dass sie die Redis -Cluster -Topologie ändert. Viele Client -Bibliotheken bieten Clusterunterstützung, einschließlich automatischer Erkennung und Neukonfiguration von Clusterknoten, wenn sie ausfallen oder um Umformplätze umgestaltet werden. Dies verhindert Client -Fehler und verbessert die Zuverlässigkeit bei Knotenfehlern oder Skalierungsvorgängen.
Die Clients sollten so konfiguriert werden, dass sie nach dem Wiederholungsverfahren oder Bitten von Umleitungen nachzusagen und aktualisierte Ansichten des Clusterzustands beibehalten.
Sicherheitsüberlegungen
Sichere Clusterknoten durch Aktivieren der Kennwortauthentifizierung (`Anforderungsanweisung), die Begrenzung des Netzwerkzugriffs über Firewall -Regeln und die Einschränkung der exponierten Schnittstellen über die Konfiguration von Bindungen. Verwenden Sie nach Möglichkeit die TLS -Verschlüsselung, um Daten im Durchschnitt zu schützen.
Deaktivieren Sie den geschützten Modus beim Ausführen von Redis im Cluster -Modus, stellen Sie jedoch sicher, dass die Networking -Konfigurationen den Cluster von nicht vertrauenswürdigen Clients isolieren.
Überwachung und Wartung
Implementieren Sie eine umfassende Überwachung der Clustergesundheit, einschließlich der Verfügbarkeit von Knoten, Latenz, Speicherverbrauch, Replikationsverzögerung und Änderungen des Clusterzustands. Tools wie Redis Sentinel, Überwachungsplattformen von Drittanbietern oder Cloud-Anbieterlösungen sollten Teil der Betriebsstrategie sein.
Testen Sie regelmäßig Failover -Mechanismen und führen Sie kontrollierte Knoten -Neustarts oder Skalierungsübungen durch, um die Widerstandsfähigkeit der Cluster zu überprüfen.
Leistungsstimmen
Tune Redis und die Clusterkonfiguration basierend auf Workload -Einzelheiten:
- Minimieren Sie Blockierungsbefehle und verwenden Sie Pipelining- oder Lua -Skripte, um den Durchsatz zu optimieren.
-Passen Sie `cluster-Node-Timeout` nach Netzwerklatenzeigenschaften an, um Fehlfälle zu vermeiden.
- Verwenden Sie eine konsistente Hashing- und Smart -Key -Benennung, um die Slot -Verteilungen zu optimieren.
- Vermeiden Sie große Schlüssel oder Werte und überlegen Sie, ob große Objekte in kleinere Stücke zerlegt werden.
- Verwenden Sie die nativen Mechanismen von Redis -Cluster zum horizontalen Skalieren, indem Sie Knoten hinzufügen oder entfernen und Slots neu ausbauen.
Backup und Genesung
Design -Backup -Strategien, die mit dem Cluster -Setup ausgerichtet sind. Verwenden Sie periodische RDB -Schnappschüsse von Master -Knoten oder Repliken und speichern Sie die Backups extern. Vermeiden Sie es, Backups direkt auf einem Live -Cluster ohne ordnungsgemäße Slot- und Knotenzustandssynchronisation wiederherzustellen.
Für die Wiederherstellung werden von Redis empfohlene Verfahren zur Rekonstruktion von Clustern von gespeicherten Konfigurationen und Sicherungen empfohlen.
Zusammenfassung
Best Practices für die Redis -Cluster -Konfigurationsabdeckung:
- Einrichten von mindestens drei Masterknoten mit Repliken für Failover.
-Sicherstellen, dass ordnungsgemäße clusterbezogene Konfigurationsanweisungen (`cluster-fähig", `cluster-config-file`,` cluster-node-Timeout`)) sicherstellen.
- Bereitstellen von Knoten auf geeigneter Hardware mit korrekten Netzwerkeinstellungen für die Client- und Cluster -Buskommunikation.
- Aktivieren Sie die Ausdauer und das Einstellen von Speicher- und Räumungsrichtlinien für die Anforderungen der Arbeitsbelastung.
- Hash-Slots effektiv verwalten und sicherstellen, dass Clients günstig sind.
- Sicherung des Clusters mit Authentifizierung und Netzwerksteuerungen.
- Überwachen Sie die Gesundheit und Leistung von Cluster regelmäßig.
- Planung für Sicherungs-, Wiederherstellungs- und Skalierungsvorgänge sorgfältig.