開発作業において、分散キャッシュ高可用性ソリューション(Redis キャッシュ高可用性ソリューションの構築)の場合、Redis マスタースレーブアーキテクチャの高可用性はどのように確保されますか? Redis Sentinel は、Redis に高可用性ソリューションを提供する分散システムであることがわかっています。では、Redis サービス展開のセンチネル モードの主な原則と、それが解決する問題は何でしょうか。そこで私は関連する問題を整理するために時間を費やしました。この記事を読んだ後、あなたもその技術を他の人と共有できるようになると信じています。 O(∩_∩)O ハハハ〜 0. 問題の準備センチネル モードについて説明する前に、まずアプリケーションの問題、つまり Redis サービス ホストがクラッシュするケースを見てみましょう。 実際の使用では、マスターがクラッシュする可能性があります (書き込みサービスがなくなり、読み取りサービスのみになります)。サービスの可用性を確保したい場合は、他のスレーブ ノードの 1 つをマスター ノードとして選択し、サービス機能を継続的に提供する必要があります。 主なアクションは次のように抽象化されます。
いくつかの問題があります:
実際、センチネルメカニズムを導入することで、上記の問題を非常にうまく解決できます。 Sentinel - Redis クラスター 1. Sentinel とは何ですか?Sentinel は Redis の高可用性ソリューションです。1 つ以上の Sentinel インスタンスで構成される Sentinel システムは、任意の数のマスター サービスとこれらのマスター サーバーの下にあるすべてのスレーブ サービスを監視し、監視対象のマスター サービスがオフラインになった (サービス提供が不可能になった) ときに、オフライン マスター サーバーの下にあるスレーブ サーバーを新しいマスター サーバーに自動的にアップグレードできます。 Sentinel の役割を要約すると次のようになります。
マスターとスレーブが正常に動作しているかを常時チェック(マスター生存検出、マスターとスレーブの動作状態検出)
監視対象サーバーで問題が発生すると、他のセンチネルとクライアントに通知が送信されます。
障害が発生したマスターをスレーブから切断し、スレーブを新しいマスターとして選択し、他のスレーブを新しいマスターに接続して、クライアントに新しいサーバー アドレスを通知します。 注: Sentinel も Redis サーバーですが、データ サービスは提供しません。通常、設定されるセンチネルの数は奇数です。 2. Sentinelの仕組み以下では、主に、フェイルオーバー プロセス中に Sentinel が実行する 3 つの段階について説明します。 2.1.クラスター監視ステップ1: Sentinel 1がRedisクラスターに接続する
クラスター監視 ステップ2: Sentinel 2が参加した後
クラスター監視 ステップ3: Sentinel 3が参加した後
クラスター監視 簡単な要約:
2.2.メッセージ通知1) センチネルノードは、マスター/スレーブノードによって確立されたcmd接続を通じて動作ステータスを取得します。 2) フィードバックを受け取った後、SentinelはSentinel内で情報を伝達します。 メッセージ通知 2.3.フェイルオーバー厳密に言えば、フェイルオーバーは障害判定とフェイルオーバーの 2 つのステップに分けられます。 Q1: ノードに障害があるかどうかをどのように判断しますか?
マスターノードが失敗するまで、センチネルは sdown を報告し、同時に、このセンチネルはマスターノードがハングアップしたことを知らせるメッセージを他のセンチネルにも送信します。送信されるコマンドは sentinel is-master-down-by-address-port です。
残りのセンチネルも、受け取った情報を送信し、コマンド sentinel is-master-down-by-address-port を自身のイントラネットに送信して、sentinel is-master-down-by-address-port を送信した最初のセンチネルが、その通りで、この男は確かに死んでいると言っていることを確認します。
1 つのセンチネルがマスター ノードがダウンしていると判断した場合、そのノードは sdown としてマークされ、センチネルの半数がダウンしていると判断した場合、そのノードは odown としてマークされます。 1 つのセンチネルがマスター ノードがダウンしていると判断した場合、それは主観的ダウン (sdown) と呼ばれ、半数以上のセンチネルがマスター ノードがダウンしていると判断した場合、それは客観的ダウン (odown) と呼ばれます。 Q2: フェイルオーバーを実行するにはどうすればいいですか? 1) まず、センチネルはフェイルオーバーを処理するセンチネルリーダーを選出します 今回使用される選出方法は、以前にも導入されたRaftプロトコルです。興味のある学生は、コンセンサスアルゴリズムRaftの簡単な入門をご覧ください。 2) 次に、センチネルリーダーはスレーブノードの1つをマスターノードとして選択します。 主なルール:
上記の優先事項が一貫している場合は、他の優先事項も考慮されます。
スレーブ 1 のオフセットが 50 で、スレーブ 2 のオフセットが 55 の場合、センチネルはスレーブ 2 を新しいマスター ノードとして選択します。
これは職場の年功序列制度に似ており、つまり、ルニッドの作成時間によって判断すると、作成時間が早い人が最初に昇進します。 3) データ転送
3. 結論Redis のマスタースレーブレプリケーション機能には「マスタースレーブレプリケーションは高可用性の礎」という格言があり、高可用性を実現するにはセンチネルとクラスターが不可欠です。 3.1 センチネルの役割
マスターとスレーブが正常に動作しているかを常時チェック(マスター生存検出、マスターとスレーブの動作状態検出)
監視対象サーバーで問題が発生すると、他のセンチネルとクライアントに通知が送信されます。
障害が発生したマスターをスレーブから切断し、スレーブを新しいマスターとして選択し、他のスレーブを新しいマスターに接続して、クライアントに新しいサーバー アドレスを通知します。 3.2 センチネルの仕組み
マスターが Sentinel の PING コマンドに対して再度有効な応答を返すと、マスターの主観的なオフライン ステータスは削除されます。
マスターがオフラインであることに同意するセンチネルが十分にいない場合、マスターの客観的なオフライン ステータスは削除されます。
|
<<: YonSuite:中国のSaaS業界で「リーダー」の役割を果たすことができるか?
>>: Google DevOps レポート: ハイブリッド クラウドまたはマルチクラウドを使用するとパフォーマンス目標を上回ることができます
私はインターネット業界に5年間携わり、読書サイトとダウンロードサイトを構築してきました。その後、私の...
最近、私はいとこの会社のウェブサイトの最適化を手伝っています。この会社は主に工作機械の部品を販売して...
米国の市場調査会社ComScoreは本日、「vCE Charter」に関するさらなる調査データを公開...
ウェブマスターにとって最も厄介なのは、ウェブサイトが降格されることです。ウェブサイトのランキングが百...
2015年12月、滴滴出行の自動運転部門のCEOである張波氏が正式に父親になった。これは彼の人生にお...
ウェブサイトの外部リンクの最適化がますます困難になるにつれて、低コストで高品質の外部リンクを取得する...
今年の「双十一」では、中国版「ブラックフライデー」とも言える、TmallやJD.comなどの電子商取...
新浪科技は7月12日早朝、Sogouの新製品Sogou百科事典(baike.sogou.com)が正...
1-1: スタート前のポイントSEO は、検索エンジンの出現とともに生まれた統計分析として捉えるべき...
[[357636]]現在、単一プロジェクト構造は基本的に残っておらず、分散クラスターやマイクロサービ...
ほとんどの IT プロフェッショナルはバックアップとリカバリ操作の必要性を理解していますが、クラウド...
編集者注: Sutu.com は 2009 年 4 月に設立され、今日で 5 周年を迎えます。他の多...
[[425007]]調査機関が最近発表した調査レポートによると、世界のパブリック クラウド市場は現在...
独創性は、ウェブマスターの3分の2の心から消すことのできない影です。今日の大規模ウェブサイトのウェブ...
クラウド サービスは、インターネット ベースの関連サービスを追加、使用、および対話するためのモデルで...