開発作業において、分散キャッシュ高可用性ソリューション(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クラスターに接続する
クラスター監視 ステップ2: Sentinel 2が参加した後
クラスター監視 ステップ3: Sentinel 3が参加した後
クラスター監視 要約すると:
2. メッセージ通知1) センチネルノードは、マスター/スレーブノードによって確立されたcmd接続を通じて動作ステータスを取得します。 2) フィードバックを受け取った後、SentinelはSentinel内で情報を伝達します。 メッセージ通知 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) データ転送
要約するRedis のマスタースレーブレプリケーション機能には「マスタースレーブレプリケーションは高可用性の礎」という格言があり、高可用性を実現するにはセンチネルとクラスターが不可欠です。 1. センチネルの役割
マスターとスレーブが正常に動作しているかを常時チェック(マスター生存検出、マスターとスレーブの動作状態検出)
監視対象サーバーで問題が発生すると、他のセンチネルとクライアントに通知が送信されます。
障害が発生したマスターをスレーブから切断し、スレーブを新しいマスターとして選択し、他のスレーブを新しいマスターに接続して、クライアントに新しいサーバー アドレスを通知します。 2. Sentinelの仕組み
マスターが Sentinel の PING コマンドに対して再度有効な応答を返すと、マスターの主観的なオフライン ステータスは削除されます。
マスターがオフラインであることに同意するセンチネルが十分にいない場合、マスターの客観的なオフライン ステータスは削除されます。
|
<<: Tencent Cloud IDC製品ファミリーが第7回データセンターシェアリングデーでデビュー
>>: ECIS 2020 | 2020 エッジ コンピューティング業界サミットが開催されます。会議への参加を招待します
本日、Host Cat は Ramnode から 128M メモリの VPS [Ramnode-VP...
劉強東のスタートアップ写真8.15** はすぐに来て、すぐに消えました。電子商取引に従事する人は、い...
9月10日、テンセントグローバルデジタルエコシステムカンファレンスの金融セッションで、テンセントクラ...
AWS、Microsoft Azure、Google、IBM は長い間パブリック クラウド IaaS...
文/Tianxia.com の商人 Yang Qin高額な家賃、高騰する人件費、煩雑な販促費が、オフ...
エンタープライズ クラウド コンピューティングは止められない開発トレンドとなっています。工業情報化部...
sharktech (Sharktech のロサンゼルス データ センター) でホストされている R...
新浪科技報は11月29日夜、アリペイの関係者が本日、12306ウェブサイトが30日からアリペイのチケ...
過去 1 年間、企業はオフィスでの勤務から自宅からのリモート勤務への移行を可能にするテクノロジーを導...
Admin5によると、Taobaoは4月9日、写真共有コミュニティ「Wantu」を立ち上げるため、第...
最近では、ウェブサイト構築時に常に自分の考えで好きなウェブサイトを構築する人が多くいます。実は、この...
ルーマニアのホスティング会社 HostSolutions は、今から 1 週間にわたるブラック フラ...
Netwin.com は Weihua Crane Equipment の Web サイトが 10 ...
【51CTO.comオリジナル記事】2021年ハノーバー産業見本市が4月12日から16日までオンライ...
中央宣伝部など5つの部門が「児童出版と市場規制の管理強化に関する通知」を発布して以来、各レベルの報道...