ホームページ >バックエンド開発 >PHPチュートリアル >Redis クラスターの 3 つのモードとは何ですか?

Redis クラスターの 3 つのモードとは何ですか?

巴扎黑
巴扎黑オリジナル
2017-09-16 10:01:2717088ブラウズ

Redis クラスターの 3 つのモードとは何ですか?

Redisクラスターの3つのモード

1.マスタースレーブモード

永続化機能により、Redisはたとえサーバーは再起動されます) データ。永続化によりメモリ内のデータがハードディスクに保存され、再起動によりデータがハードディスクからロードされるためです。

ただし、データはサーバー上に保存されるため、サーバーにハードディスク障害などの問題が発生した場合、データの損失も発生します。単一障害点を回避するために、データベースの複数のコピーを複製し、それらを異なるサーバーに展開するのが一般的です。これにより、1 つのサーバーに障害が発生した場合でも、他のサーバーが引き続きサービスを提供できます。この目的のために、Redis は、あるデータベースのデータが更新されたときに、更新されたデータを他のデータベースに自動的に同期できるレプリケーション機能を提供します。

レプリケーションの概念では、データベースは 2 つのカテゴリに分類され、1 つはマスター データベース (マスター) で、もう 1 つはスレーブ データベース (スレーブ) です。マスター データベースは読み取りおよび書き込み操作を実行でき、書き込み操作によってデータが変更されると、データはスレーブ データベースに自動的に同期されます。スレーブ データベースは通常読み取り専用で、マスター データベースから同期されたデータを受け入れます。マスター データベースには複数のスレーブ データベースを含めることができますが、スレーブ データベースにはマスター データベースを 1 つだけ含めることができます。

マスター/スレーブデータベースの構成

マスターデータベースを構成する必要はありません。redis conf ファイルからスレーブデータベース情報をロードするか、redis-server --port 6380 --slaveof 127.0 を使用できます。起動時は.0.1 6379

スレーブ データベースは通常読み取り専用で、書き込み可能に変更できますが、書き込まれたデータはマスターによって簡単に同期できるため、引き続き読み取り専用にすることができます。

実行時にslaveof ip portコマンドを使用して、元のマスターを停止し、設定したばかりのマスターに切り替えることもできます。slaveofは自分自身をマスターに変えることはありません

データベースから開始する場合、データベースは同期コマンドを送信します。同期を受信すると、マスター データベースはバックグラウンドでスナップショット RDB の保存を開始します。スナップショットが完了すると、マスター データベースはキャッシュされます。スナップショットとキャッシュされたコマンドを一緒にスレーブに送信します。コピーの初期化が終了します。

以降、マスターがコマンドを受信するたびに、同期してスレーブに送信されます。

切断と再接続が発生した場合、2.8 以降のバージョンでは、切断中のコマンドが再接続データベースに渡されます。増分レプリケーション

マスター/スレーブ レプリケーションは、クライアントが書き込み実行をマスターに送信すると、マスターは実行後すぐに結果をクライアントに返し、コマンドを非同期でスレーブに送信するため、パフォーマンスには影響しません。書き込み前に同期するスレーブ マスターの最小数を設定することもできます。

ハードディスクレスのレプリケーション: ハードディスクの効率が低い場合、レプリケーションのパフォーマンスに影響します。2.8 以降では、ハードディスクレスのレプリケーション、repl-diskless-sync を設定できます

2 番目、Sentinel

メイン データベースでサービスの異常な中断が発生した場合、開発者はスレーブ データベースを手動で選択してマスター データベースにアップグレードし、システムがサービスを提供し続けることができます。ただし、プロセス全体は比較的煩雑で手動介入が必要なため、自動化が困難です。 この目的を達成するために、Redis 2.8 は、自動化されたシステム監視および障害回復機能を実装するためのセンチネル ツールを提供します。

センチネルの役割は、redis マスター データベースとスレーブ データベースが正常に実行されているかどうかを監視することです。マスターに障害が発生した場合、スレーブ データベースからマスター データベースに自動的に切り替わります。

例:

1 マスター 2 スレーブ 1 セントリー

redis-server --port 6379

redis-server --port 6380 --slaveof 192.168.0.167 6379

redis-server --port 6381 --slaveof 192.168.0.167 6379

Sentinel 設定ファイル Sentinel.conf

Sentinel Monitor mymaster 192.168.0.167 6379 1

ここでの 1 は 1 つの Sentinel を表します

注:

inel でシステムを監視するには、必要なのはマスター データベースを監視するだけで、Sentinel はマスター データベースを複製するすべてのスレーブ データベースを自動的に検出します。このようにして、Sentinel はマスター 6379 とスレーブ 6380 および 6381 を監視できます。6379 が停止すると、Sentinel は 2 つのうちの 1 つを選択します。優先度に応じて選択します。同じ場合は、ID が小さい方を選択します。再度 6379 が表示されると、それがスレーブとして存在します。

3. クラスター (クラスター有効)

クラスターを使用するには、各データベース ノードのクラスター有効構成をオンにするだけです。適切に機能するには、各クラスターに少なくとも 3 つのマスター データベースが必要です。 Sentinel を使用する場合でも、各 Redis インスタンスは完全に保存され、各 Redis に保存されているコンテンツは完全なデータであるため、メモリが無駄に消費され、バレル効果が発生します。メモリの使用を最大限に活用するために、分散ストレージであるクラスターを使用できます。つまり、各 Redis には異なるコンテンツが保存されます。

クラスターには少なくとも 3 つのマスターと 3 つのスレーブが必要で、各インスタンスは異なる構成ファイルを使用します。マスターとスレーブを構成する必要はなく、クラスターが自動的に選択します。

各インスタンスの構成ファイルを変更します:

cluster-enabled yes -- クラスターを有効化します

cluster-config-file names-6382.conf -- クラスター構成ファイル名、

各インスタンスの構成は次のようにする必要がありますRedis はファイル名に基づいて新しいファイルを自動的に作成します

クラスターの操作

redisインストールディレクトリのsrc実行。/redis-trib.rb create --replicas 1

127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382

127。 0. 0 .1: 6383 127.0.0.1:6384 127.0.0.1:6385

ここでのマスター選挙は動物園の飼育員の選挙と似ています

関連知識の詳細については、PHP 中国語 Web サイトをご覧ください。 !

以上がRedis クラスターの 3 つのモードとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。