Redisのセンチネルは、(センチネル除き、Redisのクラスタが別のプログラムである)公式によって提供される高可用性ソリューションである、それは自動的にRedisのマスター/スレーブの動作状態を監視することができ、見つかったマスターがアクセスすることができない場合、それは1つにフェイルオーバーを開始しますスレーブ局はマスターに切り替えへのアクセス権を持っています。
(1).Sentinel(センチネル)効果
マスター状態を検出し、異常マスターは、マスター・スレーブスイッチは、ここでマスターとスレーブになるようにすれば、以前のマスタースレーブとして。マスタ・スレーブスイッチ、マスターredis.conf、スレーブredis.confとsentinel.confコンテンツが変更された場合に、監視対象がsentinel.confであろうと、すなわち、マスターredis.confは、複数の行のslaveof構成となり交流。
(2).Sentinel(センチネル)作品
RedisのSentinelは、(例えば、JavaのJedis)が接続Redisのサーバー時間でセンチネルにIPマスターを聞いてきますし、自動的に受信マスタースイッチのパブ/サブイベントの後に新しいマスターに再接続するクライアントをサポートしています。
(3)実験環境
youxi1 192.168.1.6マスター、Sentinel1
youxi2 192.168.1.7スレーブ、Sentinel2
youxi3 192.168.1.8スレーブ、Sentinel3
(4)実験
1)すべてのサーバーの最初には、Redisのをインストールして設定し、カイからブートしています
詳細を表示:YUM CentOS7下のRedisをインストール
2)マスターサーバの設定ファイルを変更youxi1
/etc/redis.conf [ルート@のyouxi1〜]#のvimの バインド0.0.0.0 //ライン69、リスンアドレスを設定します。すべてのアドレスを聞いていない0.0.0.0手段 プロテクトモードなし//ライン88は、外部ネットワークへのアクセスを許可する、セーフモードをオフにします
ファイアウォールがオンになっている場合は、ポート番号を追加することを忘れないでください
[ルート@ youxi1〜]#ファイアウォール-CMD --permanent --zone =公共--add-ポート= 6379 / tcpの&&ファイアウォール-CMD --reload 成功 成功
3)変更スレーブ1 youxi2サーバーの設定ファイル
/etc/redis.conf [ルート@のyouxi2〜]#のvimの バインド0.0.0.0 //ライン69、リスンアドレスを設定します。すべてのアドレスを聴く0.0.0.0表し プロテクトモード、外部ネットワークへのアクセス許可なし//行ない88、セキュリティモードオフ、 マスターのIPアドレスとポート番号を設定192.168.1.6 6379 //ライン286 replicaofを、
ファイアウォールがオンになっている場合は、ポート番号を追加することを忘れないでください
[ルート@ youxi1〜]#ファイアウォール-CMD --permanent --zone =公共--add-ポート= 6379 / tcpの&&ファイアウォール-CMD --reload 成功 成功
4)変更Slave2をyouxi3サーバーの設定ファイル
/etc/redis.conf [ルート@のyouxi3〜]#のvimの バインド0.0.0.0 //ライン69、リスンアドレスを設定します。すべてのアドレスを聴く0.0.0.0表し プロテクトモード、外部ネットワークへのアクセス許可なし//行ない88、セキュリティモードオフ、 マスターのIPアドレスとポート番号を設定192.168.1.6 6379 //ライン286 replicaofを、
ファイアウォールがオンになっている場合は、ポート番号を追加することを忘れないでください
[ルート@ youxi3〜]#ファイアウォール-CMD --permanent --zone =公共--add-ポート= 6379 / tcpの&&ファイアウォール-CMD --reload 成功 成功
5)センチネル(センチネル)の設定
/etc/redis-sentinel.conf [ルート@ youxi1〜]#のvimの 外部ネットワークアクセスできるように、インストールモードを解除し、MODE-NO //ライン17を保護 2126379は、//ポート番号を確認し、ポートラインを デーモン化はい//ライン26の代わりに、はい、バックグラウンドデーモンで実行されている //ライン84センチネルモニタmymasterの192.168.1.6 6379 2、mymasterはクラスタ名で、192.168.1.6は、プライマリサーバのIPアドレスであり、2は、投票の値であり、2人の歩哨は接続できませんマスター、そしてマスターぶら下げ、スプリットブレインを使用しないようにするために、奇妙なことに 10000 //ダウンライン・アフターセンチネル113ミリ秒mymaster 同期mymasterセンチネルを。1 //パラレル-121ライン センチネルフェイルオーバー・タイムアウトmymaster 60000 //行146ミリ秒単位で、フェイルオーバーのタイムアウト
説明:
ダウン後のミリ秒:センチネルは、マスターは、「時間軸」PONG内に応答するか、エラーメッセージが返されない場合は、センチネルは主観的(一方的に)意志、マスターが生きているを確認するために、マスターハートビートPINGに送信されますマスタは、(またSDOWNとも称される、主観ダウン)使用不可能と考えられてきました。そして、このダウンした後、ミリ秒単位はミリ秒単位で「一定時間」を指定するために使用されます。
並列同期:主な切り替えが、このオプションは、同時新しいマスタースレーブ同期の最大数、数が少ない、長いフェイルオーバーを完了するために必要な多くの時間を指定しますが、図の場合ときフェイルオーバーが発生します大規模な、それはレプリケーションが利用できない複数のスレーブためということを意味します。この値は、1つのスレーブ状態コマンド要求を処理できないことを確実にするために1に設定することができます。
すべてのサーバーがそのように設定し、その後、Redisのを再起動のRedis-センチネルを開始し、ポストを設定されています。
[ルート@のyouxi1〜]#systemctl再起動のRedis && systemctlのRedis-センチネル開始 のRedis-センチネル有効[ルート@ youxi1〜]#のsystemctlを /etc/systemd/system/multi-user.target.wants/redis-sentinelから作成されたシンボリックリンクを。 /usr/lib/systemd/system/redis-sentinel.serviceするサービス。 [ルート@のyouxi2〜]#systemctl再起動のRedis && systemctlのRedis-センチネル開始 のRedis-センチネル有効[ルート@ youxi2〜]#のsystemctlを /etc/systemd/system/multi-user.target.wants/redis-sentinelから作成されたシンボリックリンクを。 /usr/lib/systemd/system/redis-sentinel.serviceするサービス。 [ルート@のyouxi3〜]#systemctl再起動のRedis && systemctlのRedis-センチネル開始 #のsystemctlはRedisの-センチネルを有効[〜ルートの@ youxi3を] /usr/lib/systemd/system/redis-sentinel.serviceする/etc/systemd/system/multi-user.target.wants/redis-sentinel.serviceからシンボリックリンク作成。
ファイアウォールがオンになっている場合は、ポート番号を追加することを忘れないでください
ファイアウォール-CMD --permanent --zone =公共--add-ポート= 26379 / tcpの&&ファイアウォール-CMD --reload
状態6)マスターサーバーからの眺め
プライマリサーバの状態youxi1
[ルート@ youxi1〜]#のRedis-CLI 127.0.0.1:6379>レプリケーション情報 #レプリケーション 役割:マスターの役割//このサーバ connected_slaves:2 //サーバからの接続数 slave0:IP = 192.168.1.7、ポート= 6379 、状態はオンライン、= 546オフセット= = 0 //遅れ、 サーバーからのステータス スレーブ1:オフセット、IP = 192.168.1.8、= 6379ポート、状態=オンライン= 546、0 = LAG master_replid:d3839b055eb0705dda0b2782d587e0d0f4a3177cの master_replid2:0000000000000000000000000000000000000000 master_repl_offset:546 second_repl_offset :-1 repl_backlog_active :. 1 repl_backlog_size:1048576 repl_backlog_first_byte_offset :. 1 repl_backlog_histlen:546
サーバーからYouxi2状態
[youxi2ルート@〜]#のRedis-CLI 127.0.0.1:6379>レプリケーション情報 #レプリケーション 役割:存在スレーブ//サーバの役割 MASTER_HOST:IPアドレス192.168.1.6 //マスターサーバー MASTER_PORT://マスターサーバーのポート6379数 master_link_status:接続状態からアップ//マスタ :. 1 master_last_io_seconds_ago 0:master_sync_in_progress slave_repl_offset:658 slave_priority:100 slave_read_only :. 1 connected_slaves:0 master_replid:d3839b055eb0705dda0b2782d587e0d0f4a3177cの master_replid2:0000000000000000000000000000000000000000 master_repl_offset:658 second_repl_offset:-1 repl_backlog_active :. 1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:71であることを repl_backlog_histlen:588を
サーバーからYouxi3状態
[youxi3ルート@〜]#のRedis-CLI 127.0.0.1:6379>レプリケーション情報 #レプリケーション 役割:このスレーブ//サーバーの役割 MASTER_HOST:IPアドレス192.168.1.6 //マスターサーバー MASTER_PORT:6379 //マスターサーバーポート数 master_link_status:接続状態から//マスターアップ :. 7 master_last_io_seconds_ago 0:master_sync_in_progress slave_repl_offset:686 slave_priority:100 slave_read_only :. 1 connected_slaves:0 master_replid:d3839b055eb0705dda0b2782d587e0d0f4a3177cの master_replid2:0000000000000000000000000000000000000000 master_repl_offset:686 second_repl_offset:-1 repl_backlog_active :. 1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:281であることを repl_backlog_histlen:406
7)アナログマスタは、試験下にあります
Redisのyouxi1をオフにします
[ルート@のyouxi1〜]#systemctlの停止Redisの
youxi2のステータスを表示するには
#のRedisの-CLI [youxi2〜@ルート] 127.0.0.1:6379>情報の複製 #レプリケーション 役割:奴隷 MASTER_HOST:192.168.1.8 //可以看到マスター服务器变成来192.168.1.8 MASTER_PORT:6379 master_link_status:アップ master_last_io_seconds_ago:0 master_sync_in_progress:0 slave_repl_offset:86480 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:24fe501f3d7f77e790bc82d9c80e6c920522137e master_replid2:b74fb4029bf6e6a4acb09748dfe63317192cc322 master_repl_offset:86480 second_repl_offset:49216 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:6589 repl_backlog_histlen:79892
Redisのオープンyouxi1で、この時点では、ステータスを表示します
[ルート@ youxi1〜]#は、Redisの開始systemctl [ルート@ youxi1〜]#のRedisの-CLI 127.0.0.1:6379>情報の複製 #レプリケーション 役割を:スレーブが//角色变成来スレーブ MASTER_HOST:192.168.1.8 MASTER_PORT:6379 master_link_status:アップ master_last_io_seconds_ago:0 master_sync_in_progress:0 slave_repl_offset:110509 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:24fe501f3d7f77e790bc82d9c80e6c920522137e master_replid2:0000000000000000000000000000000000000000 master_repl_offset:110509 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:106486 repl_backlog_histlen:4024
8)ステータスセンチネルをチェック
ビュー26379 Sentinelは、リモートポート番号を必要とし、すなわちセンチネルではなく、Redisのは、例えば、今、今、サーバからメインサーバへのアクセスに使用youxi1 youxi3にアクセス
#のRedisの-CLI -h 192.168.1.8 -p 26379 [youxi1〜@ルート] 192.168.1.8:26379>情報センチネル #センチネル sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:名= mymaster、ステータス= OK、アドレス= 192.168.1.8:6379、奴隷= 2、歩哨= 3
注意:接続されているセンチネルを使用した後。
。(5)拡張:Redisの主観と客観オフラインオフライン
主観オフライン:主観的にダウンは、オフラインセンチネルは、サーバーの現在のインスタンスがRedisのを作っ決定参照、SDOWNを言及しました。
目的オフライン:客観ダウンは、ODOWNを呼び、それがセンチネルSDOWNがマスターサーバー上の判断を行う複数のインスタンスを参照し、SENTINELによって互いに相互作用することで、マスター・ダウン・バイ・addrのコマンド後に、オフライン派生マスターサーバー分析とオープンフェイルオーバー。