Redis verfügt über drei Clustering-Methoden: Master-Slave-Replikation, Sentinel-Modus und Cluster-Cluster.
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.
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.
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
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
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:
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
CONFIG REWRITE
Cluster-Cluster
之前的主从复制,哨兵模式都难以再现扩容,而Redis cluster集群实现了对Redis的水平扩容,即启动N个Redis节点,每个节点又可以有自己的从服务器,将数据均匀分布的存储在这N个结点上,每个节点存储数据的1/N。Redis cluster集群就是一个可以在多个Redis节点之间进行数据共享的设施;Redis cluster集群采用的是无中心化配置,即节点A无法处理,会将请求转发只节点B进行处理。
Redis集群中的键空间被分割为16384个槽位。Redis采用CRC16算法对16384个槽位进行分配,每个主节点负责其中一部分。为了保证高可用,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!