超包括的な分散キャッシュ高可用性ソリューション: Sentinel メカニズム

超包括的な分散キャッシュ高可用性ソリューション: Sentinel メカニズム

開発作業において、分散キャッシュ高可用性ソリューション(Redis キャッシュ高可用性ソリューションの構築)の場合、Redis マスタースレーブアーキテクチャの高可用性はどのように確保されますか?

これはセンチネルメカニズムを適用することで実現されることがわかっています。では、Redis サービス デプロイメントのセンチネル モードの主な目的は何でしょうか。また、どのような問題を解決するのでしょうか。それで私は週末を使ってそれを整理しました。この記事を読んだ後、あなたもその技術を他の人と共有できるようになると信じています。 O(∩_∩)O ハハハ〜

問題の準備

センチネルモードについて説明する前に、アプリケーションの問題を見てみましょう。Redisサービスホストがダウンしています。

実際の使用では、マスターがクラッシュする可能性があります (書き込みサービスがなくなり、読み取りサービスのみになります)。サービスの可用性を確保したい場合は、他のスレーブ ノードの 1 つをマスター ノードとして選択し、サービス機能を継続的に提供する必要があります。

主なアクションは次のように抽象化されます。

  • ダウンしたマスターをオフラインにする

  • 奴隷を主人として見つける

  • すべてのスレーブに新しいマスターに接続するように通知します

  • 完全または部分的なデータ同期

いくつかの問題があります:

  • マスターがダウンしたことを誰が確認するのでしょうか? (ネットワークがしばらく不安定な場合は、シャットダウンされますか?)

  • 奴隷に代わる主人をどうやって見つけるか、そして誰が見つけるか?どうやって見つけるのですか?根拠は何ですか?

  • 構成を変更した後に元のマスターを復元する場合はどうすればよいですか?

実際、センチネルメカニズムを導入することで、上記の問題を非常にうまく解決できます。

Sentinel - Redis クラスター

Sentinelとは何ですか?

Sentinel は Redis の高可用性ソリューションです。1 つ以上の Sentinel インスタンスで構成される Sentinel システムは、任意の数のマスター サービスとこれらのマスター サーバーの下にあるすべてのスレーブ サービスを監視し、監視対象のマスター サービスがオフラインになった (サービス提供が不可能になった) ときに、オフライン マスター サーバーの下にあるスレーブ サーバーを新しいマスター サーバーに自動的にアップグレードできます。

Sentinel の役割を要約すると次のようになります。

  • クラスター監視

マスターとスレーブが正常に動作しているかを常時チェック(マスター生存検出、マスターとスレーブの動作状態検出)

  • メッセージ通知

監視対象サーバーで問題が発生すると、他のセンチネルとクライアントに通知が送信されます。

  • 自動フェイルオーバー

障害が発生したマスターをスレーブから切断し、スレーブを新しいマスターとして選択し、他のスレーブを新しいマスターに接続して、クライアントに新しいサーバー アドレスを通知します。

注: Sentinel も Redis サーバーですが、データ サービスは提供しません。通常、設定されるセンチネルの数は奇数です。

センチネルの仕組み

以下では、主に、フェイルオーバー プロセス中に Sentinel が実行する 3 つの段階について説明します。

1. クラスター監視

ステップ1: Sentinel 1がRedisクラスターに接続する

  • info コマンドをマスターに送信し、cmd 接続を確立します。

  • センチネル側はセンチネルステータス (SentinelStatus) を保存し、すべてのセンチネルステータス、マスターノード、スレーブノードの情報を保存します。マスター側はRedisインスタンス情報(SentinelRedisInstance)を記録します。

  • センチネルはマスターから取得した各スレーブの情報に基づいて各スレーブに接続し、同じ info コマンドを送信します。

クラスター監視

ステップ2: Sentinel 2が参加した後

  • info コマンドもマスター ノードに送信され、cmd 接続が確立されます。

  • マスターには他のセンチネルノードに関する情報が含まれており、センチネル情報は Sentinel 2 に保存されていることがわかります (Sentinel 1 との違いは、Sentinel 1 と Sentinel 2 の 2 つのセンチネルノードの情報を保存することです)。

  • 各センチネルの情報の一貫性を確保するために、センチネル間にパブリッシュ/サブスクライブ メカニズムが確立されます。センチネル間の長期的な情報の対称性を維持するために、センチネルは相互に ping コマンドも送信します。

クラスター監視

ステップ3: Sentinel 3が参加した後

  • Sentinel 1 と 2 でも同じアクションが実行されます。info コマンドがマスター ノードに送信され、cmd 接続が確立されます。

  • Sentinel 1とSentinel 2間の情報が同期されていることを確認するために、パブリッシュサブスクライブキューが確立されます(pingコマンドを相互に送信できます)

クラスター監視

要約すると:

  • センチネルはマスター、スレーブ、および他のセンチネルからステータスを取得します。

  • センチネルは「対応するチャネル」を形成し、情報を公開、サブスクライブ、受信、同期します。

2. メッセージ通知

1) センチネルノードは、マスター/スレーブノードによって確立されたcmd接続を通じて動作ステータスを取得します。

2) フィードバックを受け取った後、SentinelはSentinel内で情報を伝達します。

メッセージ通知

3. フェイルオーバー

厳密に言えば、フェイルオーバーは障害判定フェイルオーバーの 2 つのステップに分けられます。

Q1: ノードに障害があるかどうかをどのように判断しますか?

  • センチネルは常にマスターノードにpublish sentinel: helloを送信します。

マスターノードが失敗するまで、センチネルは sdown を報告し、同時に、このセンチネルはマスターノードがハングアップしたことを知らせるメッセージを他のセンチネルにも送信します。送信されるコマンドは sentinel is-master-down-by-address-port です。

  • 残りのセンチネルがコマンドを受信した後、マスターノードはクラッシュしましたか?ハングしているかどうか確認させてください。送信したメッセージもhelloです。

残りのセンチネルも、受け取った情報を送信し、コマンド sentinel is-master-down-by-address-port を自身のイントラネットに送信して、sentinel is-master-down-by-address-port を送信した最初のセンチネルが、その通りで、この男は確かに死んでいると言っていることを確認します。

  • マスターノードがダウンしていると全員が判断すると、そのステータスは odown に変更されます。

1 つのセンチネルがマスター ノードがダウンしていると判断した場合、そのノードは sdown としてマークされ、センチネルの半数がダウンしていると判断した場合、そのノードは odown としてマークされます。

1 つのセンチネルがマスター ノードがダウンしていると判断した場合、それは主観的ダウン (sdown) と呼ばれ、半数以上のセンチネルがマスター ノードがダウンしていると判断した場合、それは客観的ダウン (odown) と呼ばれます。

Q2: フェイルオーバーを実行するにはどうすればいいですか?

1) まず、センチネルはフェイルオーバーを処理するセンチネルリーダーを選出します

今回使用される選出方法は、以前にも導入されたRaftプロトコルです。興味のある学生は、コンセンサスアルゴリズムRaftの簡単な入門をご覧ください。

2) 次に、センチネルリーダーはスレーブノードの1つをマスターノードとして選択します。

主なルール:

  • オンラインノードを選択し、オフラインノードを渡します。

  • 応答速度が速いノードを選択し、応答速度が遅いノードは通過させます。

  • 元のマスターから切断時間が最も短いものを選択し、切断時間が長いものを渡します。

上記の優先事項が一貫している場合は、他の優先事項も考慮されます。

  • 大きなオフセット

スレーブ 1 のオフセットが 50 で、スレーブ 2 のオフセットが 55 の場合、センチネルはスレーブ 2 を新しいマスター ノードとして選択します。

  • ルニッドは大きすぎる

これは職場の年功序列制度に似ており、つまり、ルニッドの作成時間によって判断すると、作成時間が早い人が最初に昇進します。

3) データ転送

  • 新しい主人が就任: センチネルは誰もいない奴隷を新しい主人に送り込む

  • 他のスレーブはこれを認識しています: 新しいマスターIPポートのスレーブを他のスレーブに送信します

要約する

Redis のマスタースレーブレプリケーション機能には「マスタースレーブレプリケーションは高可用性の礎」という格言があり、高可用性を実現するにはセンチネルとクラスターが不可欠です。

1. センチネルの役割

  • クラスター監視

マスターとスレーブが正常に動作しているかを常時チェック(マスター生存検出、マスターとスレーブの動作状態検出)

  • メッセージ通知

監視対象サーバーで問題が発生すると、他のセンチネルとクライアントに通知が送信されます。

  • 自動フェイルオーバー

障害が発生したマスターをスレーブから切断し、スレーブを新しいマスターとして選択し、他のスレーブを新しいマスターに接続して、クライアントに新しいサーバー アドレスを通知します。

2. Sentinelの仕組み

  • 各 Sentinel は、マスター、スレーブ、および認識している他の Sentinel インスタンスに 1 秒ごとに PING コマンドを送信します。

  • インスタンスの PING コマンドに対する最後の有効な応答からの時間が down-after-milliseconds オプションで指定された値を超えると、インスタンスは Sentinel によって主観的にオフラインとしてマークされます。

マスターが Sentinel の PING コマンドに対して再度有効な応答を返すと、マスターの主観的なオフライン ステータスは削除されます。

  • マスターが主観的にオフラインとしてマークされている場合、このマスターを監視しているすべてのセンチネルは、マスターが実際に主観的にオフライン状態になったことを 1 秒に 1 回確認する必要があります。

  • 十分な数のセンチネル (>= 構成ファイルで指定された値) が、指定された時間範囲内でマスターが実際に主観的オフライン状態に入ったことを確認すると、マスターは客観的にオフラインとしてマークされます。

マスターがオフラインであることに同意するセンチネルが十分にいない場合、マスターの客観的なオフライン ステータスは削除されます。

  • 一般に、各 Sentinel は 10 秒ごとにすべての既知のマスターとスレーブに INFO コマンドを送信します。

  • マスターが Sentinel によってオフラインとしてマークされると、オフライン マスターのすべてのスレーブに Sentinel が INFO コマンドを送信する頻度が 10 秒に 1 回から 1 秒に 1 回に変更されます。

<<:  Tencent Cloud IDC製品ファミリーが第7回データセンターシェアリングデーでデビュー

>>:  ECIS 2020 | 2020 エッジ コンピューティング業界サミットが開催されます。会議への参加を招待します

推薦する

Ramnode-128m メモリ openvz 簡易評価

本日、Host Cat は Ramnode から 128M メモリの VPS [Ramnode-VP...

8.15 電子商取引戦争: あなたが知らない JD.com の陰謀

劉強東のスタートアップ写真8.15** はすぐに来て、すぐに消えました。電子商取引に従事する人は、い...

テンセントクラウドは金融クラウド事業戦略をアップグレードし、新しいインフラストラクチャと新しい接続に重点を置く

9月10日、テンセントグローバルデジタルエコシステムカンファレンスの金融セッションで、テンセントクラ...

クラウドサービスの選択に必読: 12 社以上の IaaS プロバイダーの長所と短所を比較

AWS、Microsoft Azure、Google、IBM は長い間パブリック クラウド IaaS...

フットウェア電子商取引の成功への道: コスト削減はどこにあるのか?

文/Tianxia.com の商人 Yang Qin高額な家賃、高騰する人件費、煩雑な販促費が、オフ...

避けられないトレンドであるハイブリッドクラウドにとって、管理上の問題が障害となるのはなぜでしょうか?

エンタープライズ クラウド コンピューティングは止められない開発トレンドとなっています。工業情報化部...

12306は30日から手数料なしでAlipay支払いをサポートします

新浪科技報は11月29日夜、アリペイの関係者が本日、12306ウェブサイトが30日からアリペイのチケ...

クラウドコンピューティングがIT部門だけの責任ではない理由

過去 1 年間、企業はオフィスでの勤務から自宅からのリモート勤務への移行を可能にするテクノロジーを導...

タオバオがPinterestのようなウェブサイト「Wantu」を立ち上げ、ソーシャルイメージショッピング戦略を開始

Admin5によると、Taobaoは4月9日、写真共有コミュニティ「Wantu」を立ち上げるため、第...

ユーザーの思考を活用してウェブサイトを構築し、独りよがりにならないようにする

最近では、ウェブサイト構築時に常に自分の考えで好きなウェブサイトを構築する人が多くいます。実は、この...

#黒5# hostsolutions: 著作権/苦情なし、大容量ハードディスク/大容量トラフィック、VPS/専用サーバー

ルーマニアのホスティング会社 HostSolutions は、今から 1 週間にわたるブラック フラ...

カー MP3 デジタル ディスク ボックス ウェブサイト SEO 事例分析

Netwin.com は Weihua Crane Equipment の Web サイトが 10 ...

SAP:クラウドファースト、中国企業の産業インターネットプロセスを促進

【51CTO.comオリジナル記事】2021年ハノーバー産業見本市が4月12日から16日までオンライ...

小説や漫画のウェブサイトを含む多くの違法ウェブサイトや出版物が捜査され、処罰された。

中央宣伝部など5つの部門が「児童出版と市場規制の管理強化に関する通知」を発布して以来、各レベルの報道...