Heim >Datenbank >Redis >Eine kurze Analyse des Prinzips des Sentry-Modus in Redis

Eine kurze Analyse des Prinzips des Sentry-Modus in Redis

青灯夜游
青灯夜游nach vorne
2022-01-25 10:36:522797Durchsuche

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!

Eine kurze Analyse des Prinzips des Sentry-Modus in Redis

Das Obige stellt das Prinzip der Redis-Master-Slave-Replikation vor, das das Problem der Redis-Datensicherung löst. Nachdem der Master-Knoten ausgefallen ist, kann kein neuer Master-Knoten automatisch ausgewählt werden, sondern der Slave-Knoten Manuell als Masterknoten festgelegt, geringe Effizienz und kein automatisches Failover möglich. Redis bietet offiziell eine Hochverfügbarkeitslösung.

1. Was ist Redis Sentinel?

Redis Sentinel ist die offizielle Hochverfügbarkeitslösung für Redis. 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 Empfehlungen: Redis-Video-Tutorial]

2. Was kann Sentinel?

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.

2. Wie spürt Sentinel, dass der Meister gestorben ist?

Eine kurze Analyse des Prinzips des Sentry-Modus in RedisHier gibt es zwei Situationen: Zum einen geht der Master subjektiv offline, zum anderen geht der Master objektiv offline.

Subjektiv offline: Jeder Sentinel sendet alle 1 Sekunde einen Ping-Befehl an den Master. Wenn der Master nicht innerhalb von Millisekunden antwortet, geht der Sentinel-Knoten davon aus, dass der Master subjektiv offline ist.

Ziel offline:

Eine kurze Analyse des Prinzips 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 ist überschritten) (Anzahl der Personen). Zu diesem Zeitpunkt geht der Sentinel-Knoten davon aus, dass tatsächlich ein Problem mit dem Master-Knoten vorliegt, sodass er objektiv offline ist soll objektiv offline sein.

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.

Grundgedanke des Floßes: 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, die länger als die konfigurierte Host-Timeout-Zeit nach Millisekunden vom Haupt-Sentinel-Server getrennt wurden

2. 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 Funktion des Geschäftsszenarios 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 den Slave-IP-Port an andere Knoten, folgen Sie dem Master-Knoten

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. Weitere Kenntnisse zum Thema Programmierung finden Sie unter:

Einführung in die Programmierung

! !

Das obige ist der detaillierte Inhalt vonEine kurze Analyse des Prinzips 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:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen