❝Es gibt ein Sprichwort über die Rolle der Redis-Master-Slave-Replikation: „Die Master-Slave-Replikation ist der Grundstein für hohe Verfügbarkeit.“ Bereitstellung, die oft gehört wird. Basierend auf sechs 9ern sind Sentinels und Cluster unerlässlich, um eine hohe Verfügbarkeit zu erreichen . Ich werde einige Wissenspunkte hinzufügen, die später nicht hinzugefügt wurden. Ich freue mich auch darauf, Sie im Kommentarbereich zu sehen!❞
Da der Master-Knoten-Master Sie als Chef nicht zum Spielen führen wird. Ich werde unter euch vieren einen Boss auswählen und dann werdet ihr mit ihm spielen.
Wenn der Chef, der nicht mit Ihnen spielt, zurückkommt, wird seine Identität ungültig und er wird nicht länger Ihr Chef sein. Er kann nur mit dem Boss spielen, den ich ausgewählt habe.
Der obige Dialogprozess ist genau das, was es für uns bedeutet, Wächter zu konfigurieren. Wer auch immer wir spielen, wird wem Daten geben. Sobald wir die Rolle von Wächtern verstanden haben, werden wir fortfahren.
„Lassen Sie uns abschließend erklären, was ein Sentinel in professioneller Hinsicht ist.“
Sentinel, der englische Name ist Sentinel, ist ein verteiltes System, das zur Steuerung jedes Servers in der Master-Slave-Struktur verwendet wirdMonitoring
, wenn der Master-Knoten ausfällt, wird der Abstimmungsmechanismus verwendet Wählen Sie einen neuen Master-Knoten aus und verbinden Sie alle Slave-Knoten mit dem neuen Master-Knoten. 监控
,当主节点出现故障后通过投票机制来挑选新的主节点,并且将所有的从节点连接到新的主节点上。
上文中我们谈到的对话过程就是哨兵的作用之一自动故障转移。
谈到作用肯定就是这个哨兵到底在工作中到底干了什么事情。我们先用比较干巴的概念描述一下,然后在下文的工作原理会一一谈到。
哨兵的三个作用监控、通知、自动转移故障
🎜<ul data-tool="mdnice编辑器" style="margin-top: 8px; margin-bottom: 8px; padding-left: 25px; font-size: 15px; color: #595959; list-style-type: circle;">
<li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; font-size: 14px;">Überwachung<ul style="margin-top: 8px; margin-bottom: 8px; padding-left: 25px; font-size: 15px; list-style-type: square;">
<li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; font-size: 14px;">Wen soll überwacht werden? Um die Master-Slave-Struktur zu unterstützen, ist einer der Master-Knoten und der andere der Slave-Knoten, daher muss er diese beiden überwachen. </section></li>
<li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; font-size: 14px;">Überwachen Sie, ob der Master-Knoten und die Slave-Knoten normal laufen Wenn ein Problem mit dem Server von Sentinel erkannt wird, werden Benachrichtigungen an andere Sentinels gesendet. Die von jedem Sentinel entdeckten Probleme werden in dieser Gruppe veröffentlicht. </section></li>
<li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; font-size: 14px;"></section></li>
</ul>Automatisches Failover</section></li>
<li>Wenn erkannt wird, dass der Master-Knoten ausgefallen ist, trennen Sie alle mit dem ausgefallenen Master-Knoten verbundenen Slave-Knoten, wählen Sie einen der Slave-Knoten als Master-Knoten aus und ersetzen Sie dann den anderen Slave-Knoten. Der Knoten ist mit diesem neuesten Master-Knoten verbunden. Und informieren Sie den Client über die neueste Serveradresse. <section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; font-size: 14px;"><ul style="margin-top: 8px; margin-bottom: 8px; padding-left: 25px; font-size: 15px; list-style-type: square;"><li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; font-size: 14px;"></section></li></ul>Hier ist zu beachten, dass Sentinel auch ein Redis-Server ist, der jedoch keine Dienste für die Außenwelt bereitstellt. </section>
</li>Konfigurieren Sie den Sentinel als ungerade Zahl. Warum also die Anzahl der Sentinel-Server auf eine ungerade Zahl konfigurieren? Mit dieser Frage finden Sie unten die gewünschte Antwort. <li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; font-size: 14px;"><ul style="margin-top: 8px; margin-bottom: 8px; padding-left: 25px; font-size: 15px; list-style-type: square;"><li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; font-size: 14px;"> 2. So konfigurieren Sie den Sentinel </section></li></ul></section></li>
</ul>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;"></p> 1. Vorbereitung <p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;"></p>
<h1 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; font-size: 25px;">
<span class="prefix" style="color: rgb(64, 184, 250); display: none;"></span>In diesem Kapitel beginnen wir mit der Konfiguration des Sentinel und bereiten uns auf die Vorarbeiten vor. Das Bild unten zeigt Kakas Vorbereitungen. Starten Sie 8 Clients, drei Sentinels, einen Master-Knoten, zwei Slave-Knoten, einen Master-Knoten-Client und einen Slave-Knoten-Client. <span class="content" style="display: inline-block; color: rgb(64, 184, 250);"></span><h2 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; font-size: 22px; border-bottom: 4px solid rgb(64, 184, 250);">
<span class="prefix" style="display: flex; width: 20px; height: 20px; background-size: 20px 20px; background-image: url(https://my-wechat.mdnice.com/fullstack-1.png); margin-bottom: -22px;"></span><span class="content" style="display: flex; color: #40B8FA; font-size: 20px; margin-left: 25px;">2. Interpretation der Sentinel.conf-Konfiguration</span><span class="suffix" style="display: flex; box-sizing: border-box; width: 200px; height: 10px; border-top-left-radius: 20px; background: RGBA(64, 184, 250, .5); color: rgb(255, 255, 255); font-size: 16px; letter-spacing: 0.544px; justify-content: flex-end; float: right; margin-top: -10px; box-sizing: border-box !important; overflow-wrap: break-word !important;"></span>
</h2>
</h1>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Die von Sentinel verwendete Konfigurationsdatei ist<code style="overflow-wrap: break-word; margin: 0px 2px; font-family: " operator mono consolas monaco menlo monospace word-break: break-all color: rgb background: rgba padding: border-radius: height: line-height:>sentinel.conf
我们来对sentinel.conf配置信息进行解读但是大多数都是注释,这里咔咔给大家提供一个命令来过滤这些无用信息 cat sentinel.conf | grep -v '#' | grep -v '^$'
Befehl cat sentinel.conf | grep -v '#' | grep -v '^$' > ./data/sentinel-26379.conf
把sentinel.conf过滤后的信息移到/usr/local/redis/conf
下然后打开sentinel-26379.conf
修改信息存放目录然后快速的复制俩个哨兵配置文件,端口为26380和26381。sed 's/26379/26381/g' sentinel-26379.conf > sentinel-26381.conf
Testen Sie, ob die Master-Slave-Replikation normal funktioniert, starten Sie drei Redis-Server und die Ports sind 6379, 6380, 6381
Wenn man sich die Informationen zum Master-Knoten ansieht, sind zwei Slave-Knoten verbunden und die Ports sind 6380 bzw. 6381. 6379、6380、6381
查看主节点信息,是有俩台从节点在连接着,端口分别为6380、6381。
这里有一个小小的点就是lag怎么一个是1一个是0呢!lag是延迟时间,我这里是本地测试所以会出现0的情况,使用云服务器是很少出现的。lag的值为0和1都属于正常。测试主节点添加一个hash值,hset kaka name kaka
Ein kleiner Punkt hier ist, dass einer der Lags 1 und der andere 0 ist! Verzögerung ist die Verzögerungszeit, die ich lokal teste, daher liegt die Situation bei 0. Dies passiert selten, wenn ein Cloud-Server verwendet wird. Die Verzögerungswerte sind 0 und 1, was normal ist. Testen Sie den Hauptknoten, um einen Hash-Wert hinzuzufügen, 连接26379哨兵,主要是最后一行,监控的主节点名为mymaster,状态正常,从节点有俩个,哨兵数量为1个在来查看一下26379的哨兵配置信息,这个时候已经改动了在启动一个
26380
的哨兵,redis-sentinel 26380-sentinel.conf
,这里注意一下最后一行多了一条信息,这个id就是我们26379
Die neu hinzugefügte ID in der KonfigurationsdateiDann kommen wir zum Client von Sentinel 26379, der auch die neu hinzugefügte ID von 26380 Sentinel istZu diesem Zeitpunkt überprüfen wir die Konfigurationsdatei von 26379 Sentinel, Überprüfen Sie die Konfiguration zum ersten Mal. In der Datei ist 26380 Sentinel nicht konfiguriert. Beim zweiten Anzeigen wurden die Informationen hinzugefügt, nachdem 26380 Sentinel konfiguriert wurde. Zuletzt müssen wir Sentinel-Client 3 starten, die Portnummer ist 26381. Nach dem Start werden auch unsere Konfigurationsinformationen und Serverinformationen geändert. Wenn wir die Informationen von Sentinel 26380 hinzufügen, verfügt auch Sentinel 26381 über diese.
Bis zu diesem Punkt ist unsere Konfiguration von Sentinel abgeschlossen. Nachdem wir 30 Sekunden gewartet haben, werden wir hier zum Client von 26379 kommen All diese Informationen wurden gemacht. Lassen Sie es uns aufschlüsseln.
Hier müssen wir zunächst ein paar Dinge wissen
Nach der Konfiguration von Sentinel müssen Sie dessen Arbeitsprinzip analysieren. Nur wenn Sie den Arbeitsablauf kennen, können Sie Sentinel besser verstehen.
Die in diesem Artikel erklärten Prinzipien sind nicht so trocken! Ermöglicht Ihnen, einen technischen Artikel als Geschichte zu lesen.Um es auf den Punkt zu bringen: Die Rolle des Wachpostens besteht in der Überwachung, Benachrichtigung und dem Failover. Dann dreht sich auch das Arbeitsprinzip um diese drei Punkte.
1. Überwachungsworkflow Der Meister Der Knoten zeichnet die Informationen der Redis-Instanz auf. Die vom Masterknoten aufgezeichneten Informationen ähneln tatsächlich den vom Sentinel aufgezeichneten Informationen.
❝Zu diesem Zeitpunkt hat der Sentinel das Problem erkannt, sodass Sentinel für die Wahl eines neuen verantwortlich ist Was den Hauptknoten betrifft, kann Li Si auch gehen. Das wird also Chaos verursachen.
❞
Dieses Mal! Die fünf Wächter werden ein gemeinsames Treffen abhalten. Alle Wächter werden dann in einem Intranet ihre eigenen Befehle senden und ihre eigenen Wahlzeiten und Runid übertragen. sentinel is-master-down-by-address-port
Jeder Sentinel ist sowohl Kandidat als auch Wähler. Jeder Sentinel hat eine Stimme und der Umschlag repräsentiert seine Stimmrechte. Wenn sentinel1 und sentinel4 gleichzeitig Anweisungen an die Gruppe senden, um sich auf die Wahl vorzubereiten, sagt sentinel2 zu diesem Zeitpunkt, dass ich für denjenigen stimmen werde, der die Anweisung zuerst erhält. Wenn Sentinel1 vorzeitig freigegeben wird, wird die Stimme von Sentinel2 für Sentinel1 abgegeben. Die Abstimmung wird gemäß diesen Regeln eingeleitet, bis die Stimmen eines Wächters die Hälfte der Gesamtzahl der Wächter ausmachen. Gehen Sie davon aus, dass Sentinel1 gewählt wird, nachdem die Anzahl der Sentinel1-Stimmen mehr als die Hälfte der Gesamtzahl der Sentinels erreicht hat. Zu diesem Zeitpunkt ist die nächste Stufe erreicht. Sentinel hat oben Sentinel1 als Vertreter ausgewählt, um zu allen Slave-Knoten zu gehen und einen als Master-Knoten zu finden. Es gibt bestimmte Regeln für die Auswahl eines Masterknotens, nicht nur für die zufällige Auswahl.
Diejenigen mit langsamer Reaktion werden getötet. Diejenigen mit langsamer Reaktion werden getötet reicht nicht, es wird ein neuer Slave5 hinzugefügt. Es macht keinen Sinn! Nach den oben genannten drei Punkten gibt es immer noch Salbe4 und Sklave5, und sie werden nach dem Prioritätsprinzip überprüft.
Nach der Auswahl eines neuen Masterknotens müssen Anweisungen an alle Knoten gesendet werden.
❞ Empfohlen: „Redis Tutorial“
Das obige ist der detaillierte Inhalt vonRedis Sentinel-Prinzip, ich habe dich lange toleriert!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!