Redisのセンチネル(センチネル)モードのクイックスタート

エンジニアXiaohui全体の皿:マイクロチャンネル公衆数により歓迎の注意。公共のキーワードへの返事は、無料の学習教材を受け取りません。

プライマリサーバがダウンしたとき、あなたは長引くと骨の折れる、手動で手動の介入を必要とするメインサーバー、1つのサーバーから切り替える必要があるが、また、いくつかのタイムサービスが利用できない原因となります。だから、より頻繁に、私たちの優先順位センチネル(見張り)モード。

障害検出、障害自動転送、物流センター、クライアント通知:RedisのRedisの歩哨は、高可用性の実装です。提供Redisの2.6バージョンの初めから、しかし、Redisの2.8バージョンの後、センチネルパターンを使用すると、Redisのセンチネルモードを使用したい場合は、意志、本番環境で安定するまでの時間で、モデルのこのバージョンは不安定であり、 Redisの2.8バージョンの新しいバージョンを使用するようにしてください。

センチネルは、別の実行可能ファイルのRedis-センチネルを持っていますが、それは実際にRedisのサーバーの特別なモードでだけ実行されますが、あなたはRedisのサーバーで一般的に与えることによって開始することができ--sentinelセンチネル、センチネルを開始するには、いくつかのデザインのアイデアオプションをそして、非常によく似飼育係。

Redisのセンチネルモード

センチネルの定期的なタスク

定期的なタスクの三つの重要な前哨メカニズムがあります。

  1. 各センチネルは、マスタとスレーブの情報のため、10秒ごとに実行しました

役割:

  • 私たちは、スレーブノードを発見しました。
  • 主従関係することを確認します。
  1. 情報交換(パブ/サブ)を介して各チャンネルマスターセンチネル節毎2秒

役割:

  • マスターノードは互いに通信し、センチネルを感知することができる情報自体の情報が新たに追加されました

こんにちはチャネルは、すべてのセンチネルは、このチャネルに2秒毎にサブスクライブし、チャネルに情報を公開、対話:__sentinelマスターノードで__

  1. 毎秒互いにセンチネルとセンチネルマスタ、スレーブにpingを送信します

役割:

  • ハートビート

主観と客観オフラインオフライン

主観オフライン

通信障害Redisのノードに単一のセンチネルリンパ節「偏見を」:組立ラインオフ主観

これは主観的なオフラインです。マスター障壁の複雑なネットワーク環境において、センチネルので、しかし、マスター、もう一方がそれのセンチネルている場合は?だから、「偏見」です。

これは、第3のタイミングに依存することです:センチネルとRedisの周りを見て、毎秒のping。彼はフェイルオーバーする必要がないため、スレーブのRedisのために、あなたは、この主観的なオフラインで使用することができます。しかし、マスターRedisのために、あなたは客観オフラインを使用する必要があります。

客観オフライン

目的オフライン:すべてのセンチネルノードノードは、(定足数以上が定足数を構成することができ、統一され)Redisの「コンセンサス」を習得することができませんでした。

これにより、第2のタイミングに依存することである。別のセンチネルにSENTINELであるマスター・ダウン・バイ-addrにコマンドを送信することにより、「相談」(2秒ごとの間センチネル、センチネルは、他の当事者かどうかを尋ねるためにサーバーを与えられましたオフライン。)

それだけでは、フェールオーバーを伴うセンチネルを判断するのに十分ではないため、組立ラインオフマスターRedisのために、我々は、前には、彼らができる合意に達する必要があります

リーダー選挙

センチネルフェールオーバークラスタは、クラスタ内の選出リーダーのフェイルオーバー操作を必要とする場合。センチネルは、センチネル間ラフトプロトコルアルゴリズムリーダー選挙を採用したが、紙に記載されている手順と完全に一致しません。完成センチネルを実行しているプロセスのフェールオーバークラスタは、すべてのセンチネルは、平等を復元します。リーダーは、フェイルオーバーが表示される唯一の役割です。

選挙プロセス

  1. センチネルリンパ節マスターが組立ラインオフ目標を見つけた後、センチネルは、まず、彼らは他のセンチネルのために投票した場合、彼らは、投票していない場合、タイムアウトダブルフェイルオーバー自身がリーダーになっていませんが表示されます。これは、フォロワーのと同じです。
  2. センチネルは投票しなかった場合は、それが候補となりました。
  3. いかだ契約と説明し、候補者となり、センチネルは、いくつかのことを行う必要がある
    3.1アップデートフェールオーバーステータスを開始し
    、現在のエポックPlusが新しい用語を入力するのと同等の3.2 1を、エポックは、センチネルにおけるラフトの契約期間です。
    3.3現在の時間と時間のランダムな期間に自分のタイムアウト時間を更新し、乱数はミリ秒の1秒でランダムな時間です。
    3.4送信は、マスタダウン・バイ ADDRの他のノードに投票するコマンド要求。あなた自身のエポックを持参するためのコマンド。
    彼らの投票に3.5、センチネルは、投票用紙はセンチネルとその時代に指導者とleader_epochのための投票で彼自身のマスター構造です。
  4. 他のセンチネルは、マスタダウン・バイ・addrのコマンドの候補を受けます。センチネル現在のエポックと候補者が彼のエポックとして渡すと、それは彼が構造中に主人のリーダーを入れて、他の候補者の中に、他の候補者に投票する同等leader_epochていることを示しています。後に現在のエポックで、彼らは唯一のフォロワーになることができ、他のセンチネルに投票しました。
  5. 彼は彼のアイデンティティは票の半分以上とその構成済みの定足数以上のリーダー(定足数は、「センチネル設計と実装のRedisの」を参照することができます)となりました見つけるまで候補者は、彼らの票を数えていきます。センチネルは、センチネルは、リーダーが、それはまた、クォーラム構成に依存することはでき選出された、いかだの合意よりも、定足数を増加させました。
  6. 選挙期間中、候補者が半分以上に亘って取得していないし、それが票の定足数を構成されている場合は、彼の選挙は失敗しただろう。
  7. より多くの票を得るための1つのエポック内ではなく、候補者の場合。だから、倍以上のタイムアウトフェイルオーバーを待った後、候補者は、エポックの再投票を増やします。
  8. 候補は票の半分以上と定足数は、それを構成するよりも多くを受け取った場合、それがリーダーになります。
  9. 異なるプロトコルでのいかだは、リーダーが他のセンチネルにメッセージのリーダーになることはありません。スレーブマスターから選択される他のセンチネルリーダーのために待機した後、新しいマスターワークを検出すると、目的はそれによって、フェールオーバープロセスを入力する必要がなくなり、識別オフラインを削除することになります。

フェイルオーバー・プロセス

  1. 複数のセンチネルは、問題のマスターを発見したと確認した場合には
  2. 私たちは、その後、指導者としてのセンチネルを選出します
  3. スレーブマスターとして再選
  4. 新しいマスターがあるスレーブの残りの部分を、知らせます
  5. クライアントからのマスタ変更通知
  6. 最後に、センチネルは、古いマスターの復活を待ってから、新しいマスター・スレーブになります

だから、どのようにスレーブノードそれの「右」を選択するには?

  1. (手動で設定スレーブノード優先順位)を選択し、スレーブ優先度最高のスレーブノードは、存在する場合、次いで、継続的不在を戻されます。
  2. 第二に、それが返された場合、何らの継続がない、最大のスレーブノード(最も完全なコピー)をオフセットコピー]を選択します
  3. 最後に、最小のRUN_IDスレーブノード(最も早い開始ノード)を選択します

高可用性を実現するために、クライアントの基本原理

クライアントは、通常の使用を保証するものではありませんフェイルオーバー後に知覚することはできません。クライアントのステップのため、高可用性の実装は次のよう:

  1. クライアントは、センチネルノードセットを取得します

Redisのセンチネルモード

  1. マスターノードがセンチネルGET-マスター-addrに名前によるAPIをマスター-nameで対応するクライアント情報を取得するには

Redisのセンチネルモード

  1. クライアント認証、現在取得した「マスターノードは、」真のマスターノードで、この目的は、フェイルオーバー時にマスターノードの変化を防止することです

Redisのセンチネルモード

  1. クライアントとセンチネルノード集合、すなわち、サブスクリプションセンチネルリンパ節関連チャンネル、マスターノード上の関連情報にリアルタイムでアクセスして連絡を取り合います

Redisのセンチネルモード

上記モデルから分かるように、クライアントの設計構成のセットとして考慮される必要があるので、クライアントは、センチネルノードとノード情報関連(、マスタノードとマスター取得スイッチングノード情報を初期化中にRedisのセンチネルとセンチネル通信を必要とします変更)ディスカバリサービス。

物事は説明する必要が

  • そして、異なる物理マシン上のすべてのノードRedisのセンチネルの展開と同じネットワーク
  • Redisのセンチネルセンチネルノード数が3未満であり、好ましくは奇数でなければなりません。(ノードの数よりも、高可用性を確保することができます)
  • 通常のデータと区別できないRedisのセンチネルノードとデータ・ノード。各センチネル節は、本質的にRedisのインスタンスであり、唯一の違いはRedisのデータノードであり、その主な役割は、データノードRedisのを監視することです
  • クライアント接続の初期化センチネルノードは、ノードがもはや特定のRedisで、設定されていないが、センターのみセンチネルエージェントを配置されていません。

エンジニアXiaohui全体の皿:マイクロチャンネル公衆数により歓迎の注意。公共のキーワードへの返事は、無料の学習教材を受け取りません。

ヘック、私の場合はカードが失われました。 「自然食品エンジニアXiaohui、」私はまだ見つけることができるため、マイクロ文字の検索

おすすめ

転載: www.cnblogs.com/mseddl/p/11495405.html