1. Übersicht Redis Cluster ermöglicht hohe Verfügbarkeit und Sharding zwischen einer Gruppe von Redis-Knoten. Es wird einen Master- und mehrere Slave-Knoten im Cluster geben. Wenn der Masterknoten ausfällt, sollte ein Slaveknoten als neuer Master gewählt werden. Redis selbst (einschließlich vieler seiner Clients) verfügt jedoch nicht über die Fähigkeit, Fehler automatisch zu erkennen und eine Aktiv-Standby-Umschaltung durchzuführen, und erfordert für eine automatische Fehlerbehebung eine externe Überwachungslösung. Redis Sentinel ist die offiziell empfohlene Hochverfügbarkeitslösung. Es handelt sich um ein Überwachungs- und Verwaltungstool für Redis-Cluster, das Dienste zur Knotenüberwachung, Benachrichtigung, automatischen Fehlerbehebung und Clientkonfigurationserkennung bereitstellen kann. 2. Aufgetretene Probleme 1. Docker-Hostnetzwerk Wenn Docker das Hostnetzwerk verwendet, funktioniert es unter Windows und Mac nicht (es wurde keine Lösung gefunden). Schließlich habe ich Windows aufgegeben und CentOS zum Bereitstellen des Clusters verwendet. 2. Sentinel-Verbindungsproblem ohne Verwendung des Hostnetzwerks Wenn Sie eine Verbindung zum Sentinel-Cluster herstellen, ohne das Hostnetzwerk zu verwenden, können Sie den Port des Masterknotens angeben, damit eine normale Verbindung hergestellt werden kann. Wenn der Masterknoten jedoch ausfällt, ist die von Sentinel vom Masterknoten erhaltene IP die virtuelle IP im Container, was dazu führt, dass der Cluster keine normale Verbindung herstellen kann. 3. Bauprozess 1. Verzeichnisstruktur 2. Sentinel-Konfigurationsdatei 1. sentinel1.conf #Portnummer Port 26379 dir /tmp # mymaster: benutzerdefinierter Clustername, 2: Die Abstimmungsmenge muss 2 Sentinels betragen, um zu bestimmen, ob der Masterknoten ausfällt. Sentinel-Monitor mymaster <ip> <port> 2 # Wenn der Masterknoten nach mehr als 5000 Sekunden nicht erreichbar ist und keine Antwort erfolgt, Sentinel down-after-milliseconds mymaster 5000 # Gibt an, dass während des Failovers höchstens numslaves den neuen Master synchron aktualisieren. Sentinel Parallel-Syncs MyMaster 1 # Failover-Timeout Sentinel Failover-Timeout Mymaster 5000 2. sentinel2.conf #Portnummer Port 26380 dir /tmp # mymaster: benutzerdefinierter Clustername, 2: Die Abstimmungsmenge muss 2 Sentinels betragen, um zu bestimmen, ob der Masterknoten ausfällt. Sentinel-Monitor mymaster <ip> <port> 2 # Wenn der Masterknoten nach mehr als 5000 Sekunden nicht erreichbar ist und keine Antwort erfolgt, Sentinel down-after-milliseconds mymaster 5000 # Gibt an, dass während des Failovers höchstens numslaves den neuen Master synchron aktualisieren. Sentinel Parallel-Syncs MyMaster 1 # Failover-Timeout Sentinel Failover-Timeout Mymaster 5000 3. sentinel3.conf #Portnummer Port 26381 dir /tmp # mymaster: benutzerdefinierter Clustername, 2: Die Abstimmungsmenge muss 2 Sentinels betragen, um zu bestimmen, ob der Masterknoten ausfällt. Sentinel-Monitor mymaster <ip> <port> 2 # Wenn der Masterknoten nach mehr als 5000 Sekunden nicht erreichbar ist und keine Antwort erfolgt, Sentinel down-after-milliseconds mymaster 5000 # Gibt an, dass während des Failovers höchstens numslaves den neuen Master synchron aktualisieren. Sentinel Parallel-Syncs MyMaster 1 # Failover-Timeout Sentinel Failover-Timeout Mymaster 5000 3. docker-compose.yml Version: '2' Leistungen: Master: Bild: redis:4.0 Neustart: immer Containername: Redis-Master #Host-Netzwerk verwenden network_mode: "host" Befehl: redis-server --port 16379 Sklave1: Bild: redis:4.0 Neustart: immer Containername: Redis-Slave-1 Netzwerkmodus: "Host" # Geben Sie den Port an und geben Sie den Master-IP-Port-Befehl an: redis-server --port 16380 --slaveof <master ip> 16379 Sklave2: Bild: redis:4.0 Neustart: immer Containername: Redis-Slave-2 Netzwerkmodus: "Host" Befehl: redis-server --port 16381 --slaveof <Master-IP> 16379 sentinel1: Bild: redis:4.0 Neustart: immer Containername: Redis-Sentinel-1 Netzwerkmodus: "Host" # Geben Sie den Speicherort der Sentinel-Datei an. Befehl: redis-sentinel /usr/local/etc/redis/sentinel.conf # Verwenden Sie das Datenvolumen, um die Datei den angegebenen Sentinel-Standortvolumes zuzuordnen: - ./sentinel/sentinel1.conf:/usr/local/etc/redis/sentinel.conf sentinel2: Bild: redis:4.0 Neustart: immer Containername: Redis-Sentinel-2 Netzwerkmodus: "Host" Befehl: redis-sentinel /usr/local/etc/redis/sentinel.conf Bände: - ./sentinel/sentinel2.conf:/usr/local/etc/redis/sentinel.conf sentinel3: Bild: redis:4.0 Neustart: immer Containername: Redis-Sentinel-3 Netzwerkmodus: "Host" Befehl: redis-sentinel /usr/local/etc/redis/sentinel.conf Bände: - ./sentinel/sentinel3.conf:/usr/local/etc/redis/sentinel.conf 4. Verwenden Sie Centos, um Cluster-Testergebnisse bereitzustellen 1. Testen Sie die Verbindung zum Cluster über Sentinel1 2. Testen Sie die Datensynchronisation zwischen Masterknoten und Unterknoten 3. Schließen Sie den Master, um den Master-Slave-Schalter anzuzeigen Sentinel ist normal verbunden Der Masterknoten wird von 16379 auf 16381 umgestellt Abschluss Nach dem Drachenbootfest war ich eine Woche faul. Ich habe vorher einen Sentinel-Cluster erstellt. Aufgrund des Problems des Docker-Netzwerkmodells konnte der Cluster nach dem Wechsel der Master- und Slave-Knoten nicht verbunden werden. Gestern habe ich gesehen, dass der Host unter Windows nicht implementiert werden konnte, also habe ich ihn zum Testen auf CentOS installiert und es hat perfekt funktioniert. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: my.cnf (my.ini) wichtige Parameteroptimierungs-Konfigurationsanweisungen
>>: React-Internationalisierung – Verwendung von react-intl
Beschriftungsanzeigemodus (wichtig) Div- und Span...
Ich wurde am frühen Morgen durch einen Anruf gewe...
Bevor Sie diesen Artikel lesen, hoffe ich, dass S...
Die Fallstricke 1. In vielen Tutorials im Interne...
Vue+Openlayer verwendet „modify“, um Elemente zu ...
Beinhaltet den Prozess der Initialisierung des Ro...
XML dient der Beschreibung, Speicherung, Übertrag...
Lösung: Fügen Sie in <head> den folgenden Co...
Anfänger können HTML lernen, indem sie einige HTM...
01 Das Konzept der parallelen Replikation In der ...
Vorwort Bei der Verwendung einer MySQL-Datenbank ...
Derzeit gibt es viele Betriebsaktivitäten für öff...
Der Befehl crontab wird von Unix und Linux verwen...
Inhaltsverzeichnis 1. Hintergrund von WAF 2. Was ...
Überblick Heute werde ich hauptsächlich erklären,...