Drei Modi des Redis-Clusters
1
Durch die Persistenzfunktion stellt Redis sicher, dass auch beim Neustart des Servers keine Daten (oder nur eine geringe Menge) verloren gehen, da die Daten im Speicher durch Persistenz auf der Festplatte gespeichert werden , und der Neustart lädt Daten von der Festplatte. Da die Daten jedoch auf einem Server gespeichert sind, kommt es auch zu Datenverlust, wenn auf dem Server Probleme wie ein Festplattenausfall auftreten. Um Single Points of Failure zu vermeiden, besteht eine gängige Praxis darin, mehrere Kopien der Datenbank zu replizieren und auf verschiedenen Servern bereitzustellen, sodass auch bei einem Serverausfall andere Server weiterhin Dienste bereitstellen können. Zu diesem Zweck stellt Redis eine Replikationsfunktion bereit, die die aktualisierten Daten automatisch mit anderen Datenbanken synchronisieren kann, wenn die Daten in einer Datenbank aktualisiert werden. Im Konzept der Replikation werden Datenbanken in zwei Kategorien unterteilt, eine ist die Master-Datenbank (Master) und die andere ist die Slave-Datenbank (Slave). Die Master-Datenbank kann Lese- und Schreibvorgänge ausführen. Wenn der Schreibvorgang Datenänderungen verursacht, werden die Daten automatisch mit der Slave-Datenbank synchronisiert. Die Slave-Datenbank ist im Allgemeinen schreibgeschützt und akzeptiert von der Master-Datenbank synchronisierte Daten. Eine Master-Datenbank kann mehrere Slave-Datenbanken haben, und eine Slave-Datenbank kann nur eine Master-Datenbank haben.Konfiguration der Master-Slave-Datenbank
Die Master-Datenbank muss nicht konfiguriert werden. Sie können die Slave-Datenbankinformationen aus der Redis-Conf-Datei laden Verwenden Sie redis- beim Start. server --port 6380 --slaveof 127.0.0.1 6379Die Slave-Datenbank ist im Allgemeinen schreibgeschützt und kann in beschreibbar geändert werden, die geschriebenen Daten können jedoch problemlos vom Master synchronisiert werden , sodass es weiterhin schreibgeschützt sein kann. Sie können auch den Befehl „slaveof ip port“ zur Laufzeit verwenden, um den ursprünglichen Master zu stoppen und zum Master zu wechseln. Nur „slaveof no one“ wird sich selbst zum Master machen.Prinzip der Replikation
Beim Start aus der Datenbank wird ein Synchronisierungsbefehl an die Hauptdatenbank gesendet. Nach Erhalt der Synchronisierung beginnt die Hauptdatenbank, die während des Snapshots empfangenen Befehle zu speichern werden zwischengespeichert. Wenn der Snapshot abgeschlossen ist, sendet die Master-Datenbank den Snapshot und die zwischengespeicherten Befehle zusammen an den Slave. Die Kopierinitialisierung endet. Danach wird jedes Mal, wenn der Master einen Befehl empfängt, dieser synchron an den Slave gesendet. Wenn es zu einer Trennung und erneuten Verbindung kommt, übergeben Versionen nach 2.8 die Befehle während des Trennungszeitraums an die Neudatenbank. Inkrementelle ReplikationMaster-Slave-Replikation ist eine optimistische Replikation. Wenn der Client die Schreibausführung an den Master sendet, gibt der Master die Ergebnisse nach der Ausführung sofort an den Client zurück und sendet den Befehl asynchron an den Slave, sodass er keine Auswirkungen hat Leistung. Sie können auch die Mindestanzahl der Slave-Master festlegen, die vor dem Schreiben synchronisiert werden sollen. Festplattenlose Replikation: Wenn die Festplatteneffizienz niedrig ist, wirkt sich dies auf die Replikationsleistung aus. Nach 2.8 können Sie die festplattenlose Replikation einrichten, repl-diskless-sync ja2. Sentinel
Wenn in der Master-Datenbank eine ungewöhnliche Dienstunterbrechung auftritt, können Entwickler manuell eine Slave-Datenbank auswählen, um ein Upgrade auf die Master-Datenbank durchzuführen, damit das System dies tun kann weiterhin Dienstleistungen erbringen. Allerdings ist der gesamte Prozess relativ umständlich und erfordert manuelle Eingriffe, was eine Automatisierung erschwert. Zu diesem Zweck stellt Redis 2.8 das Sentinel-Tool zur Implementierung automatisierter Systemüberwachungs- und Fehlerbehebungsfunktionen bereit. Die Rolle des Sentinels besteht darin, zu überwachen, ob die Redis-Master- und Slave-Datenbanken normal laufen. Wenn der Master ausfällt, wechselt er automatisch von der Slave-Datenbank zur Master-Datenbank. Beispiel: 1 Master 2 Slave 1 Sentinelredis-server --port 6379 redis-server --port 6380 - -slaveof 192.168.0.167 6379 redis-server --port 6381 --slaveof 192.168.0.167 6379Sentinel-Konfigurationsdatei sentinel.conf sentinel monitor mymaster 192.168.0. 167 6379 1Die 1 steht hier für 1 SentinelHinweis:
Um einen Cluster zu verwenden, müssen Sie nur die Cluster-Aktivierungskonfiguration jedes einzelnen aktivieren Datenbankknoten. Für eine ordnungsgemäße Funktion sind in jedem Cluster mindestens drei Masterdatenbanken erforderlich.
Selbst wenn Sentinel verwendet wird, wird jede Redis-Instanz vollständig gespeichert, und der in jedem Redis gespeicherte Inhalt besteht aus vollständigen Daten, was Speicher verschwendet und einen Fasseffekt hat. Um die Speichernutzung zu maximieren, können Cluster verwendet werden, bei denen es sich um verteilten Speicher handelt. Das heißt, jedes Redis speichert unterschiedliche Inhalte. Der Cluster erfordert mindestens 3 Master und 3 Slaves, und jede Instanz verwendet eine andere Konfigurationsdatei. Es besteht keine Notwendigkeit, den Master und die Slaves zu konfigurieren, der Cluster wählt sich selbst aus. Ändern Sie die Konfigurationsdatei jeder Instanz:Cluster-enabled ja --Aktivieren Sie den Cluster
cluster-config-file nodes-6382.conf -- Name der Cluster-Konfigurationsdatei, Jede Instanz muss anders konfiguriert werden. Redis erstellt automatisch eine neue basierend auf dem Dateinamen
Betrieb des Clusters
Src-Ausführung des Redis-Installationsverzeichnisses./redis-trib.rb create --replicas 1
127.0.0.1 :6380 127.0.0.1:6381 127.0.0.1:6382
127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385
Die Meisterwahl hier ist ähnlich von zookeeper
Weitere verwandte Informationen finden Sie auf der PHP-Chinese-Website! !
Das obige ist der detaillierte Inhalt vonWas sind die drei Modi des Redis-Clusters?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!