開発作業において、分散キャッシュ高可用性ソリューション(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 エッジ コンピューティング業界サミットが開催されます。会議への参加を招待します
多くのウェブマスターは、ウェブサイトの構築が難しいのは初期段階だけだということを知っています。「貧乏...
ウェブサイトを運営している人なら誰でも、Google の PR 値の役割を知っています。Baidu ...
模倣は私たちの生来の本能です。人々が模倣の機能を拡大し続けるにつれて、インターネットでの模倣も私たち...
外部リンク構築について言えば、誰もが最も関心を持っているのはフレンドリーリンクだと思います。以前、あ...
11月1日夜、「Honor of Kings」は2020年の1日当たりアクティブユーザー数が1億人に...
ウェブサイトの順位が下がる理由は、制御できない要因を除けば、キーワードの蓄積、コンテンツの収集、外部...
Sharktech は、ホスト キャットが評判を上げるたびに「米国で最も耐性のあるサーバー サプライ...
正直に言うと、私がウェブマスター業界に関わるようになったのはごく最近のことです。周りの同僚のほとんど...
[[427301]] IDCの「Worldwide Enterprise Infrastructur...
anynode、最新のホットニュース(中国で初公開):ロサンゼルスのコンピュータルームのKVM仮想V...
現在、オンライン マーケティングという言葉は非常に人気があります。従来型企業であれインターネット企業...
FTPIT は、年間支払いの大容量メモリ VPS を 4 つリリースしました。違いは SSD と機械...
[[431112]]北京時間10月26日朝刊によると、最近発表された調査報告書によると、アマゾン、ア...
老洛氏は、招商証券の権威あるライブストリーミング電子商取引レポートを読んで、ライブストリーミング電子...
月収10万元の起業の夢を実現するミニプログラム起業支援プラン新しいサイトの重みは古いサイトよりも低い...