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
Vorwort Unter LINUX werden periodische Aufgaben n...
Inhaltsverzeichnis Einführung Verwendung von Vers...
systemd: Das Service-Systemctl-Skript von CentOS ...
Originaltext: http://www.planabc.net/2008/08/05/u...
Dieser Artikel beschreibt, wie Sie Apache auf ein...
Ich bin vor ein paar Tagen mit dem Bus zur Arbeit...
Heute werde ich den Server nginx verwenden und mu...
Ich weiß nicht, ob Sie schon einmal auf eine solc...
Wenn Sie Ihr MySQL-Anmeldekennwort vergessen, ist...
Zip-Installationsschritte für die MySQL 8-Windows...
In diesem Artikel wird der spezifische Code für J...
1. Docker-Startproblem: Problem gelöst: Sie müsse...
Stellen Sie Tomcat so ein, dass der Dienst automa...
Inhaltsverzeichnis 1. Installieren Sie das Vue-Ge...
Hier können Sie durch geschickten Einsatz von CSS-...