高可用性ソリューションをRedisの-センチネルクラスタ
免責事項:この記事はCC 4.0 BY-SAの著作権契約書に従って、ブロガーオリジナル記事です、元のソースのリンクと、この文を添付してください、再現。
このリンクします。https://blog.csdn.net/sunhuiliang85/article/details/78361211
高可用性ソリューションをRedisの
A.用語集
II。マスタースレーブのレプリケーション
Redisのマスターパターンデータは、マスタノードがあるノードから到達可能ではない場合を保護するために、スレーブノードの同期にマスタノードからコピーすることができます
バックアップトップに、そしてデータ(マスター・スレーブのレプリケーションは、最終的な一貫性を保証することができます)できるだけ失われないことを確認することができます。第二に、ノードは、マスタノード拡張を読み取ることができます
能力は、同時読み出し動作を大量にサポートすることができないマスタノードと、マスタノードは、ノードからある程度の圧力を共有することができます。
コピーが直面する主な問題:
1.プライマリノードに障害が発生した場合、手動でノードからメインノードに昇格する必要があり、マスタ・アドレスと再起動を変更するためにアプリケーション側に通知します
ノードから新しい主ノードをコピーするためのアプリケーション、およびその他の必要なコマンド、全体のプロセスは、人間の介入を必要とします。
2.マスターノードを書く能力が制限され、スタンドアローンです。
3.主記憶容量が限られたスタンドアロンノードです。
III。元のフェイルオーバ
1.プライマリノードに障害が発生した後、マスターノードの障害に接続されたクライアント、接続障害がノードからマスターノードをコピーする割り込み2によって引き起こされます。
2.マスターノードが正常に起動しない場合、あなたはノード(スレーブ-1)から選択する必要があり、新しいプライマリセクションになるために誰のコマンドslaveofその実装
元のノード(スレーブ1)から3は、アプリケーション側を再起動し、新しいマスターノード、アプリケーション側のマスタノード更新情報となります。
4.別のクライアントコマンドがマスターノードから新しいノードをコピーする(スレーブ2)
元のプライマリノードが復元される後5は、新しいマスターノードにコピー
四.Redisセンチネル高可用性
プライマリノードに障害が発生した場合、RedisのSentinelは自動的に完全な障害検出およびフェイルオーバー、およびインフォームアプリケーション側、真の高可用性を可能にすることができます。
RedisSentineは、いくつかのRedisのセンチネルノードとデータノードを含む分散アーキテクチャであり、各ノードは、ノードのデータをセンチネルであろうと
それはノードが到達不能である見つけたときに、残りのセンチネルノードの監視、および、オフラインのノードを識別するだろう。フラグが「マスターノード」であり、それは意志場合
その他のセンチネルノード「協議」、センチネルリンパ節のほとんどは、プライマリノードが到達不能であると考えられているとき、彼らは完全にセンチネルノードを選出します
自動作業へのフェイルオーバーが、これはRedisのアプリケーション側へのリアルタイム通知に変更されます。全体のプロセスは自動的に行われ、解決するために人間の介入を必要としません。
高可用性のRedisの問題。
Redisのセンチネルセンチネルは複数のノードが含まれ、これはまた、2つの利点をもたらします:
1.故障判定を効果的に誤検出を防止することができる、センチネルが一緒ノード複数のノードによって実行されます。
2.センチネルノードセットは、個々のセンチネル節は、センチネルによってノードのセット全体利用できない場合であってもその結果、いくつかのセンチネル節から構成されています
しかし、それは堅牢です。
RedisのSentinelは、次の機能があります。
1.モニタリング:センチネルノードデータRedisのは、定期的に検出し、残りのセンチネルノード到達可能かどうか
2.通知:センチネル結果は、アプリケーション側に通知するために失敗します。
前記マスターノードのフェイルオーバー:マスターノードと正しい主従関係のその後のメンテナンスに昇格したノードから達成します。
4.構成が提供する:RedisSentinel構造のうち、一度にクライアントを開始接続センチネル節は、情報を取得するために、そこからセット、マスターノードです。
ファイブ。Redisのセンチネル・トポロジー
六。Redisのセンチネルリンパ節の検出および監視メカニズム
Redisのセンチネル発見し、定期的なモニタリングを通じて、各ノードの完了を監視3つのタスク:
1 10秒ごとに、各Sentinelは、マスタノードとスレーブノードの送信コマンド情報に最新のトポロジを取得します。
2. 2秒ごとに、データノードにそれぞれ_sentinel_ Redisのセンチネル節:送信ノードは、ハローチャネル用Senitnelマスタノードを決定します。
センチネルリンパ節および現在の情報、および各センチネルノードは、彼らの主な祭りとしてだけでなく、他のセンチネルリンパ節について学ぶために、チャネルにサブスクライブします
決意ポイント。このタスクは、次の2つのタスクを完了するためにタイムアウトすることができます。
(1)新しいセンチネルノードの発見:マスターノード_Sentinel_に加入者:追加情報は、ハローセンチネル節。あなたは新規参入している場合
センチネル節、一緒に格納されたセンチネルノード情報、及び変更センチネルノードとの接続を作成します
マスターノードのステータス(2)センチネルノード間の交換だけでなく、オフライン目的の後ろのリーダー選出などによると、
3. 1秒ごと、各センチネル節、センチネルノードを残りのノードがマスタノードにpingコマンドを送信し確認するためのハートビートを行います
現在のノードが到達可能です。そして、マスターノードは、残りのセンチネルからのノードは、各ノードのためのモニターを達成するために、接続を確立しました。定期的なタスク
これは、ノード障害の決意のための重要な基礎です。
七。Redisのセンチネル展開のヒント
1.Sentinelノードは、単一の物理マシン上に展開するべきではありません。
2.展開少なくとも3つのノード、及び奇数センチネル
3.のみセンチネル、または提案の各マスターノードの構成は、センチネルセンチネルノードセットを論じ監視が同じものである場合に
メインサービスノードセットは、複数の番組の、次に使用する、そうでなければスキーム2。
八Redisのクラスター|。データパーティション
Redisのデータパーティション:RedisCluster仮想パーティション溝、キーは、すべてのスロット0から16383までの整数ハッシュ関数にマッピングされ
式:スロット= CRC16(キー)&16383。各ノードがマッピングされているスロットと鍵データチャネルの部分を維持する責任があります。
Redisのパーティションの仮想スロットの特徴:
難易ノードの伸縮を簡素化1データとデカップリングノードとの間の関係、
2.ノード自体は、マッピング関係スロットなしクライアント・エージェント・サービスまたはメンテナンスパーティションのメタデータスロットを維持します
3.クエリのノードとの間のマッピングをサポートして溝、シーンのデータをルーティング、オンライン膨張と収縮のためのキー。
----------------
免責事項:この記事は、元の記事のCSDNブロガー「アベニューの簡素化」で、CC 4.0 BY-SAの著作権契約書に従って、再現し、元のソースとのリンクを添付してくださいこの文。
オリジナルリンクします。https://blog.csdn.net/sunhuiliang85/article/details/78361211