セブンコアメカニズムのRedisの原則の基礎となります

一、S_DOWN和O_DOWN

  S_DOWNとO_DOWN 2種類がダウンした状態

(1)、S_DOWNのダウンタイムは、彼らはマスターがダウンしていると感じた場合、それはセンチネルで、主観的なものであるので、主観的な条件は<BR> SDOWNを下達した歩哨のpingマスターならば、マスター - であるよりも、簡単であり、後にダウンした後、ミリ秒単位で指定された主観視点マスター<BR>までのミリ秒数、

# 语法:sentinel down-after-milliseconds <master-name> <milliseconds>
# Number of milliseconds the master (or any attached replica or sentinel) should
# be unreachable (as in, not acceptable reply to PING, continuously, for the
# specified period) in order to consider it in S_DOWN state (Subjectively Down).
# 意思是任何从节点或者哨兵在指定的时间内,不能ping通主机就被认为成S_DOWN

(2)、O_DOWN目的ダウンタイム、センチネルの定足数の数がマスターがダウンしていると感じた場合、そうダウンタイムの目的であります

 注:指定された時間内にセンチネルは、定足数他の警備員の指定した数もマスターは、O_DOWNと見なされS_DOWNであると考えてい受け取った場合O_DOWN変換条件にS_DOWNは、非常に簡単です
# 语法:sentinel monitor <master-name> <ip> <redis-port> <quorum>
# Tells Sentinel to monitor this master, and to consider it in O_DOWN
# (Objectively Down) state only if at least <quorum> sentinels agree.
# 意思是:告诉Sentinel监视这个master,如果至少quorum 数量的哨兵同意的话就变成了
# 客观宕机

第二に、自動検出機構見張りクラスタ

1、Sentinelはお互いが、パブ/サブシステムをRedisのことで、各センチネルが行くだろう達成されたセンチネル。このチャネルこんにちはメッセージを送る、この時間はニュースに他のすべての警備員を消費し、認知することができます。他の歩哨があります。
2は、2秒ごとには、彼自身の警備員でそれぞれが対応するマスター+スレーブ監視しますセンチネル、あなたのホスト、IPを言っても、マスター構成を監視RUNIDメッセージを送ることでこんにちはチャンネル:各センチネルサーベイランスは、それぞれ対応する、独自のマスター+スレーブを監視するために行くだろうセンチネルその後、他のセンチネルの存在のこのマスター+スレーブに耳を傾け、同じ認識に行き、こんにちはチャンネル:。 
図3に示すように、各センチネルサーベイランスは互いに同期するためのセンチネル監視構成のマスターの他の構成で交換されます。

三、スレーブ構成が自動的に補正されます

  あなたは、スレーブセンチネルが保証されますマスターのための潜在的な候補になりたい場合は、自動的なスレーブとして、いくつかのスレーブ構成を修正するためにSentinelは責任を負うことになります、そのデータの既存のマスターコピー、間違ったマスターに接続されたスレーブ、フェイルオーバーなど、センチネル後の場合それは彼らが正しいマスターに接続されていることを確認します

第四に、スレーブがマスター選挙アルゴリズムになり

:マスタがO_DOWNとみなされ、それは多数セントリースタンバイスイッチを可能にし、セントリは、スイッチオーバー操作を実行する場合は、スレーブを選択するために、この時間は、第一の情報スレーブのいくつかの考慮すべき  
マスターと(1)長い切断
(2)スレーブ優先
(3)オフセットコピー
(4)RUN IDを

マスターとスレーブは接続が10倍以上ダウンした後、ミリ秒を持って、プラスのマスターの長さがダウンし、その後、スレーブがマスターの選挙のために適切であると考えられていなかった場合は切断します

(down-after-milliseconds * 10) + milliseconds_since_master_is_in_SDOWN_state

次は、スレーブをソートされます

(1)優先スレーブでソート、レプリカ優先順位を下げ、より高い優先度は、以下の英語の説明です。

# The replica priority is an integer number published by Redis in the INFO output.
# It is used by Redis Sentinel in order to select a replica to promote into a
# master if the master is no longer working correctly.
#
# A replica with a low priority number is considered better for promotion, so
# for instance if there are three replicas with priority 10, 100, 25 Sentinel will
# pick the one with priority 10, that is the lowest.
#
# However a special priority of 0 marks the replica as not able to perform the
# role of master, so a replica with priority of 0 will never be selected by
# Redis Sentinel for promotion.
#
# By default the priority is 100.
replica-priority 100

(2)スレーブの優先度はよりによって相殺した後に、より多くのデータをコピーするスレーブ、高い優先度であるオフセット同じ、外観のレプリカである場合
(3)上記2つの条件が同一である場合には、比較的小さい実行IDを選択そのスレーブ

五、定足数および過半数

1、スイッチオーバーを行うにはセンチネル、センチネルの最初のクォーラムに必要な数がO_DOWNが、その後、センチネルスイッチを行うに選出され、スカウトが公式の切り替えを実行するために、大多数のセンチネルによって認可されなければならなかったと思うたびに 
、クォーラム<大多数の場合は、2を、実施例5センチネルは、マジョリティである。3、定足数は、次の3つのセンチネル許可ハンドオーバを実行することができる、2に設定されているが、定足数> =大半は、定足数番号センチネルは、例えば5センチネルとして、許可されなければならない場合、定足数は、5それはスイッチングを実行するために5人の警備員を承認することに合意している必要があります

六、コンフィギュレーション・エポック

  Redisのマスター+スレーブモニター、モニターの対応する構成を有するセンチネル

1は、ハンドオーバーを行うセンチネルは数バージョン、バージョン番号あなたは一意である必要があります切り替えるたびに、新しいマスター(salve->マスター)の設定エポック、への切り替えから取得します。
2.最初に選出されたセンチネルスイッチに障害が発生した場合は、他のセンチネル、フェイルオーバー・タイムアウト時間を待つ、その後、新しいバージョン番号として、新しいコンフィギュレーション・エポックを取得します。この時点でスイッチを引き継ぐに進みます。

7、configuraitonスプレッド

1ハンドオーバが完了した後、Sentinelは独自のローカルマスター構成での最新世代を更新し、その後、他の歩哨に同期がパブリッシュ/サブスクライブ・メッセージング・メカニズムによって前に言われている  
2のメッセージのすべての種類があるので、バージョン番号は、非常に重要ですセントリは新しいスイッチを完了するために、発行及び監視するためにチャネルを通過した後、新たなマスター設定は新しいバージョン番号が続いている
バージョン番号のサイズに応じて設定され、そのマスターを更新するために図3に示すように、他の警備員

おすすめ

転載: blog.51cto.com/14230003/2451073