Redis bietet hohe Verfügbarkeit über das verteilte System Redis Sentinel. Sentinel hilft dabei, Redis-Instanzen zu überwachen, Ausfälle zu erkennen und automatisch Rollenwechsel durchzuführen, um eine Redis-Bereitstellung gegen jegliche Art von Ausfällen zu schützen.
Es bietet die Überwachung von Redis-Instanzen (Master und Replikate), unterstützt die Benachrichtigung anderer Dienste/Prozesse oder des Systemadministrators über ein Skript, automatisches Failover zur Beförderung eines Replikats zum Master, wenn der Master ausfällt, und bietet Konfigurationen für Clients, um den aktuellen Master zu entdecken, der einen bestimmten Dienst anbietet.
Dieser Artikel zeigt, wie man Redis für hohe Verfügbarkeit mit Redis Sentinel in CentOS 8 einrichtet, einschließlich der Konfiguration von Sentinels, der Überprüfung des Einrichtungsstatus und des Testens eines Sentinel-Failovers.
Voraussetzung:
Testumgebung einrichten
Master Server and Sentinel1: 10.42.0.247 Redis Replica1 and Sentinel2: 10.42.0.21 Redis Replica2 and Sentinel3: 10.42.0.34

Laut der Dokumentation zu Redis Sentinel benötigt man mindestens drei Sentinel-Instanzen für eine robuste Bereitstellung. Angesichts unseres oben genannten Setups werden sich Master ausfällt, werden sich Sentinel2 und Sentinel3 über den Ausfall einig werden und in der Lage sein, ein Failover zu autorisieren, sodass die Clientoperationen fortgesetzt werden können.
Schritt 1: Starten und Aktivieren des Redis Sentinel-Dienstes
1. Auf CentOS 8 wird der Redis Sentinel-Dienst zusammen mit dem Redis-Server installiert (was wir bereits beim Redis-Replikation-Setup gemacht haben).
Um den Redis-Sentinel-Dienst zu starten und zu aktivieren, damit er beim Systemstart automatisch gestartet wird, verwenden Sie die folgenden systemctl-Befehle. Bestätigen Sie außerdem, dass er läuft, indem Sie seinen Status überprüfen (führen Sie dies auf allen Knoten durch):
# systemctl start redis-sentinel # systemctl enable redis-sentinel # systemctl status redis-sentinel

Schritt 2: Konfigurieren von Redis Sentinel auf allen Redis-Knoten
2. In diesem Abschnitt erklären wir, wie man Sentinel auf allen unseren Knoten konfiguriert. Der Sentinel-Dienst hat ein ähnliches Konfigurationsformat wie der Redis-Server. Um ihn zu konfigurieren, verwenden Sie die selbst dokumentierte Konfigurationsdatei /etc/redis-sentinel.conf.
Erstellen Sie zuerst eine Sicherungskopie der Originaldatei und öffnen Sie sie zur Bearbeitung.
# cp /etc/redis-sentinel.conf /etc/redis-sentinel.conf.orig # vi /etc/redis-sentinel.conf
3. Standardmäßig lauscht Sentinel auf Port 26379, überprüfen Sie dies auf allen Instanzen. Beachten Sie, dass Sie den bind-Parameter auskommentiert lassen müssen (oder auf 0.0.0.0 setzen).
port 26379

4. Teilen Sie dann Sentinel mit, unseren Master zu überwachen, und ihn erst dann als „objektiv nicht verfügbar“ zu betrachten, wenn mindestens 2 Quorum-Sentinels zustimmen. Sie können „mymaster“ durch einen benutzerdefinierten Namen ersetzen.
#On Master Server and Sentinel1 sentinel monitor mymaster 127.0.0.1 6379 2 #On Replica1 and Sentinel2 sentinel monitor mymaster 10.42.0.247 6379 2 #On Replica1 and Sentinel3 sentinel monitor mymaster 10.42.0.247 6379 2

Wichtig: Die Anweisung zum Überwachen des Sentinels MUSS vor der Anweisung zum Authentifizieren des Sentinels stehen, um den Fehler „Der angegebene Name des Masters existiert nicht“ beim Neustarten des Sentinel-Dienstes zu vermeiden.
5. Wenn das zu überwachende Redis-Masterkennwort festgelegt ist (in unserem Fall ist dies der Master), geben Sie das Kennwort an, damit die Sentinel-Instanz sich beim geschützten Master authentifizieren kann.
sentinel auth-pass mymaster Securep@55Here

6. Legen Sie dann die Anzahl der Millisekunden fest, die der Master (oder eine angehängte Replik oder ein Sentinel) unerreichbar sein muss, um ihn als „subjektiv nicht verfügbar“ zu betrachten.
Die folgende Konfiguration bedeutet, dass der Master als fehlerhaft angesehen wird, sobald wir innerhalb von 5 Sekunden keine Antwort auf unsere Pings erhalten (1 Sekunde entspricht 1000 Millisekunden).
sentinel down-after-milliseconds mymaster 5000

7. Legen Sie dann das Ausfallzeitlimit in Millisekunden fest, das viele Dinge definiert (lesen Sie die Dokumentation des Parameters in der Konfigurationsdatei).
sentinel failover-timeout mymaster 180000

8. Dann legen Sie die Anzahl der Replikate fest, die gleichzeitig neu konfiguriert werden können, um den neuen Master nach einem Failover zu verwenden. Da wir zwei Replikate haben, setzen wir eines als den anderen Replikat, der zum neuen Master befördert wird.
sentinel parallel-syncs mymaster 1

Beachten Sie, dass die Konfigurationsdateien auf Redis Replica1 und Sentinel2 sowie Redis Replica1 und Sentinel2 identisch sein sollten.
9. Starten Sie anschließend die Sentinel-Dienste auf allen Knoten neu, um die letzten Änderungen anzuwenden.
# systemctl restart redis-sentinel
10. Öffnen Sie als Nächstes den Port 26379 in der Firewall auf allen Knoten, um den Sentinel-Instanzen das Starten von Gesprächen zu ermöglichen und Verbindungen von den anderen Sentinel-Instanzen zu empfangen, unter Verwendung des Firewall-CMD.
# firewall-cmd --zone=public --permanent --add-port=26379/tcp # firewall-cmd --reload
11. Alle Replikate werden automatisch entdeckt. Wichtig ist, dass der Sentinel die Konfiguration automatisch mit zusätzlichen Informationen über Replikate aktualisiert. Sie können dies überprüfen, indem Sie die Sentinel-Konfigurationsdatei für jede Instanz öffnen und durchsehen.
Wenn Sie beispielsweise am Ende der Konfigurationsdatei des Masters nachsehen, sollten Sie die Anweisungen known-sentinels und known-replica sehen, wie im folgenden Screenshot gezeigt.

Dies sollte auch bei Replikat1 und Replikat2 der Fall sein.


Beachten Sie, dass die Sentinel-Konfiguration auch jedes Mal neu geschrieben/aktualisiert wird, wenn ein Replikat während eines Failovers zum Masterstatus befördert wird und jedes Mal, wenn ein neuer Sentinel in der Konfiguration entdeckt wird.
Schritt 3: Überprüfen Sie den Status des Redis Sentinel-Setups
12. Überprüfen Sie nun den Sentinel-Status/-Informationen auf dem Master mithilfe des Befehls info sentinel wie folgt.
# redis-cli -p 26379 info sentinel
Ausgabe des Befehls, wie im folgenden Screenshot zu sehen, zeigt, dass wir zwei Replikate/Slaves und drei Sentinels haben.

13. Verwenden Sie den Befehl sentinel master, um detaillierte Informationen über den Master (namens mymaster) anzuzeigen.
# redis-cli -p 26379 sentinel master mymaster

14. Verwenden Sie die Befehle sentinel slaves und sentinel sentinels, um detaillierte Informationen über die Slaves und Sentinels anzuzeigen.
# redis-cli -p 26379 sentinel slaves mymaster # redis-cli -p 26379 sentinel sentinels mymaster
15. Fragen Sie dann die Adresse des Masters nach Name von den Slave-Instanzen mithilfe des Befehls sentinel get-master-addr-by-name wie folgt ab.
Die Ausgabe sollte die IP-Adresse und den Port der aktuellen Master-Instanz sein:
# redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

Schritt 4: Testen des Sentinel-Failovers
16. Schließlich testen wir den automatischen Failover in unserem Sentinel-Setup. Lassen Sie den Redis-Master (der auf Port 6379 läuft) auf dem Redis/Sentinel-Master für 60 Sekunden in den Schlafmodus versetzen. Fragen Sie dann die Adresse des aktuellen Masters auf den Replikaten/Slaves wie folgt ab.
# redis-cli -p 6379 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> debug sleep 60 # redis-cli -p 26379 sentinel get-master-addr-by-name mymaster # redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
Aus der Ausgabe der Abfrage geht hervor, dass der neue Master jetzt Replikat/Slave2 mit der IP-Adresse 10.42.0.34 ist, wie im folgenden Screenshot zu sehen.

Sie können weitere Informationen aus der Redis Sentinel-Dokumentation erhalten. Wenn Sie jedoch Gedanken teilen oder Fragen haben, ist das Feedbackformular unten Ihr Tor zu uns.
Im nächsten und letzten Teil dieser Serie werden wir untersuchen, wie man ein Redis-Cluster in CentOS 8 einrichtet. Es wird ein eigenständiger Artikel von den ersten beiden sein.
Source:
https://www.tecmint.com/setup-redis-high-availability-with-sentinel-in-centos-8/