Heim  >  Artikel  >  Datenbank  >  So analysieren Sie das Prinzip des Sentry-Modus in Redis

So analysieren Sie das Prinzip des Sentry-Modus in Redis

WBOY
WBOYnach vorne
2023-05-28 19:18:361340Durchsuche

Dieser Artikel vermittelt Ihnen ein detailliertes Verständnis der Prinzipien des Redis-Sentinel-Modus, spricht darüber, was Sentinel kann, startet die Sentinel-Methode und den Sentinel-Workflow. Ich hoffe, er wird Ihnen hilfreich sein!

1. Was ist Redis Sentinel?

Redis Sentinel ist eine offizielle Lösung von Redis, um eine hohe Verfügbarkeit zu erreichen. Redis Sentinel bietet Hochverfügbarkeit für Redis. In der Praxis bedeutet dies, dass Sie mit Sentinel einen Redis-Cluster erstellen können, der gegen bestimmte Arten von Fehlern resistent ist und automatisch ein Failover ohne menschliches Eingreifen implementiert. [Verwandte Empfehlung: Redis-Video-Tutorial]

2. Was kann Sentinel tun?

1. Überwachen Sie den Gesundheitszustand von Redis-Clusterknoten (Master + Replikat) und Sentinel-Knoten

2. Automatisches Failover: Wenn der Master ausfällt, kann Sentinel ein Failover implementieren und den Client benachrichtigen, eine Verbindung zum neuen Master herzustellen.

3. Benachrichtigung: Über die API können Benachrichtigungen an Administratoren und Entwickler gesendet werden, und die überwachte Redis-Instanz schlägt fehl.

4: Der Client stellt eine Verbindung zum Sentinel her und Sentinel kann auf die Master- und Rückgabeknoteninformationen zugreifen der Client.

3. So starten Sie redis-sentinel /path/to/sentinel.conf

2. conf-Konfigurationsanweisungen lauten wie folgt:

# 配置需要监控的master节点信息 2代表法定人数 作用是表示需要最少需要多少个sentinel节点同意
#master节点不可达才标记为客观下线
#举例 5个sentinel实例 quorum设置成2 那么有2个sentinel节点认为master不可达,
#则其中一个会启动故障转移#如果至少有三个哨兵可到达,故障转移将被授权并实际启动。
sentinel monitor mymaster 127.0.0.1 6379 2 
#只需要配置master sentinel会自动检测slave信息
sentinel down-after-milliseconds mymaster 60000 
#如果master在指定时间内没有响应ping命令/或报错,则认为主观下线了。
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1 
#指定故障转移的时候,同时支持多少个replica并行的与master同步数据,越小故障转移越久
#以上配置可以通过SENTINEL SET command.来实时修改。
sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5

Hinweis:

Redis-Sentinel muss gemäß der Konfigurationsdatei wiederhergestellt werden. Der Portzugriff muss zwischen Sentinels geöffnet sein den gegenseitigen Zugang erleichtern.

4. Sentinel-Workflow

1. Zunächst realisiert der Sentinel die dynamische Wahrnehmung durch den Pub/Subscribe-Mechanismus.

Ziel offline: So analysieren Sie das Prinzip des Sentry-Modus in RedisSo analysieren Sie das Prinzip des Sentry-Modus in RedisWenn der Knoten, der subjektiv offline ist, der Masterknoten ist, sucht der Sentinel-Knoten über den Befehl nach der Beurteilung anderer Sentinel-Knoten auf dem Masterknoten. In der Sentinel-Konfiguration konfiguriert. Zu diesem Zeitpunkt geht der Sentinel-Knoten davon aus, dass tatsächlich ein Problem mit dem Master-Knoten vorliegt, sodass die meisten Sentinel-Knoten dem Offline-Betrieb zustimmen, der als objektiv offline gilt.

Beachten Sie, dass das Offline-Ziel nur für den Master-Knoten wirksam wird. Es wird ein Failover ausgelöst.

3 Der Master ist offline und ein Failover ist erforderlich. Zunächst müssen Sie den Sentinel-Master auswählen Knoten und verwenden Sie den Sentinel-Masterknoten, um ein Redis-Failover durchzuführen. sentinel is-masterdown-by-addr

Zunächst wählt der Sentinel den Anführer. Verwenden Sie den Raft-Algorithmus (Staatskonsens-Algorithmus).

Jeder Sentinel-Knoten kann zum Leader werden. Wenn ein Sentinel-Knoten bestätigt, dass der Master-Knoten des Redis-Clusters subjektiv offline ist, fordert er andere Sentinel-Knoten auf, sich selbst zum Leader zu wählen. Wenn der angeforderte Sentinel-Knoten dem Wahlantrag anderer Sentinel-Knoten nicht zugestimmt hat, wird er dem Antrag zustimmen (Wahlstimme + 1), andernfalls wird er nicht zustimmen.

Wenn die Anzahl der Wahlstimmen, die ein Sentinel-Knoten erhält, die Mindestanzahl der Leader-Stimmen erreicht (den Höchstwert des Quorums und die Anzahl der Sentinel-Knoten/2+1), wird der Sentinel-Knoten zum Leader gewählt, andernfalls erfolgt die Wahl wird erneut ausgeführt.

Kernidee von Raft: Wer zuerst kommt, mahlt zuerst, die Minderheit gehorcht der Mehrheit.

Nachdem Sentinel den Masterknoten ausgewählt hat, muss der Sentinel-Masterknoten den Redis-Cluster-Masterknoten auswählen, um eine neue Clusterbeziehung aufzubauen.

Die Grundlage für die Wahl eines neuen Redis-Masterknotens ist:

1. Die Zeit, um die Verbindung zum Sentinel zu trennen. Filtern Sie die Replika-Slaves, bei denen festgestellt wurde, dass sie länger als die konfigurierte Host-Timeout-Zeit für Ausfall nach Millisekunden

2 vom Haupt-Sentinel-Server getrennt sind. Geben Sie denjenigen mit niedriger Replikationspriorität Vorrang.

3. Wenn die Prioritäten gleich sind, wurde der Kopierversatz verarbeitet. Je größer der Wert, desto höher die Priorität, was eher der Geschäftsszenariofunktion entspricht.

4. Wenn die Kopierversätze gleich sind, schauen Sie sich die laufende ID an. Bevorzugen Sie kleine.

Nachdem Sie den Masterknoten ausgewählt haben, beginnen Sie mit der Pflege der Clusterbeziehung.

1. Sentinel-Knoten, senden Sie den Slave-No-One-Befehl an den neuen Master-Knoten, um ihn zu einem unabhängigen Knoten zu machen

2. Sentinel-Knoten, senden Sie Slave-IP-Port an andere Knoten, folgen Sie dem Master-Knoten 5. Zusammenfassung

Durch die obige Analyse kann Sentinel ein automatisches Failover durch geplante Überwachung erreichen. Bei einem einzelnen Masterknoten besteht jedoch immer noch die Möglichkeit eines Datenverlusts, und wenn die Leistung eines Die Anzahl der einzelnen Maschinen ist begrenzt, es gibt keine horizontale Erweiterungsmöglichkeit.

Das obige ist der detaillierte Inhalt vonSo analysieren Sie das Prinzip des Sentry-Modus in Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen