Redisセンチネルモードのコア原則

1はじめに

センチナル、中国語の名前はセンチネルです

センチネルは、redisクラスターアーキテクチャの非常に重要なコンポーネントです。主な機能は次のとおりです。

(1)Redisマスタープロセスとスレーブプロセスが正常に機能しているかどうかを監視するクラスター監視
(2)メッセージ通知、redisインスタンスに障害が発生した場合、歩哨は管理者にアラーム通知としてメッセージを送信する責任があります
(3)フェイルオーバー、マスターノードがハングアップした場合は自動的にスレーブノードに転送されます
(4)構成センター、フェイルオーバーが発生した場合は、クライアントに新しいマスターアドレスを通知します

歩哨自体も分散され、歩哨のクラスターとして実行され、互いに連携します

(1)フェイルオーバー中に、マスターノードがダウンしていると判断され、ほとんどのセンチネルが同意する必要があります。これには、分散選択の問題が含まれます。
(2)一部のセンチネルノードがダウンしている場合でも、センチネルクラスターは引き続き使用できます。高可用性メカニズムの重要な部分であるフェイルオーバーシステムが単一ポイントである場合、高可用性を実現できないため、正常に機能します。

2つのコア知識

(1)Sentinelは、その堅牢性を確保するために少なくとも3つのインスタンスを必要とします
(2)Sentinel + redisマスタースレーブデプロイメントアーキテクチャは、データ損失ゼロを保証せず、redisクラスターの高可用性のみを保証します
(3)Sentinel + Redisマスタースレーブの場合これ複雑なデプロイメントアーキテクチャでは、テスト環境と本番環境の両方で十分なテストとドリルを実行してみてください

3センチネルクラスター

1 哨兵集群必须部署2个以上节点

セントリークラスターが2つのセントリーインスタンスのみをデプロイする場合、クォーラム= 1

+----+         +----+
| M1 |---------| R1 |
| S1 |         | S2 |
+----+         +----+

構成:クォーラム= 1

マスターがダウンしています。s1とs2の1つの番兵がマスターがダウンしていると見なす限り、切り替えを実行できます。同時に、s1とs2の番兵がフェイルオーバーを実行するために選択されます。

同時に、この時点で過半数が必要です。つまり、ほとんどの歩哨が実行されています。2つの歩哨の過半数は2です(過半数2 = 2、過半数3 = 2、過半数5 = 3、過半数4 = 2)、両方の歩哨が実行されている場合、フェイルオーバーを許可できます。

ただし、M1とS1で実行されているマシン全体がダウンした場合、歩哨は1つだけであり、フェイルオーバーを実行できる過半数はありません。他のマシンにはR1がありますが、フェイルオーバーは実行されません。

2 经典的哨兵集群

       +----+
       | M1 |
       | S1 |
       +----+
          |
+----+    |    +----+
| R2 |----+----| R3 |
| S2 |         | S3 |
+----+         +----+

構成:クォーラム= 2、大部分

M1が配置されているマシンがダウンしている場合、残りの3つの歩哨のうち2つがあります。S2とS3は、マスターがダウンしていることに同意し、フェイルオーバーを実行するために1つを選択できます。

同時に、3つの歩哨の大部分は2であるため、残りの2つの歩哨が実行されている場合は、フェイルオーバーを許可できます。

5センチネルのメカニズム

5.1sdownおよびodown変換メカニズム

2つの障害状態、sdownとodown

ダウンタイムは主観的なダウンタイムです。歩哨がマスターがダウンしていると感じた場合、それは主観的なダウンタイムです。

Odownは客観的なダウンタイムであり、クォーラム数のセンチネルがマスターがダウンしていると感じた場合、それは客観的なダウンタイムです。

sdownによって達成される条件は非常に単純です。センチネルがマスターにpingを実行し、is-master-down-after-millisecondsで指定されたミリ秒数を超えると、マスターは主観的にダウンしていると見なされます。

sdownからodownへの変換の条件は非常に単純です。歩哨が指定された期間内に指定された数のクォーラムを受信した場合、他の歩哨もマスターがダウンしていると見なし、odownと見なされます。マスターがダウンしていると客観的に見なされます。

5.2センチネルクラスターの自動検出メカニズム

センチネルの相互発見は、redisのpub / subシステムを介して行われます。各センチネルは__sentinel __:helloチャネルにメッセージを送信します。この時点で、他のすべてのセンチネルはこのメッセージを消費し、他のセンチネルを認識できます。センチネルの存在

各歩哨は2秒ごとに、監視する特定のマスター+スレーブに対応する__sentinel __:helloチャネルにメッセージを送信します。コンテンツは、独自のホスト、ip、runid、およびこのマスターの監視構成です。

各歩哨は、監視する各マスター+スレーブに対応する__sentinel __:helloチャネルも監視し、このマスター+スレーブも監視している他の歩哨の存在を検知します。

各歩哨は、マスターの監視構成を他の歩哨と交換し、監視構成を相互に同期します。

5.3スレーブ構成の自動修正

歩哨は、スレーブの一部の構成を自動的に修正する責任があります。たとえば、スレーブが潜在的なマスター候補になる場合、歩哨は、スレーブが既存のマスターのデータを複製していることを確認します。スレーブがに接続されている場合フェイルオーバー後など、間違ったマスターの場合、歩哨はそれらが正しいマスターに接続されていることを確認します

5.4スレーブ->マスター選出アルゴリズム

マスターがダウンしていると見なされ、主要な歩哨がメイン/スタンバイの切り替えを許可している場合、特定の歩哨がメイン/スタンバイの切り替え操作を実行します。このとき、最初にスレーブを選択する必要があります。

奴隷のいくつかの情報を検討します

(1)マスターから切断する時間
(2)スレーブの優先順位
(3)オフセットのコピー
(4)実行ID

スレーブがミリ秒後のダウンの10倍を超えてマスターから切断され、さらにマスターがダウンしている時間の長さの場合、スレーブはマスターとしての選出には不適切であると見なされます。

(ミリ秒後のダウン* 10)+ミリ秒_since_master_is_in_SDOWN_state

次に、スレーブがソートされます

(1)スレーブの優先度に従ってソートします。スレーブの優先度が低いほど、優先度は高くなります。
(2)スレーブの優先度が同じ場合は、レプリカオフセットを確認します。このオフセットは、スレーブがより多くのデータを複製し、オフセットが低く、優先度が低くなります。高い
(3)上記の2つの条件が同じである場合は、実行IDが小さいスレーブを選択します

5.5クォーラムと過半数

歩哨がアクティブとスタンバイを切り替える必要があるたびに、最初にクォーラム数の歩哨がダウンしていると見なされ、次に歩哨が切り替えを行うように選択されます。この歩哨は、切り替えを行う前に主要な歩哨によって承認される必要があります。正式に実行されます。

クォーラム<マジョリティの場合、たとえば、歩哨が5つあり、マジョリティが3で、クォーラムが2に設定されている場合、切り替えの実行を許可できるのは3つの歩哨のみです。

ただし、クォーラム> =過半数の場合、クォーラム数のすべての歩哨を承認する必要があります。たとえば、5つの歩哨があり、クォーラムが5の場合、切り替えを実行する前に、5つの歩哨すべてが承認に同意する必要があります。

5.6構成エポック

歩哨は、Redisマスター+スレーブのセットを監視し、対応する監視構成を持ちます

切り替えを実行する番兵は、切り替え先の新しいマスター(salve-> master)から構成エポックを取得します。これはバージョン番号であり、各スイッチのバージョン番号は一意である必要があります。

最初に選出された歩哨の切り替えに失敗した場合、他の歩哨はフェイルオーバータイムアウト時間を待機してから、切り替えを続行するために引き継ぎます。この時点で、新しい構成エポックが新しいバージョン番号として再取得されます。

5.7構成の伝播

センチネルは切り替えを完了すると、最新のマスター構成をローカルで更新および生成し、前述のpub / subメッセージメカニズムを介して他のセンチネルと同期します。

ここでの以前のバージョン番号は非常に重要です。すべての種類のメッセージがチャネルを介してリリースおよび監視されるため、センチネルが新しいスイッチを完了した後、新しいマスター構成は新しいバージョン番号に従います。

他のセンチネルは、バージョン番号のサイズに応じてマスター構成を更新します

6関連情報

  • ブログ投稿は簡単ではありません、注意と賞賛に一生懸命働いたすべての人、ありがとう

おすすめ

転載: blog.csdn.net/qq_15769939/article/details/113845728
おすすめ