Heim  >  Artikel  >  Datenbank  >  Welche drei Möglichkeiten gibt es für Redis-Clustering?

Welche drei Möglichkeiten gibt es für Redis-Clustering?

WBOY
WBOYnach vorne
2023-05-26 14:37:131428Durchsuche

Redis verfügt über drei Clustering-Methoden: Master-Slave-Replikation, Sentinel-Modus und Cluster-Cluster.

Master-Slave-Replikation

Welche drei Möglichkeiten gibt es für Redis-Clustering?

Grundprinzip

Wenn ein neuer Slave-Server erstellt wird, Der Slave-Server sendet einen SYNC-Befehl an den Hauptserver. Nach dem Empfang des SYNC-Befehls führt der Hauptserver einen BGSAVE-Befehl aus Die generierte RDB-Datei wird an den Slave-Server gesendet. Der Slave-Server verwendet diese Datei, um Daten in den Speicher zu laden, und dann sendet der Master-Server den Pufferbefehl im Format des Redis-Befehlsprotokolls an den Slave-Server. Danach wird jedes Mal, wenn der Master-Dienst einen Befehl ausführt, dieser mit dem Slave-Server synchronisiert. Selbst wenn mehrere Slave-Server SYNC-Befehle an den Master-Server senden, führt der Master-Server nur einen BGSAVE-Befehl aus, um die nächste Synchronisierungsanforderung zu verarbeiten. Ein Master-Server kann mehrere Slave-Server haben, und Slave-Server können auch Slave-Server haben, wodurch eine graphische Struktur entsteht. Die Replikationsfunktion blockiert den Master-Server nicht. Selbst wenn eine oder mehrere Synchronisierungsanforderungen vorliegen, kann dies der Fall sein weiterhin Befehlsanfragen verarbeiten.

Persistenzschalter

Wenn der Master-Slave-Replikationsmodus konfiguriert ist, muss die Persistenzfunktion des Hauptservers aktiviert werden Wenn der Hauptserver ausgeschaltet ist, gehen alle Daten des Slave-Servers verloren. Selbst wenn der Sentinel-Modus konfiguriert ist, startet der Master-Server den Prozess automatisch schnell, sodass im Sentinel-Modus kein neuer Master-Server ausgewählt wurde Der Start des Master-Dienstes führt auch dazu, dass auf dem Subserver viele Daten verloren gehen.

Konfiguration

Um einen Master-Slave-Replikationsmodus zu konfigurieren, müssen Sie nur den Befehl Slaveof verwenden, ihn in der Konfigurationsdatei conf hinzufügen oder den Befehl in Redis ausführen.

SLAVEOF host port

Sentinel-Modus

Welche drei Möglichkeiten gibt es für Redis-Clustering?

Grundprinzip

Das Sentinel-System von Redis wird zur Verwaltung mehrerer verwendet Redis führt hauptsächlich die folgenden drei Dinge aus:

Überwachung: Sentinel überprüft kontinuierlich den Betriebsstatus der Master- und Slave-Server

Erinnerung: Wenn ein Redis-Server ausfällt, können Sie ihn verwenden Die API oder andere Anwendungen senden Benachrichtigungen. , verbinden sich die verbleibenden Slave-Server automatisch und kopieren die Daten des gewählten neuen Servers.

Das Sentinel-System von Redis ist ein verteiltes System, und ein oder mehrere Sentinels können im System konfiguriert werden.

Starten

Verwenden Sie redis-sentinel zum Starten

redis-sentinel sentinel.confy

Sie können auch redis-server zum Starten verwenden

redis-server sentinel.conf --sentinelyy

Die beiden oben genannten Sentinel können auf eine der folgenden Arten gestartet werden: Sie müssen eine Konfigurationsdatei angeben, um Sentinel zu starten, andernfalls kann es nicht gestartet werden:

Welche drei Möglichkeiten gibt es für Redis-Clustering? Konfiguration

a Sentinel. Die conf-Datei erfordert mindestens eine Konfiguration:

sentinel monitor mymaster 127.0.0.1 6379 2

Überwacht einen Host mit einem Alias ​​namens mymaster, die Adresse ist 127.0.0.1 und der Port ist 6379. Um diesen Master-Server als ungültig zu beurteilen, sind mindestens zwei Sentinel-Zustimmungen erforderlich.

Unabhängig davon, wie viele Sentinels eingerichtet sind, um den Ausfall eines Hauptservers zu ermitteln, sind mehrere Sentinels im System erforderlich, um die Fehlermigration zu unterstützen nicht durchführbar.

Fehlermigration

Wenn ein Sentinel feststellt, dass der Hauptserver offline ist, wird dies als subjektiv offline bezeichnet. Nur mehrere Sentinels stellen fest, dass der Hauptdienst offline ist und kommunizieren miteinander Wenn Befehle übermittelt werden, um festzustellen, ob der Hauptserver offline ist, wird dies als objektiv offline bezeichnet. Erst wenn der Master-Server objektiv offline ist, wird der Anführer Sentinel gewählt. Nach der Wahl wird über einen neuen Master-Server abgestimmt, der zum Master-Server aufgerüstet werden soll. Und senden Sie den Befehl „Slaveof no one“ an den ausgewählten Slave-Server, um ihn zum Master-Server zu machen. Über die Veröffentlichungs- und Abonnementfunktion wird die neue Konfiguration zur Aktualisierung an andere Sentinels gesendet, und der Befehl „Slaveof“ wird an den Offline-Master-Server gesendet it Replizieren des neuen Master-Servers Wenn alle Slave-Server mit der Replikation des neuen Master-Servers begonnen haben, beendet der Leader Sentinel diese Fehlermigration.

Wenn eine Redis-Instanz neu konfiguriert wird, unabhängig davon, ob sie als Master-Server, Slave-Server oder Slave-Server eines anderen Master-Servers festgelegt ist, wird Sentinel neu konfiguriert. Die Instanz sendet ein # 🎜🎜#-Befehl, um sicherzustellen, dass diese Konfigurationen auf der Festplatte gespeichert bleiben.

CONFIG REWRITECluster-Cluster

之前的主从复制,哨兵模式都难以再现扩容,而Redis cluster集群实现了对Redis的水平扩容,即启动N个Redis节点,每个节点又可以有自己的从服务器,将数据均匀分布的存储在这N个结点上,每个节点存储数据的1/N。Redis cluster集群就是一个可以在多个Redis节点之间进行数据共享的设施;Redis cluster集群采用的是无中心化配置,即节点A无法处理,会将请求转发只节点B进行处理。

键分布模型

Redis集群中的键空间被分割为16384个槽位。Redis采用CRC16算法对16384个槽位进行分配,每个主节点负责其中一部分。为了保证高可用,cluster模式也引入了主从复制模式,一个主节点对应一个或多个从节点,当主节点发生宕机时,可进行故障转移,将子节点升级为主节点。

配置cluster集群

Redis 集群由多个运行在集群模式(cluster mode)下的 Redis 实例组成, 实例的集群模式需要通过配置来开启,以下是一个包含了最少选项的集群配置文件示例:

port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

cluster-enabled:打开集群模式
cluster-config-file:节点配置文件名,无须人为修改, 它由 Redis 集群在启动时创建, 并在有需要时自动进行更新
cluster-node-timeout:节点失联时间,当超过此毫秒,集群将自动切换主从节点。

要让集群正常运作至少需要三个主节点,而每个主节点都应该正确配置一个或者多个从节点。

启动集群

使用redis-cli --cluster create命令将节点合并成一个集群

redis-cli --cluster create --cluster-replicas 1  127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

 --cluster-replicas 1 这个指的是从机的数量,表示我们希望为集群中的每个主节点创建一个从节点。

进入集群模式只需要使用redis-cli -c命令

redis-cli -c -p 7000

无中心话节点,所以进入任意一个端口号的主节点即可。

Das obige ist der detaillierte Inhalt vonWelche drei Möglichkeiten gibt es für Redis-Clustering?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen