画期的なJavaのインタビュー(23-7) - Redisのセンチネルアーキテクチャ

Githubの

1 Redisのセンチネル・メカニズム

センチネル、中国名センチネル

センチネルはRedisのクラスタアーキテクチャで非常に重要な成分であり、次のように主な機能であります

  • クラスタの監視
    Redisのマスターとスレーブのプロセスを監視する作業
  • メッセージ通知
    Redisのインスタンスで障害が発生した場合、管理者に警告メッセージを送信するための責任そして見張り
  • フェイルオーバー
    マスターノードがダウンした場合、それは自動的にスレーブノードに転送されます
  • Configuration Centerの
    フェイルオーバーが発生した場合、クライアントのクライアントに新しいマスタアドレスを通知

センチネル自体は一緒に仕事を、実行するためにセンチネルクラスタとして配布されます

  • フェイルオーバーは、ほとんどがそれが分散選挙を伴う合意し、警備員が必要とするマスターノードがダウンしたかどうかを判断します
  • いくつかのセンチネルノードがダウンした場合でも、クラスタは歩哨が正常に動作しています

現在センチネル2バージョン、センチネル1のセンチネル2相対用い、多くのコードを書き換え、フェイルオーバー機構及びアルゴリズムは、より堅牢かつ簡単になるように設計され

センティネルのコア知識2

  1. Sentinelはその堅牢性を確保するために、少なくとも3つのインスタンスが必要です
  2. センチネル+ Redisのマスター・スレーブアーキテクチャの展開は唯一の高可用性クラスタのRedisを確保することができ、データ損失ゼロを保証するつもりはありません
  3. この複雑なデプロイメントのセンチネル+ Redisのマスター・スレーブ・アーキテクチャの場合、可能な限り、テスト環境と本番環境では、我々は十分なテストや訓練を実施しています

そして、なぜ2つだけのノードが動作しません。

私たちは、つ以上のノードを展開する必要があります

2つのだけ配置例の場合、定足数= 1

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

構成: quorum = 1

マスターのダウンタイム、S1とS2限り歩哨のダウンタイムがあるとして、マスタースイッチと考えることができ、そしてそれはs1とs2のフェールオーバーを選出します。
しかし、今回、それが必要な過半数である、つまり、警備員のほとんどは、実行し、2人の歩哨過半数が2であります

2 = 2センチネルマジョリティ
過半数の3 = 2センチネル
。過半数の4 = 2センチネル
5セントリ大半= 3

二つの番兵は、フェールオーバーを許可することができ、実行されています

機械M1及びS1の全体の動作が停止している場合が別のマシンR1であるが、フェイルオーバーを実行しないが、その後、残りの1つのセンチネルは、フェイルオーバーを可能にするために何の大部分ではありません

43-センチネルノードクラスタ(クラシック)

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

構成:定足数= 2、過半数

M1のノードが2人の警備員を残して、ダウンした場合、S2、S3は、マスターがダウンし、その後、フェイルオーバーを実行するために選出されたことに同意することができます

一方、3人の歩哨がmajority2であるので、私は2人の警備員が走り続け、あなたがフェールオーバーできます

参照

「Javaのエンジニアインタビュー暴行シーズン1 - 中国フペルジン先生」

おすすめ

転載: yq.aliyun.com/articles/707889