センチネルが行われたものを初めて目には、以下のとおりです。複数のサーバ(インスタンス)を管理するためのRedis RedisのSentinelシステム、システムは以下の3つのタスクを実行します。
- モニタリング(監視):センチネルはプライマリサーバからは正常に機能している場合、サーバーをチェックしていきます。
- (通知)思い出させる:Redisのサーバーの問題を監視する場合、Sentinelは、APIを介して、管理者や他のアプリケーションに通知を送信することができます。
- 自動フェイルオーバー(自動フェイルオーバー):プライマリサーバが正常に動作していないとき、センチネルが自動的にフェイルオーバー操作を開始しますが、それは新しいマスターサーバーにあるサーバーからプライマリサーバのアップグレードに失敗し、プライマリサーバの障害をできるようになります他には、新しいプライマリサーバへのサーバーからコピー、クライアントがプライマリサーバに障害が発生したに接続しようとしたとき、新しいマスタクラスタではなく、障害が発生したサーバーを使用することができるように、クラスタは、新しいプライマリサーバ側のクライアントアドレスに戻ります。
Redisのセンチネルは、分散システムでは、オフラインで、これらのプロセスは、マスターサーバー上の情報を受信する噂プロトコル(ゴシップ・プロトコル)を使用する枠組みの中で複数のプロセスセンチネル(進捗状況)を実行することができ、および(合意プロトコルを議決権契約を使用します)自動フェイルオーバーを実行するかどうかを決定し、新たなマスターとしてサーバーからどれを選択します。
Redisのセンチネル(センチネル)が別の実行可能ファイルのRedis-センチネルはあるが、クラスタに障害が発生した場合、それは実際に運転の特別なモードでだけRedisのサーバーで、クラスタを監視するためのRedisセンチネルのRedisによって、自動的に失敗します移行。
次のようにRedisのセンチネルの場合、2起動モードがあります:
Redisの-センチネルプログラムのために、あなたは、Sentinelシステムを起動するには、次のコマンドを使用することができます。
Redisの-センチネル/path/to/sentinel.conf
Redisのサーバプログラムについては、次のコマンドを使用してセンチネルモードで実行されているRedisのサーバーを起動することができます。
Redisのサーバー/path/to/sentinel.conf --sentinel
本実施形態は、3つのアーキテクチャのRedisの三のセンチネルに実装されて
ノード | IP | ポート |
redis1 | 127.0.0.1 | 7000(マスタ) |
redis2 | 127.0.0.1 | 7001(スレーブ) |
redis3 | 127.0.0.1 | 7001(スレーブ) |
Redisの-sentinel1 | 127.0.0.1 | 26379 |
Redisの-sentinel2 | 127.0.0.1 | 26380 |
Redisの-sentinel3 | 127.0.0.1 | 26381 |
まず、クラスタのRedisを設定
1のマスタノードからコンフィギュレーションを開く
新規のRedis-7000.confの:マスターノード
構成:
ポート7000
デーモン化はい
pidファイル/var/run/redis-7000.pid
ログファイル"7000.log"
DIR "/ルート/ Redisの/データ"
開始:RedisのサーバーのRedis-7000.conf
新Redisの-7001.confとRedisの-7002.confファイル:ノードから
スレーブ1構成:
ポート7001
デーモン化はい
pidファイル/var/run/redis-7001.pid
ログファイル"7001.log"
DIR "/ルート/ Redisの/データ"
slaveof 127.0.0.1 7000
スレーブ2の構成:
ポート7002
デーモン化はい
pidファイル/var/run/redis-7002.pid
ログファイル"7002.log"
DIR "/ルート/ Redisの/データ"
slaveof 127.0.0.1 7000
開始:RedisのサーバーのRedis-7001.conf
RedisのサーバーのRedis-7002.conf
Redisのクラスタを確認します。redis1情報の複製をログインした後、マスターとしての役割
redis2情報の複製をログインした後、彼は役割の役割を発見した:127.0.0.1、MASTER_PORT:その主MASTER_HOST奴隷、7000
状況redis3 redis2の状況が同じで、データredis1を増加させることができ、その後、ノード2および3にクラスタを検証するために許可および他の書き込み動作、同期が成功した場合、ノード2および3のみを読み取ることができない表示すること正しさ。
第二に、メインモニタの構成は、(センチネルが特別Redisのある)センチネル節を回し
1.設定3つのセンチネルリンパ節
新しい3つのプロファイル:Redisの-センチネル-26379.conf、Redisの-センチネル-26380.conf、Redisの-センチネル-26381.conf
ポート26379
デーモン化はい
DIR「/ルート/ Redisの/データ」
ログファイル「26379.log」
センチネルモニタmymasterの127.0.0.1 7000 2
センチネルダウン後のミリ秒mymaster 30000
センチネルパラレル同期mymaster 1
180000センチネルフェイルオーバータイムアウトmymaster
ポート26380
デーモン化はい
DIR「/ルート/ Redisの/データ」
ログファイル「26380.log」
センチネルモニタmymasterの127.0.0.1 7000 2
センチネルダウン後のミリ秒mymaster 30000
センチネルパラレル同期mymaster 1
180000センチネルフェイルオーバータイムアウトmymaster
ポート26381
デーモン化はい
DIR「/ルート/ Redisの/データ」
ログファイル「26381.log」
センチネルモニタmymasterの127.0.0.1 7000 2
センチネルダウン後のミリ秒mymaster 30000
センチネルパラレル同期mymaster 1
180000センチネルフェイルオーバータイムアウトmymaster
それぞれ上記実施の形態3つの開始センチネル:Redisの-センチネルRedisの-センチネル-26379.conf
Redisの-センチネルのRedis-センチネル-26380.conf
Redisの-センチネルのRedis-センチネル-26381.conf
3人の警備員が正常に起動するかどうかを確認します。
3センチネル開始した後は、歩哨としてログインRedisのとしてログインすることができますが、歩哨は彼自身のAPIを持っていた、などの増加データセンチネルとして多くのコマンドが認識されません。その後、我々はそれぞれの歩哨に関する情報を確認し、あなたは下の図からの情報の量だけでなく、スレーブとマスターのセンチネルを見ることができる11のいずれかにログインします。
そこで問題は、我々はセンチネルノードのRedisのスレーブ構成およびその他のセンチネルリンパ節センチネルがスレーブであるときに開始し、それをどのように他のセンチネルを発見していなかったがありますか?実際には、内部のパブリッシュ・サブスクライブのメッセージを通じて達成され、我々は公式の説明を見てください:
Sentinelは自動的に検出し、サーバーから
Sentinelは、他のセンチネルの複数に接続することができ、互いの可用性センチネルにお互いをチェックして、情報を交換することができます。
各センチネルあなたは、センチネルは、自動的に他の機能をパブリッシュおよびサブスクライブするセンチネル同じプライマリサーバによって監視されて発見することができますので、この機能は、チャネルを介して行われ、互いにセンチネルのアドレスを設定するために実行する必要はありません センチネルこんにちは実装するための情報を送信します。 。
センチネルは、マスターサーバーを照会することによって、サーバーからすべての情報を取得することができますので、同様に、あなたは、手動でサーバーの下にプライマリサーバからすべての一覧を表示する必要はありません。
- Sentinelは、パブリッシュおよびサブスクライブ機能により2秒に1回の各周波数は、すべての主要なサーバーによって使用されるだろうと、サーバーからそれが監視している センチネルを:メッセージこんにちはチャンネル、センチネルIPアドレス、ポート番号に含まれる情報を送信し、 ID(RUNID)を実行します。
- 各Sentinelは、すべてのプライマリサーバに加入し、それが監視しているサーバからの センチネルを:こんにちはチャンネル、(未知の歩哨を探して)見センチネル前に見られませんでした。センチネルは、新しいセンチネルを見つけたとき、それは新しいリストに追加するセンチネル、リストには、他のすべてのセンチネルのプライマリサーバーで監視知らSentinelは、含まれています。
- センチネルは、情報は、さらに、現在のコンフィギュレーション(構成)の完全なマスターを含む送信されます。プライマリサーバがセンチネルの設定がセンチネル送信され、他のより古い含まれている場合、Sentinelは、これはすぐに新しい設定にアップグレードされます。
- 新しいセンチネルは、上記のリストでは、プライマリサーバを監視するために追加する前に、Sentinelは、リストがすでにセンチネルが含まれているかどうかをチェックし、あなたは、センチネルは、同じ実行IDまたは(IPアドレスとポート番号を含む)と同じアドレスを持つ追加したい場合、およびそして、センチネルセンチネルは、まず新しいセンチネルを追加し、すでに同じIDや同じアドレスを実行している人のリストを削除します。
我々は、すなわち、そのプロファイルにセンチネルノードRedisの情報と他のスレーブノードを書き込むセンチネルの完了後に自動的にセンチネルプロファイルの変更を開始した場合、以下のように、本実施の形態です。
ポート26380
デーモン化はい
DIR "/ルート/ Redisの/データ"
ログファイル"26380.log"
センチネルMYID 60ee52fc339d6713cf01429295333abc52af4c6b
センチネル監視mymaster 127.0.0.1 7000 2
センチネル設定-エポックmymaster 0
センチネルリーダー・エポックmymaster 0
によって生成された#CONFIG REWRITE
センチネルknown-スレーブmymasterの127.0.0.1 7001
センチネル公知のスレーブmymasterの127.0.0.1 7002
センチネル既知センチネルmymaster 127.0.0.1 26381 06f16eb142ee0895dedd769d2d5072c7d682cc50
センチネル既知センチネルmymaster 127.0.0.1 26379 b0f4c698b611b92fb406f3a04815b0536baed055
センチネル現在エポック0
これまでのところ、当社のRedisのセンチネルモデルは、完全な構築いくつかの検証を行う、Redisの7000ポートを殺すために、自動フェイルオーバールックセンチネル転送が成功します。
マスターが7001 Redisのポート番号になり、私たちは、自動転送のクラスタRedisの失敗を完了するのを、この関数は、通常ので、歩哨を使用することができます。