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 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/ 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 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...# ?? Sehen Sie sich das Protokoll an auf dem Master-Knoten [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... 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 succeeded2. Redis Sentinel-Modus 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 Der Sentinel-Knoten überwacht regelmäßig, ob der Masterknoten ausgefallen ist. Der Sentinel-Knoten sendet einmal pro Sekunde einen Ping-Befehl, um die Heartbeat-Erkennung durchzuführen und die Ergebnisse an den Master-Knoten, die Slave-Knoten und andere Sentinel-Knoten zu senden. Wenn der Masterknoten nicht innerhalb einer bestimmten Zeitspanne antwortet oder mit einer Fehlermeldung antwortet, geht der Sentinel davon aus, dass der Masterknoten subjektiv offline ist (einseitig). Wenn mehr als die Hälfte der Sentinel-Knoten glauben, dass der Master-Knoten subjektiv offline ist, ist er objektiv offline. 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!