Website-Suche

So richten Sie Redis für Hochverfügbarkeit mit Sentinel in CentOS 8 ein – Teil 2


Redis bietet hohe Verfügbarkeit über das verteilte System Redis Sentinel. Sentinel hilft bei der Überwachung von Redis-Instanzen, erkennt Fehler und führt automatisch Rollenwechsel durch, wodurch eine Redis-Bereitstellung resistent gegen alle Arten von Fehlern wird.

Es bietet die Überwachung von Redis-Instanzen (Master und Replikate), unterstützt die Benachrichtigung über andere Dienste/Prozesse oder den Systemadministrator über ein Skript sowie ein automatisches Failover, um ein Replikat zu einem Master hochzustufen, wenn der Master ausfällt, und stellt bereit Konfiguration für Clients, um den aktuellen Master zu ermitteln, der einen bestimmten Dienst anbietet.

In diesem Artikel wird gezeigt, wie Sie Redis für Hochverfügbarkeit mit Redis Sentinel in CentOS 8 einrichten, einschließlich der Konfiguration von Sentinels, der Überprüfung des Setup-Status und des Testens von a Sentinel-Failover.

Voraussetzung:

  1. 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. Wenn der Master ausfällt, sind sich Sentinels2 und Sentinel3 über den Fehler einig und können ein Failover autorisieren Der Kundenbetrieb kann fortgesetzt werden.

Schritt 1: Starten und Aktivieren des Redis Sentinel-Dienstes

1. Unter CentOS 8 wird der Redis Sentinel-Dienst neben dem Redis-Server installiert (was wir bereits in getan haben). das Redis-Replikations-Setup).

Um den Redis-Sentinel-Dienst zu starten und ihn beim Systemstart automatisch starten zu lassen, verwenden Sie die folgenden systemctl-Befehle. Bestätigen Sie 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. Verwenden Sie zum Konfigurieren die selbstdokumentierte Konfigurationsdatei /etc/redis-sentinel.conf.

Erstellen Sie zunächst eine Sicherungskopie der Originaldatei und öffnen Sie diese zur Bearbeitung.

cp /etc/redis-sentinel.conf /etc/redis-sentinel.conf.orig
vi /etc/redis-sentinel.conf

3. Standardmäßig überwacht Sentinel den Port 26379. Überprüfen Sie dies auf allen Instanzen. Beachten Sie, dass Sie den bind-Parameter auskommentiert lassen (oder auf 0.0.0.0 setzen müssen).

port 26379

4. Als nächstes weisen Sie Sentinel an, unseren Master zu überwachen und ihn im Status „Objektiv deaktiviert“ zu betrachten nur, wenn mindestens zwei Kollegiumswächter 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 Sentinel-Monitor-Anweisung MUSS vor der Sentinel-auth-pass-Anweisung platziert werden, um den Fehler „No such master with“ zu vermeiden den angegebenen Namen. ” beim Neustart des Sentinel-Dienstes.

5. Wenn für den zu überwachenden Redis-Master ein Kennwort festgelegt ist (in unserem Fall der Master), geben Sie das Kennwort ein, 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 angeschlossenes Replikat oder ein Sentinel) nicht erreichbar sein soll, um ihn im Status „Subjektiv ausgefallen“ zu betrachten.

Die folgende Konfiguration bedeutet, dass der Master als ausgefallen gilt, sobald wir innerhalb von 5 Sekunden (1 Sekunde entspricht 1000 Millisekunden) keine Antwort auf unsere Pings erhalten.

sentinel down-after-milliseconds mymaster 5000

7. Als nächstes legen Sie den Failover-Timeout in Millisekunden fest, der 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 nach einem Failover gleichzeitig den neuen Master zu verwenden. Da wir über zwei Replikate verfügen, legen wir eine Replik fest, während die 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 Kommunikation beginnen und Verbindungen von den anderen empfangen können >Sentinel-Instanzen mithilfe des firewall-cmd.

firewall-cmd --zone=public --permanent --add-port=26379/tcp
firewall-cmd --reload

11. Alle Replikate werden automatisch erkannt. Wichtig ist, dass Sentinel die Konfiguration automatisch mit zusätzlichen Informationen zu Replikaten aktualisiert. Sie können dies bestätigen, indem Sie die Sentinel-Konfigurationsdatei für jede Instanz öffnen und durchsehen.

Wenn Sie sich beispielsweise das Ende der Master-Konfigurationsdatei ansehen, sollten Sie die Anweisungen known-sentinels und known-replica sehen, wie im folgenden Screenshot gezeigt.

Bei replica1 und replica2 sollte es genauso sein.

Beachten Sie, dass die Sentinel-Konfiguration auch jedes Mal neu geschrieben/aktualisiert wird, wenn ein Replikat während eines Failovers in den Master-Status heraufgestuft wird und jedes Mal, wenn ein neuer Sentinel im Setup entdeckt wird.

Schritt 3: Überprüfen Sie den Redis Sentinel-Setup-Status

12. Überprüfen Sie nun den Sentinel-Status/die 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 zum Master (genannt mymaster) anzuzeigen, verwenden Sie den Befehl sentinel master.

redis-cli -p 26379 sentinel master mymaster

14. Um detaillierte Informationen zu den Slaves und Sentinels anzuzeigen, verwenden Sie den Befehl sentinel Slaves und sentinel sentinels-Befehl bzw.

redis-cli -p 26379 sentinel slaves mymaster
redis-cli -p 26379 sentinel sentinels mymaster

15. Als nächstes fragen Sie die Adresse des Masters anhand des Namens der Slave-Instanzen ab, indem Sie den Befehl sentinel 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 Sie das Sentinel-Failover

16. Abschließend testen wir das automatische Failover in unserem Sentinel-Setup. Versetzen Sie den Redis-Master (der auf Port 6379 läuft) auf dem Redis/Sentinel-Master für 60 Sekunden in den Ruhezustand . Fragen Sie dann wie folgt die Adresse des aktuellen Masters auf den Replikaten/Slaves 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 mitteilen möchten, ist das untenstehende Feedback-Formular Ihr Zugang zu uns.

Im nächsten und letzten Teil dieser Serie werden wir uns mit der Einrichtung eines Redis-Clusters in CentOS 8 befassen. Es wird ein unabhängiger Artikel von den ersten beiden sein.