So richten Sie Redis für Hochverfügbarkeit mit Sentinel in CentOS 8 ein - Teil 2
Redis bietet Hochverfügbarkeit über das verteilte Redis Sentinel-System. Sentinel hilft bei der Überwachung von Redis-Instanzen, der Erkennung von Fehlern und führt automatisch Rollenwechsel durch, sodass eine Redis-Bereitstellung jeder Art von Ausfällen widerstehen kann.
Es bietet die Überwachung von Redis-Instanzen (Master und Replikate), unterstützt die Benachrichtigung über andere Dienste/Prozesse oder den Systemadministrator über ein Skript, automatisches Failover, um ein Replikat zu einem Master hochzustufen, wenn der Master ausfällt, und bietet eine Konfiguration für Clients, um den aktuellen Master zu erkennen, der einen bestimmten Dienst anbietet.
In diesem Artikel wird veranschaulicht, wie Sie Redis für Hochverfügbarkeit mit Redis Sentinel in CentOS 8 einrichten, einschließlich der Konfiguration von Sentinels, der Überprüfung des Setupstatus und des Testens eines Sentinel-Failovers.
Voraussetzung:
- So richten Sie die Redis-Replikation (mit deaktiviertem Cluster-Modus) in CentOS 8 ein – Teil 1
Einrichtung der Testumgebung
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 Redis Sentinel-Dokumentation benötigt man für eine robuste Bereitstellung mindestens drei Sentinel-Instanzen. Unter Berücksichtigung der obigen Einrichtung stimmen Sentinels2 und Sentinel3 bei einem Ausfall des Masters dem Fehler zu und können ein Failover autorisieren, sodass der Clientbetrieb fortgesetzt werden kann.
Schritt 1: Starten und Aktivieren des Redis Sentinel-Dienstes
1. Unter CentOS 8 wird der Redis Sentinel-Dienst zusammen mit dem Redis-Server installiert (was wir bereits im Redis Replication Setup getan haben).
Verwenden Sie die folgenden systemctl-Befehle, um den Redis-Sentinel-Dienst zu starten und den automatischen Start beim Systemstart zu aktivieren. Vergewissern Sie sich außerdem, dass es betriebsbereit ist, indem Sie seinen Status überprüfen (tun Sie dies auf allen Knoten):
# 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 Sie Sentinel auf allen unseren Knoten konfigurieren. Der Sentinel-Dienst hat ein ähnliches Konfigurationsformat wie der Redis-Server. Um es zu konfigurieren, verwenden Sie die selbstdokumentierte Konfigurationsdatei /etc/redis-sentinel.conf.
Erstellen Sie zunächst 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 überwacht Sentinel Port 26379, überprüfen Sie dies auf allen Instanzen. Beachten Sie, dass Sie den bind-Parameter auskommentiert (oder auf 0.0.0.0) setzen müssen.
port 26379
4. Weisen Sie als Nächstes den Wächter an, unseren Meister zu überwachen und ihn nur dann im Zustand "Objektiv ausgefallen" zu betrachten, wenn mindestens 2 Quorum-Wächter übereinstimmen. 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 Sentinel-Monitor-Anweisung MUSS vor der Sentinel-Auth-Pass-Anweisung platziert werden, um den Fehler "Kein solcher Master mit dem angegebenen Namen" beim Neustart des Sentinel-Dienstes zu vermeiden.
5. Wenn für den zu überwachenden Redis-Master ein Kennwort festgelegt ist (in unserem Fall der Master), geben Sie das Kennwort an, damit sich die Sentinel-Instanz bei der geschützten Instanz authentifizieren kann.
sentinel auth-pass mymaster Securep@55Here
6. Legen Sie dann die Anzahl der Millisekunden fest, die der Master (oder ein angehängtes Replikat oder Wächter) nicht erreichbar sein soll, um ihn im Status "Subjektiv inaktiv" zu betrachten.
Die folgende Konfiguration bedeutet, dass der Master als fehlgeschlagen gilt, sobald wir innerhalb von 5 Sekunden keine Antwort von unseren Pings erhalten (1 Sekunde entspricht 1000 Millisekunden).
sentinel down-after-milliseconds mymaster 5000
7. Legen Sie als Nächstes das Failover-Timeout in Millisekunden fest, das viele Dinge definiert (lesen Sie die Dokumentation des Parameters in der Konfigurationsdatei).
sentinel failover-timeout mymaster 180000
8. Legen Sie dann die Anzahl der Replikate fest, die neu konfiguriert werden können, um den neuen Master nach einem Failover gleichzeitig zu verwenden. Da wir über zwei Replikate verfügen, legen wir ein Replikat fest, da das andere zum neuen Master heraufgestuft wird.
sentinel parallel-syncs mymaster 1
Beachten Sie, dass die Konfigurationsdateien auf Redis Replica1 und Sentinel2 sowie Reddis Replica1 und Sentinel2 identisch sein sollten.
9. Starten Sie als Nächstes die Sentinel-Dienste auf allen Knoten neu, um die letzten Änderungen zu übernehmen.
# systemctl restart redis-sentinel
10. Öffnen Sie als Nächstes den Port 26379 in der Firewall auf allen Knoten, damit die Sentinel-Instanzen mit der firewall-cmd kommunizieren und Verbindungen von den anderen Sentinel-Instanzen empfangen können.
# firewall-cmd --zone=public --permanent --add-port=26379/tcp
firewall-cmd --reload
11. Alle Repliken werden automatisch erkannt. Wichtig ist, dass Sentinel die Konfiguration automatisch mit zusätzlichen Informationen zu Replikaten aktualisiert. Sie können dies überprüfen, indem Sie die Sentinel-Konfigurationsdatei für jede Instanz öffnen und durchsehen.
Wenn Sie sich z. B. das Ende der Konfigurationsdatei des Masters ansehen, sollten Sie die Anweisungen known-sentinels und known-replica sehen, wie im folgenden Screenshot gezeigt.
Es sollte der gleiche Fall auf replica1 und replica2 sein.
Beachten Sie, dass die Sentinel-Konfiguration auch jedes Mal neu geschrieben/aktualisiert wird, wenn ein Replikat während eines Failovers auf den Master-Status heraufgestuft wird und jedes Mal, wenn ein neuer Sentinel im Setup erkannt wird.
Schritt 3: Überprüfen des Setupstatus von Redis Sentinel
12. Überprüfen Sie nun den Sentinel-Status/die Sentinel-Informationen auf dem Master, indem Sie den Befehl info sentinel wie folgt verwenden.
# redis-cli -p 26379 info sentinel
Aus der Ausgabe des Befehls, wie im folgenden Screenshot zu sehen, haben wir zwei Replikate/Slaves und drei Sentinels.
13. Um detaillierte Informationen über den Master (mymaster genannt) anzuzeigen, verwenden Sie den Befehl sentinel master.
# redis-cli -p 26379 sentinel master mymaster
14. Um detaillierte Informationen über die Slaves und Sentinels anzuzeigen, verwenden Sie den Befehl sentinel slaves bzw. den Befehl sentinel sentinels.
# redis-cli -p 26379 sentinel slaves mymaster
redis-cli -p 26379 sentinel sentinels mymaster
15. Fragen Sie als Nächstes die Adresse des Masters nach Namen von den Slave-Instanzen ab, indem Sie den Sentinel-Befehl get-master-addr-by-name wie folgt verwenden.
Die Ausgabe sollte die IP-Adresse und der Port der aktuellen Master-Instanz sein:
# redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
Schritt 4: Testen des Sentinel-Failovers
16. Lassen Sie uns zum Schluss das automatische Failover in unserem Sentinel-Setup testen. Versetzen Sie den Redis-Master (der auf Port 6379 ausgeführt wird) auf dem Redis/Sentinel-Master (der auf Port 6379 ausgeführt wird) für 60 Sekunden in den Ruhezustand. Fragen Sie dann die Adresse des aktuellen Masters auf den Replicas/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 für die Abfrage geht hervor, dass der neue Master jetzt replica/slave2 mit der IP-Adresse 10.42.0.34 ist, wie im folgenden Screenshot zu sehen ist.
Weitere Informationen finden Sie in der Redis Sentinel-Dokumentation. Wenn Sie jedoch Gedanken oder Fragen haben, ist das untenstehende Feedback-Formular Ihr Tor zu uns.
Im nächsten und letzten Teil dieser Serie werden wir uns ansehen, wie Sie einen Redis-Cluster in CentOS 8 einrichten. Es wird ein unabhängiger Artikel von den ersten beiden sein.














