Beispielanalyse von Master-Slave-Replikation, Sentry und Clustering in Redis
1. Redis-Master-Slave-Replikation
1. Überblick über die Master-Slave-Replikation
Bei der Master-Slave-Replikation werden Daten von einem Redis-Server auf andere Redis-Server kopiert. Ersterer wird als Master-Knoten (Master) und letzterer als Slave-Knoten (Slave) bezeichnet. Die Datenreplikation erfolgt in eine Richtung und kann nur vom Master-Knoten zum Slave-Knoten erfolgen.
Standardmäßig ist jeder Redis-Server ein Master-Knoten. Ein Master-Knoten kann mehrere Slave-Knoten haben, ein Slave-Knoten kann jedoch nur einen Master-Knoten haben. [Verwandte Empfehlung: Redis-Video-Tutorial]
2. Die Rolle der Master-Slave-Replikation
● 数据冗余
:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
● 故障恢复
:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
● 负载均衡
:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;有其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
● 高可用基石
: Zusätzlich zu den oben genannten Funktionen ist die Master-Slave-Replikation auch die Grundlage für die Implementierung von Sentinels und Clustern Die Master-Slave-Replikation ist die Grundlage für die Hochverfügbarkeit von Redis.
3. Master-Slave-Replikationsprozess
(1) Wenn ein Slave-Maschinenprozess gestartet wird, sendet er einen „Synchronisierungsbefehl“-Befehl an die Master-Maschine, um eine synchrone Verbindung anzufordern.
(2) Unabhängig davon, ob es sich um die erste Verbindung oder die erneute Verbindung handelt, startet der Master einen Hintergrundprozess und speichert den Daten-Snapshot in der Datendatei (führt einen RDB-Vorgang aus). Gleichzeitig zeichnet der Master auch alle Befehle auf, die geändert werden die Daten und speichern sie in der Datendatei in der Datei.
(3) Nachdem der Hintergrundprozess den Caching-Vorgang abgeschlossen hat, sendet der Master-Computer die Datendatei an den Slave-Computer. Der Slave-Computer speichert die Datendatei auf der Festplatte und lädt sie dann in den Speicher ändert die Daten. Alle Vorgänge werden zusammen an die Slave-Maschine gesendet. Wenn der Slave ausfällt und eine Ausfallzeit verursacht, wird die Verbindung automatisch wiederhergestellt, sobald der Normalzustand wiederhergestellt ist.
(4) Nachdem die Master-Maschine die Verbindung von der Slave-Maschine erhalten hat, sendet sie ihre vollständige Datendatei an die Slave-Maschine. Wenn der Master mehrere Synchronisierungsanfragen gleichzeitig von der Slave-Maschine erhält, startet der Master einen Prozess in der Speichern Sie im Hintergrund die Datendatei und senden Sie sie dann an alle Slave-Maschinen, um sicherzustellen, dass alle Slave-Maschinen normal sind. 4. Redis-Master-Slave-Replikation erstellen
192.168.122.10
Slave1-Knoten
Slave1Slave2-Knoten | Slave2 | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4.2 Firewall-Umgebung jedes Servers systemctl stop firewalld && systemctl disable firewalld setenforce 0 Nach dem Login kopieren Nach dem Login kopieren Nach dem Login kopieren 4.3 Installieren Sie Redis auf jedem Server redis Installationsdetails Siehe vorherige Blogs: 传入安装包到/opt目录 yum install -y gcc gcc-c++ make tar zxvf redis-5.0.7.tar.gz -C /opt/ cd /opt/redis-5.0.7/ make make PREFIX=/usr/local/redis install cd /opt/redis-5.0.7/utils ./install_server.sh ...... Please select the redis executable path [] #输入/uar/local/redis/bin/redis-server ln -s /usr/local/redis/bin/* /usr/local/bin/ Nach dem Login kopieren 4.4 Redis-Konfigurationsdatei ändern (Master-Knoten-Betrieb) Master : 192.168.122.10 [root@master ~]# vim /etc/redis/6379.conf ##70行,修改监听地址为0.0.0.0,表示监听任何地址 bind 0.0.0.0 ##137行,开启守护进程 daemonize yes ##172行,指定日志文件目录 logfile /var/log/redis_6379.log ##264行,指定工作日志 dir /var/lib/redis/6379 ##700行,开启AOF持久化功能 appendonly yes Nach dem Login kopieren 4.5 Redis-Konfigurationsdatei ändern (Slave-Knoten-Betrieb) Slave1: 192.168.122.11#🎜 🎜# [root@slave1 utils]# vim /etc/redis/6379.conf ##70行,修改监听地址为0.0.0.0,表示监听任何地址 bind 0.0.0.0 ##137行,开启守护进程 daemonize yes ##172行,指定日志文件目录 logfile /var/log/redis_6379.log ##264行,指定工作日志 dir /var/lib/redis/6379 ##288行,添加要同步的Master节点IP和端口 replicaof 192.168.122.10 6379 ##700行,开启AOF持久化功能 appendonly yes [root@slave1 utils]# /etc/init.d/redis_6379 restart Stopping ... Redis stopped Starting Redis server... Nach dem Login kopieren [root@slave2 utils]# vim /etc/redis/6379.conf ##70行,修改监听地址为0.0.0.0,表示监听任何地址 bind 0.0.0.0 ##137行,开启守护进程 daemonize yes ##172行,指定日志文件目录 logfile /var/log/redis_6379.log ##264行,指定工作日志 dir /var/lib/redis/6379 ##288行,添加要同步的Master节点IP和端口 replicaof 192.168.122.10 6379 ##700行,开启AOF持久化功能 appendonly yes [root@slave2 utils]# /etc/init.d/redis_6379 restart Stopping ... Redis stopped Starting Redis server... Nach dem Login kopieren 4.6.2 Überprüfen Sie den Slave-Knoten auf dem Master-Knoten [root@master ~]# tail -f /var/log/redis_6379.log 1002:M 23 Sep 2021 16:46:33.569 * Background saving terminated with success 1002:M 23 Sep 2021 16:46:33.569 * Synchronization with replica 192.168.122.11:6379 succeeded 1002:M 23 Sep 2021 16:46:34.519 * Replica 192.168.122.12:6379 asks for synchronization 1002:M 23 Sep 2021 16:46:34.519 * Full resync requested by replica 192.168.122.12:6379 1002:M 23 Sep 2021 16:46:34.519 * Starting BGSAVE for SYNC with target: disk 1002:M 23 Sep 2021 16:46:34.519 * Background saving started by pid 7941 7941:C 23 Sep 2021 16:46:34.521 * DB saved on disk 7941:C 23 Sep 2021 16:46:34.521 * RDB: 0 MB of memory used by copy-on-write 1002:M 23 Sep 2021 16:46:34.591 * Background saving terminated with success 1002:M 23 Sep 2021 16:46:34.591 * Synchronization with replica 192.168.122.12:6379 succeeded Nach dem Login kopieren 1. Der Kern der Sentinel-Modus-Funktion Basierend auf der Master-Slave-Replikation führt Sentinel ein automatisches Failover des Masterknotens ein.2. Das Prinzip des Sentinel-ModusDer Sentinel ist ein verteiltes System, das zur Überwachung jedes Servers in der Master-Slave-Struktur verwendet wird und wählen Sie über einen Abstimmungsmechanismus einen neuen Master aus, wenn ein Fehler auftritt, und verbinden Sie alle Slaves mit dem neuen Master. Daher darf die Anzahl der gesamten Cluster, auf denen Sentinel ausgeführt wird, nicht weniger als 3 Knoten betragen. 3. Die Rolle des Sentinel-Modus ● Benachrichtigungserinnerung : Sentinel kann die Failover-Ergebnisse an den Client senden. 4. Die Struktur des Sentinel-Modus Die Sentinel-Struktur besteht aus zwei Teilen, dem Sentinel-Knoten und dem Datenknoten: #🎜 🎜# ● Sentinel-Knoten: Das Sentinel-System besteht aus einem oder mehreren Knoten. Sentinel-Knoten sind spezielle Redis-Knoten, die keine Daten speichern. ● Datenknoten: Der Masterknoten und der Slaveknoten sind beide Datenknoten. 5. Funktionsweise des Sentinel-Modus
6. Failover-Mechanismus
Wenn der Masterknoten ausfällt, implementieren die Sentinel-Knoten den Wahlmechanismus über den Raft-Algorithmus (Wahlalgorithmus), um gemeinsam einen Sentinel-Knoten als verantwortlichen Leiter zu wählen zur Verarbeitung des Masterknoten-Failovers und der Benachrichtigungen. Daher darf die Anzahl der Hosts im Sentinel-Cluster nicht weniger als drei Knoten betragen.
Wählen Sie den Slave-Knoten mit der Konfiguration mit der höchsten Priorität in der Konfigurationsdatei aus (Replika-Priorität, der Standardwert ist 100).
Server HostnameIP #🎜 🎜 ##?? 🎜 #Slave1-Knoten
Das obige ist der detaillierte Inhalt vonBeispielanalyse von Master-Slave-Replikation, Sentry und Clustering in Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website! Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
![]() Heiße KI -Werkzeuge![]() Undresser.AI UndressKI-gestützte App zum Erstellen realistischer Aktfotos ![]() AI Clothes RemoverOnline-KI-Tool zum Entfernen von Kleidung aus Fotos. ![]() Undress AI ToolAusziehbilder kostenlos ![]() Clothoff.ioKI-Kleiderentferner ![]() AI Hentai GeneratorErstellen Sie kostenlos Ai Hentai. ![]() Heißer Artikel
R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor
By 尊渡假赌尊渡假赌尊渡假赌
Assassin's Creed Shadows: Seashell Riddle -Lösung
2 Wochen vor
By DDD
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor
By 尊渡假赌尊渡假赌尊渡假赌
![]() Heiße Werkzeuge![]() Notepad++7.3.1Einfach zu bedienender und kostenloser Code-Editor ![]() SublimeText3 chinesische VersionChinesische Version, sehr einfach zu bedienen ![]() Senden Sie Studio 13.0.1Leistungsstarke integrierte PHP-Entwicklungsumgebung ![]() Dreamweaver CS6Visuelle Webentwicklungstools ![]() SublimeText3 Mac-VersionCodebearbeitungssoftware auf Gottesniveau (SublimeText3) ![]() Heiße Themen
CakePHP-Tutorial
![]() ![]() ![]() Der Redis -Cluster -Modus bietet Redis -Instanzen durch Sharding, die Skalierbarkeit und Verfügbarkeit verbessert. Die Bauschritte sind wie folgt: Erstellen Sie ungerade Redis -Instanzen mit verschiedenen Ports; Erstellen Sie 3 Sentinel -Instanzen, Monitor -Redis -Instanzen und Failover; Konfigurieren von Sentinel -Konfigurationsdateien, Informationen zur Überwachung von Redis -Instanzinformationen und Failover -Einstellungen hinzufügen. Konfigurieren von Redis -Instanzkonfigurationsdateien, aktivieren Sie den Cluster -Modus und geben Sie den Cluster -Informationsdateipfad an. Erstellen Sie die Datei nodes.conf, die Informationen zu jeder Redis -Instanz enthält. Starten Sie den Cluster, führen Sie den Befehl erstellen aus, um einen Cluster zu erstellen und die Anzahl der Replikate anzugeben. Melden Sie sich im Cluster an, um den Befehl cluster info auszuführen, um den Clusterstatus zu überprüfen. machen ![]() Die Verwendung der REDIS -Anweisung erfordert die folgenden Schritte: Öffnen Sie den Redis -Client. Geben Sie den Befehl ein (Verbschlüsselwert). Bietet die erforderlichen Parameter (variiert von der Anweisung bis zur Anweisung). Drücken Sie die Eingabetaste, um den Befehl auszuführen. Redis gibt eine Antwort zurück, die das Ergebnis der Operation anzeigt (normalerweise in Ordnung oder -err). ![]() So löschen Sie Redis -Daten: Verwenden Sie den Befehl Flushall, um alle Schlüsselwerte zu löschen. Verwenden Sie den Befehl flushdb, um den Schlüsselwert der aktuell ausgewählten Datenbank zu löschen. Verwenden Sie SELECT, um Datenbanken zu wechseln, und löschen Sie dann FlushDB, um mehrere Datenbanken zu löschen. Verwenden Sie den Befehl del, um einen bestimmten Schlüssel zu löschen. Verwenden Sie das Redis-Cli-Tool, um die Daten zu löschen. ![]() Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads. ![]() Der beste Weg, um Redis -Quellcode zu verstehen, besteht darin, Schritt für Schritt zu gehen: Machen Sie sich mit den Grundlagen von Redis vertraut. Wählen Sie ein bestimmtes Modul oder eine bestimmte Funktion als Ausgangspunkt. Beginnen Sie mit dem Einstiegspunkt des Moduls oder der Funktion und sehen Sie sich die Codezeile nach Zeile an. Zeigen Sie den Code über die Funktionsaufrufkette an. Kennen Sie die von Redis verwendeten Datenstrukturen. Identifizieren Sie den von Redis verwendeten Algorithmus. ![]() Um alle Schlüssel in Redis anzuzeigen, gibt es drei Möglichkeiten: Verwenden Sie den Befehl keys, um alle Schlüssel zurückzugeben, die dem angegebenen Muster übereinstimmen. Verwenden Sie den Befehl scan, um über die Schlüssel zu iterieren und eine Reihe von Schlüssel zurückzugeben. Verwenden Sie den Befehl Info, um die Gesamtzahl der Schlüssel zu erhalten. ![]() Redis verwendet Hash -Tabellen, um Daten zu speichern und unterstützt Datenstrukturen wie Zeichenfolgen, Listen, Hash -Tabellen, Sammlungen und geordnete Sammlungen. Ernähren sich weiterhin über Daten über Snapshots (RDB) und appendiert Mechanismen nur Schreibmechanismen. Redis verwendet die Master-Slave-Replikation, um die Datenverfügbarkeit zu verbessern. Redis verwendet eine Ereignisschleife mit einer Thread, um Verbindungen und Befehle zu verarbeiten, um die Datenatomizität und Konsistenz zu gewährleisten. Redis legt die Ablaufzeit für den Schlüssel fest und verwendet den faulen Löschmechanismus, um den Ablaufschlüssel zu löschen. ![]() Um eine Warteschlange aus Redis zu lesen, müssen Sie den Warteschlangenname erhalten, die Elemente mit dem Befehl LPOP lesen und die leere Warteschlange verarbeiten. Die spezifischen Schritte sind wie folgt: Holen Sie sich den Warteschlangenname: Nennen Sie ihn mit dem Präfix von "Warteschlange:" wie "Warteschlangen: My-Queue". Verwenden Sie den Befehl LPOP: Wischen Sie das Element aus dem Kopf der Warteschlange aus und geben Sie seinen Wert zurück, z. B. die LPOP-Warteschlange: my-queue. Verarbeitung leerer Warteschlangen: Wenn die Warteschlange leer ist, gibt LPOP NIL zurück, und Sie können überprüfen, ob die Warteschlange existiert, bevor Sie das Element lesen. ![]() |