Githubの
1 Redisのセンチネル・メカニズム
センチネル、中国名センチネル
センチネルはRedisのクラスタアーキテクチャで非常に重要な成分であり、次のように主な機能であります
- クラスタの監視
Redisのマスターとスレーブのプロセスを監視する作業 - メッセージ通知
Redisのインスタンスで障害が発生した場合、管理者に警告メッセージを送信するための責任そして見張り - フェイルオーバー
マスターノードがダウンした場合、それは自動的にスレーブノードに転送されます - Configuration Centerの
フェイルオーバーが発生した場合、クライアントのクライアントに新しいマスタアドレスを通知
センチネル自体は一緒に仕事を、実行するためにセンチネルクラスタとして配布されます
- フェイルオーバーは、ほとんどがそれが分散選挙を伴う合意し、警備員が必要とするマスターノードがダウンしたかどうかを判断します
- いくつかのセンチネルノードがダウンした場合でも、クラスタは歩哨が正常に動作しています
現在センチネル2バージョン、センチネル1のセンチネル2相対用い、多くのコードを書き換え、フェイルオーバー機構及びアルゴリズムは、より堅牢かつ簡単になるように設計され
センティネルのコア知識2
- Sentinelはその堅牢性を確保するために、少なくとも3つのインスタンスが必要です
- センチネル+ Redisのマスター・スレーブアーキテクチャの展開は唯一の高可用性クラスタのRedisを確保することができ、データ損失ゼロを保証するつもりはありません
- この複雑なデプロイメントのセンチネル+ 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人の歩哨がmajority
2であるので、私は2人の警備員が走り続け、あなたがフェールオーバーできます
参照
「Javaのエンジニアインタビュー暴行シーズン1 - 中国フペルジン先生」